2006年07月01日

為替ロボット 引っ越しました

誠に勝手ながら、「為替ロボット」は引っ越しました。
新しいアドレスは、

http://kawarobo.com 為替ロボット研究所

です。「カワロボ」でドメインまでとっちゃいました。
こちらのライブドア版では情報がぐちゃぐちゃになってしまいましたが、http://kawarobo.comでは整理し直しましたので、多少は見やすくなったのではないかと思います。

今後は、売買システム同士で成績を競う、為替ロボコン開催も視野に入れて(笑)
コンテンツを充実させていきたいと思いますので、どうぞよろしくお願いします。

(とりあえず当分はライブドア版も、平行して更新していく予定です。)

なお、参考までに30分でできるlivedoorBlogからMovableTypeへの引越し方法をアップしています。  
Posted by kawarobo at 05:15 この記事のURLComments(5)TrackBack(2)お知らせ

2005年07月14日

MetaTrader4 バックテストできます!

MetaTrader4(以下、MT4)がバージョンアップして、ついにバックテストが使えるようになりました!
(ネット旅人さん、情報提供ありがとうございます)

ダウンロード先http://www.metatrader4.com/

MT4の旧バージョンをお使いの方は、自動アップデート機能では、最新版にならない場合があるので、サイトから直接最新版をダウンロードして下さい。上書きインストールでOKです。

MT4のバックテスト機能は、SBFXよりもかなり性能が良くなっているようなので、これからはMT4をメインにシステムを作るようにします。
解説についても順次書き換えていきますので、よろしくお願いします。

  
Posted by kawarobo at 06:13 この記事のURLComments(0)TrackBack(0)お知らせ

外国為替 自動売買のフォーラムはじめました

フォーラムサイトをオープンしました!
自動売買システムに関する情報交換や、プログラミングの依頼など、
いろいろ使っていただけると嬉しいです。
http://forum.kawarobo.com/  
Posted by kawarobo at 06:13 この記事のURLComments(1)TrackBack(1)お知らせ

2005年07月11日

為替ロボットの作り方(FXCM用) 完成

PreGCDCをチャートにセット【システムの運用】
以上でシステムが完成しました!

BJD、HO、SBFXを立ち上げた状態で、
SBFXのドル円日足チャートを開き、MAPreGCDCをドラッグアンドドロップ、
Settingsタブの、「Allow Live trading」にチェックを入れて、OK。

StrategyBuilderFX enabled ExpertAdvisorEnable Expert AdvisorをONにして、ニッコリマークが表示されれば運用開始です。
あとはそのまま放っておくだけで、シグナル発生時に自動的にオーダーを実行してくれます。

HyperOrderでFXCMのポジションを確認FXCMでのポジションの状態や残高を確認したいときはHOの画面を開き、
Local Server>Activity> FXCM/RefcoFX/...
から、画面下のタブPositionsAccountを見てください。

【自分のシステムを作ろう】

今回作成したMAPreGCDCの売買ルールでは、バックテストで見たように、成果を得るまで、かなりの期間が必要だと思われます。
実際に自動売買システムを運用をする場合には、もっと効率良く、安定した成果を得られるルールを見つけ出さなければいけません。

満足のいくものを作り上げるのは大変ですが、うまくいけば、寝ていても儲かる夢のようなシステムになる可能性もあります。
是非、自分だけの為替ロボットに挑戦してみましょう!

売買ルールを色々試しながら、独自の儲かる手法を見つけ出すこと自体も楽しいと思いますし、思いつかなければネットや書籍などで紹介されているもの用いても良いでしょう。

プログラミングが苦手な方は、プログラミング依頼用の掲示板を作成しますので、そちらで依頼してみて下さい。


なお、このサンプルではFXCMの口座で売買するためにHyperOrderとBlackJumboDogを利用しましたが、HyperOrderが対応していない他のいろいろなブローカー(外為どっとコム等)でも自動化することができます。
(SBFXのエキスパートプログラムはそのままで、HOとBJDを変更するだけですので簡単です。)
その方法については随時紹介していきますので、ご希望のブローカーがあればどんどんリクエストして下さい。  

為替ロボットの作り方(FXCM用) 仕上げ

 [プログラム最終版]
最後に、
シグナル発生時にSBFXがオーダーを(メールに見せかけて)書き出すよう、コードに追加します。

MAPreGCDCを以下のように書き換えます(最終バージョン)
(売買ルールは、
  • GC前になったら買い、DC前は売り
  • 短期移動平均の傾きが反転したらポジションを閉じる
  • ストップロスは150pips
)
*この最終バージョンでバックテストを行う場合は、必ずHyperOrderを停止しておいて下さい。テストによって出力された過去のオーダーが大量に実行されてしまいます。
また、テスト終了後には忘れず、アカウント名(.csv)ファイルを削除して下さい。
 *a メールオーダー用のユーザーファンクションを呼び出します
   参考:UserFunction()


さらに一つ、mailorderというユーザーファンクションを追加します。

*ユーザーファンクションは、Expertプログラム中から呼び出すことのできる外部ファイルです。繰り返し行なう処理や、他のExpertプログラムでも使用したいものをユーザーファンクションにしておくと、あとから修正や拡張したい時に便利です。
今回は、BJDのメール保存フォルダにオーダーを書き出す処理をユーザーファンクションにしました。これは他のExpertプログラムからも呼び出して使うことができます。

UserFunction mailorderの設定MetaEditor
File>new から、「User Function」を選びます。
Nameをmailorderと入力して、OK。
新規ウィンドウが表示されます。

以下のコードを記入して、*3filenamepassの部分を書き換えます。
 filenemaはBJDで設定したメールのアカウント名(.csv付き)
 passはHOで設定した、オーダー用のパスワードです。
 例:アカウント名kawarobo.csv、パスワードorderpassの場合、
  vars: filename("kawarobo.csv"),pass("orderpass");

Verifyボタンあとは、Verifyボタンで保存、コンパイルして出来上がりです。
(ファイル名はmailorder.mql

 *1 inputsでファンクションの引数を宣言。宣言した順に、UserFunction()からの引数が渡される。参考:UserFunction()
 *2 lotmultipleはロット数の単位を調整するための変数。一万通貨はSBFX上では0.1なのに対し、FXCMでは10なので、100倍する。
 *3 アカウント名,オーダー用パスワード。環境に合わせて書き換えが必要
 *4 SwitchでSymbolごとに処理を振り分ける。SBFXではEURUSDのような記述であるのに対し、HOではEUR/USDのように間に「/」が必要。
 *5 ここから、ファイルの読み書き。FileOpen()でcsvファイルを開く。";"は列の区切り文字。今回は「列」を使用しないので関係ない。FileWrite()で一行ずつ書き込み、FileClose()でファイルを閉じる。
 *6 ファイルの最後に読み書きポイントを移動。他の通貨との同時運用の場合を考慮して、オーダーを上書きではなく追記するため。
  

為替ロボットの作り方(FXCM用) 設定の確認

 [設定の確認]
設定が終わったところで、メールによるオーダーがきちんと通るか確認してみましょう。

*実際にオーダーを出しますので、必ずデモ口座で行なって下さい

BJDとHOを立ち上げた状態で、
以下の文をBJDのアカウント名(メールのアカウント名)をつけてSBFXのExpertsフォルダに保存して下さい。
*太字部分のアカウント名とオーダー用パスワードは適宜書き換えてください

例:ファイル名= kawarobo.csv 
 保存先=C:\Program Files\StrategyBuilderFX\experts

From kawarobo.csv@localhost kawarobo.csv@localhost Mon Jun 27 17:22:04 2005

$HOCOMMAND$,orderpass,BM,EUR/USD,Forex,Cash,,,,EUR,10,0,0


HyperOrderでFXCMのポジションを確認オーダーが通っていれば、HyperOrderの画面、
Localserver> Activity> FXCM/RefcoFX....
を開き、画面下のタブPositionsに、EURUSD買いポジションが表示されているはずです。

*ポジションが表示されない場合はOrdersタブを開き、オーダーが認識されているか、認識されていればその右端にあるInformationの欄でエラーメッセージを確認してください。
Ordersにも表示されていない場合は、
LocalServer> Management> Journal
を見てください。メールが認識されていればここに何らかのメッセージが出ているはずです。

もう一つ、ポジションを閉じるメールも試してみましょう。
以下の文を同じようにBJDのアカウント名をつけてSBFXのExpertsフォルダに保存して下さい。
*太字部分を適宜書き換えてください

例:ファイル名= kawarobo.csv 
 保存先=C:\Program Files\StrategyBuilderFX\experts

From kawarobo.csv@localhost kawarobo.csv@localhost Mon Jun 27 17:22:04 2005

$HOCOMMAND$,orderpass,CP,EUR/USD,Forex,Cash,,,,EUR,,,,


これで、ポジションが閉じられるはずです。

  

2005年07月10日

為替ロボットの作り方(FXCM用) メールオーダーの設定

 [BlackJumboDogの設定]
以上を踏まえたうえで、BJDの設定をしましょう。
BJDを立ち上げ、設定>メールサーバ から、メールサーバ設定ダイアログを開きます。

まず、「メールサーバを使用する」にチェックをいれます。
ドメイン名を localhost として、
メールを保存するディレクトリに、SBFXのExpertsフォルダ
 (私の場合はC:\PROGRAM FILES\STRATEGYBUILDERFX\EXPERTS\
を指定します。

次に、利用者タブを開いて、アカウントを追加します。
このときアカウント名には必ず「.csv」を付けてください。
私はアカウント kawarobo.csv 、パスワード mailpass としました。

このようにアカウント名に.csvをつけておくことで、メール保存先となるファイルが見かけ上、.csvファイルになりますので、SBFXから読み書きすることができるようになります。

あとは「OK」を押して、メールサーバ設定ダイアログを閉じて下さい。
以上でBlackJumboDogの設定は終わりです。

ユーザー登録入力画面 [HyperOrderの登録]
次はHyperOrderです。

HOをはじめて起動する時は、ユーザー登録が必要です。
入力は全てアルファベットです。ここで入力したメールアドレス宛てに認証コードが送られますので、正確に記入してください。

HyperOrder認証コードOnline registration」を選択して次へ進み、しばらく待つと、認証コードがメールで届きます。

メールにある認証コードを入力欄にコピペして認証完了です。
HyperOrder認証コード入力

HyperOrderを開く [HyperOrderの設定]
HOが起動すると広告が表示されますが、
それは消さずに、タスクトレイにあるアイコンをダブルクリックして、ウインドウを開きます。

ブローカー設定を開くまずはFXCMと連携するための設定を行います。
LocalServer >Management >BrokerFeeds
にあるFXCM/Refco....右クリックPropertiesを選択します。

ブローカー設定Datafeedタブから
Type=Demo
であることを確認して、Login、Passwordに FXCMデモ口座のIDとパスワードを入力します。

ブローカー設定を有効化
OKでウインドウを閉じ、再び
LocalServer >Management >BrokerFeeds
にあるFXCM/Refco....を右クリックして、
今度はActivateをクリック。
しばらく待つと、FXCMとの接続が完了し、Connected欄にチェックが入ります。
メール設定を開く
次はオーダーメールを受け取る設定をします。
メニューの
 Tools>Email Dispatcher
を開きます。

メール設定Inbox」にチェックを入れて、各項目を入力します。
  • POP3Server= localhost
     (BJDを使うので、localhostで固定です)
  • Account=(BJDで作成したアカウント名)
     例:kawarobo.csv
  • Password=(アカウントのパスワード)
     例:mailpass
  • Check email every=2(ここで指定した秒数ごとにメールチェックします)
  • Ignore older than=0(ここで指定した分数より古いメールは無視。0は全て受け入れる)

  • Process email commands which contain:
    オーダーメール用のパスワードを設定します。オーダーメールにはここで決めたパスワードを記入するようにしてください。
     Password= 例:orderpass
     Confirm password=(確認のためもう一度)
OKで閉じれば設定完了です。
  

2005年07月07日

HyperOrderのデモ警告について

デモ警告旧バージョンのHyperOrderを使っていると、画像のようなデモ警告が表示され、製品版の購入を促すメッセージがでることがあります。

しかし、開発もとのサイトではフリーソフトとしてありましたし、フォーラムでもそのように書かれていますので、このデモ警告は旧バージョンの名残(?)かバグだと思って良さそうです。

この警告が出てしまった場合は、一度HyperOrderをアンインストールしてから、最新バージョンをインストールし直すと、使えるようになります。
最新バージョンはこちらのフォーラムにあります。
  
Posted by kawarobo at 12:21 この記事のURLComments(0)TrackBack(0)お知らせ

為替ロボットの作り方(FXCM用) オーダーの仕組み

【自動売買の設定をする】

できあがったプログラムを使って、FXCMの口座で自動売買をするように設定しましょう。

FXCMで自動売買を行う流れは、
 シグナル発生時にSBFXからHyperOrder(HO)にオーダーメールを送り、
 それによってHOがオーダーを実行する
というものです。

メールの送受信部分をもう少し詳しく言うと、
 SBFXから送られたメールをメールサーバーが受信して保管、
 HOメールサーバーに問い合わせて、届いていたメールを引き出す
となります。

ところが、SBFXにはメールを送信する機能はありません。これは困りました。。
どうしたら良いのでしょうか?


 [BlackJumboDogの利用]
そこで、BlackJumboDog(以下、BJD)の登場です。
BJDのメールサーバーの仕組みを、利用させてもらうことにします。

BJDでは、管理するアドレス宛てに届いたメールを、受信用のフォルダに保存します。
その時メールは、あて先のアカウントごとに分けられ、アカウント名の付いたテキストファイル(拡張子なし)として保存されます。
さらにメールが届いた場合は、そのファイルに追記していきますので、アカウントごとに一つずつファイルがあり、そのファイルの中にメールがまとめて保存される形になります。
つまり、アカウント名kawaroboなら、保存フォルダ内の「kawarobo」というファイル(拡張子無し)にkawarobo宛てのメールがまとめて記録されます。


一方、SBFXはメールの送信はできませんが、ファイルを読み書きすることができます。
このファイル読み書き機能を使って、BJDの保存フォルダ内のアカウント名ファイル(先ほどの例で言えば「karawobo」ファイル)に直接書き込めば、あたかもメールを送ったかのように見せかけることができます。

これで、HOがBJDに問い合わせると、BJDは、SBFXによって書き込まれたファイルをメールとして、HOに渡してくれます。

ただし、ここで注意があります。
SBFXが扱えるのは.csvの拡張子がついたCSVファイル限定です。
またファイルの場所はSBFXインストールフォルダ内のExpertフォルダに限られているのです。  

2005年07月06日

為替ロボットの作り方(FXCM用) 変更結果

 [変更版の結果]
それでは、テストをしてみましょう。
チャートはUSDJPY日足で、資金10,000$、手数料0、スプレッド0、every 1 pointです。

結果は+80,318$!
かなりいい数字が出てきました。
ただし、最大ドローダウンが40.6%もあり、実用化するにはかなり気合が要りそうです。。

Typeを1に変えるつづけて、テスター画面のSettingsからTypeをに変えて、Type1のテストをします。

結果、+95,519$、さらにいい値が出ました!
最大ドローダウン26%と、Type0よりはかなりマシになりました。(それでもまだ少し気合の入った数字ですが。。)

type1-100結果Type1はルール上、ポジションが閉じられやすくなっているので、ストップロスにもう少し余裕を持たせてもよさそうです。
StopLoss150200でそれぞれテストしてみました。

結果、ストップ150の時は+111,127$ 最大ドローダウン19.3%
ストップ200の時は+124,176$ 最大ドローダウン24.2%

type1-150結果どちらもトレード数は700〜800程度、ロットは1に固定なので、トレード1回あたりの平均値は+150$ぐらいになります。

テストに使用したヒストリカルデータは1978年5月から2005年6月まで27年分
それで7〜800回のトレードということは、月に2,3回の割合でシグナルが発生するという、かなり悠長なシステムということになります。


type1-200結果トレイリングストップを付けたり、パラメーターをいじったり、まだまだ手の加えようはあると思いますが、そろそろ次の手順に移りたいので、Type1のストップ150を採用することにします。

次からはいよいよHyperOrderとBlackJumboDogを使ってFXCMのデモ口座での自動売買をセットすることにしましょう。



(ここまでのチャートを見ていた中で、おかしな位置に矢印が出ていることがあり、調べたところ、実はMAPreGCDCのコードのミスがあったことに気が付きました。ルールでは、仕掛けのシグナル発生は「終値が長期線と短期線の間に入りこんだ時」でしたが、その部分をうっかり
 MaShortCurrent < Current and MaShortCurrent < MaLongCurrent
としてしまいました。これでは終値が短期線を越え、さらに長期線も越えてしまった状態も含んでしまいます。本来は、
 MaShortCurrent < Current and Current < MaLongCurrent
としなくてはいけないところです。
ところが、ここを訂正すると成績がかえって悪くなってしまいました。
そこで、あえて間違えたままこの部分を残すことにしました。怪我の功名というのでしょうか。。)
  

為替ロボットの作り方(FXCM用) ルールの見直し

 [修正の結果]
修正したところで再度バックテストをしてみます。
資金100,000$、手数料、スプレッドは0、modelはevery 1 point、Arrows in the chartにチェックを入れます。

結果、矢印の重なりはなくなりました。

とは言え-15,190$と相変わらずマイナスのままですので、これでは使えません。 他の通貨で様子を見てみましょう。
ドル円日足チャートを開き、MAPreGCDCを適用してテストします。
同じように、資金100,000$、手数料、スプレッドは0、modelはevery 1 point、Arrows in the chartにチェック。
結果、−31,920$とますます悪い結果に。。パラメーターをいろいろいじってみてもよさそうですが、ここではもう一度チャートの様子を見ることにします。

 [チャートに移動平均を表示]
移動平均表示前チャートには売買ポイントを示す矢印が出ていますが、これだけではいまいち分かりません。
MAPreGCDCのルールは、移動平均の長期線と短期線の間に入った時にポジションを取り、GC,DCで閉じるというものでした。
なので、チャート上にも見やすいように移動平均線を表示します。

移動平均を適用NavigatorウインドウのIndicatorsからMovingAverageをチャートにドラッグ。 バックテストでは長期21、短期5(MaLongPeriod(21),MaShortPeriod(5) )としていましたので、Period=21, Method=Simple, Applyto=Close, Shift=0で赤色の長期線(21日)を表示、同じようにして今度はPeriod=5、色をに変えて短期線(5日)を書き出します。

 [ルールの見直し]
移動平均表示後 これで見やすくなりましたが、かなり「だまし」にやられているようです。 しかしそれ以上に、せっかくいいタイミングで入っているときでも、ストップが狭すぎて、損をしているようです。
また、これまではGC、DCで閉じるようにしていましたが、チャートでみると、もう少し粘った方が利益を伸ばせるようにも見えます。
ここをどうにかできないでしょうか。
問題部分
トレーディングシステム入門という本を見たところ、ディレクショナルスロープ法というやり方が載っていました。
ディレクショナルスロープ法とは、短期と長期、2本の移動平均線を使って、クロスではなく、その傾きをもとにシグナルを出す方法で、2本の移動平均両方が上昇(下降)すれば買い(売り)、短期線の向きが反転したところでポジションを閉じるというものでした。
この方法の一部を拝借することにしましょう。
GCやDCで閉じる代わりに、短期線が反転したところで閉じることにします。

コードは以下のようにしました。


新たにTypeという定数を用意しました。
Typeが0のときは、ポジションを閉じる時の条件が「短期線が長期線を越えてから、短期線の向きが反転した時点」となります。
Typeを0以外にすると単に「短期線の向きが反転した時点」となって、長期線を越える前でも即、ポジションを閉じてしまうようになります。

ポジションを閉じる条件とは独立して、ストップロスが設定してありますので、一定額の損失が出たところで強制的に損切りされます。
ストップロスの初期値は少し余裕をもたせて100pipsにしてあります。
  

為替ロボットの作り方(FXCM用) バックテスト

VerifyボタンMetaTraderボタン

Verify」ボタンを押すと、保存&エラーチェック&コンパイルがされて準備が整います。(ファイル名はMAPreGCDCにしました)
MetaTrader」ボタンでSBFXに戻ります。


【バックテストをする】

mapreを適用とりあえずプログラミングができたので、テストをしてみます。

NavigatorウィンドウのExpertAdvisorsから先ほど作成したMAPreGCDCをEURUSD1時間足チャートにドラッグ。

Strategy TesterタブからStartボタンでバックテストを開始します。

最初の結果結果は、開始直後から-92%と惨敗です。。
時間足で試したのがだめなのでしょうか?日足に変えてやってみましょう。

日足に変更 テスト画面を閉じて、チャート画面に戻り、「D1」ボタンで日足チャートに変えます。
F6キーでテスター画面を出し、もう一度「Start」

結果はやはり−90%と無惨な結果になりました。

 [チャートで確認する]
矢印を表示するシグナルがどのような状態で出ているのか、チャート上で確認してみましょう。
テスター画面の「Arrows in the chart」にチェックを入れて、シグナルの状況がチャート上に表示されるようにします。
先ほどは資金不足で途中で止まってしまいましたので、資金は10倍の100,000ドルにし、手数料やスプレッドは両方0にして純粋な売買結果を見ることにします。
Modelを「every 1 point(slow)」として、スタート。
結果が出たらOKでチャートに戻ります。

多重の矢印ここでおかしな状態が目に付きました。
一本のBarに矢印が大量に重なっています。

これは、ストップロスでポジションが消えたところで、すぐ新たなポジションを取り、またストップに引っかかるということをBar1本の中で何回も繰り返してしまうためのようです。

また、「every 1 point(slow)」でテストをする際、日足のデータを基にランダムで作成した仮想のデータを使用しているというのも影響しているようです。
始値と終値は順番がはっきりしていますが、高値と安値はどちらが先に来るか元の4本値からだけではわかりませんし、高値と安値を何往復もしたのか、安値から高値に一方的に上がっただけなのかもわかりません。

これでは結果の信頼性がありませんので、Bar1本の中で何度もポジションをとらないようにコードを改良します。

 [コードの修正]
MetaEditorに戻って、MAPreGCDCのコードを以下のように書き換えます。

14、16、51、58行目が変更部分。

openbarという変数を作り、ポジションを持った時のBarを記録。そのBar内ではそれ以降の処理をスキップします。
bars」はその時の合計Bar数を得るものです。  

2005年06月29日

為替ロボットの作り方(FXCM用) プログラミング

【プログラミングをする】

式化したルールを、MetaQuoteLanguage(MQL供砲箸いΩ生譴妊廛蹈哀薀潺鵐阿靴泙靴腓Α

MQL兇砲弔い討MQL兇離據璽で少しずつ説明をしていきますので、ここではこんな感じのものかというのをつかむ程度でいいと思います。

プログラミングはSBFXのMetaEditorで行います。
SBFXのTools > MetaQuotes Language Editor からエディターを立ち上げ、
File>Newから新規エキスパートを作成して下さい。詳しくは「MetaEditor入門

以下のように記入します。

*1 長期線と短期線の期間を変更できるよう、「defines:」で、MALongPeriod(長期期間),MAShortPeriod(短期期間) という定数をセットしました。こうしておくと、後から期間を変更するのが容易になります。
*2 自分で決める変数(定数以外)は全て、「var:」で宣言しておく必要があります。(まとめて宣言する場合は「vars:」「( )」内は初期値でこれにより数値変数か文字列変数かが決定)参考:MQL挟憤廛螢侫.譽鵐
*3 iMA(期間,MODE_SMA,0)で現在の単純移動平均の値が出ます。最後の数字を1に変えると一本前の値、2にすると二本前の値が得られます。今回は終値ベースのため、一本前と二本前の値を使用します。
*4 close[0]で現在の値、close[1]でチャート上で1本前の終値(直近の終値)、close[2]だと2本前の終値。
*5 この部分は/*〜*/で括られているので実行されません。デバッグ用に各値を出力したいときは/* */を外します。参考:MQL挟憤廛螢侫.譽鵐Print
*6 TotalTradeは保有ポジションの数。(未約定のオーダーも含める)
ただし、異なる通貨も同時に運用していた場合、そのポジション数も全てカウントされてしまうので、現在の通貨のポジションだけを取り出して調べる。参考:If文For文
*7 OrderValue(ポジション番号,VAL_TYPE)で保有ポジションのタイプが得られる。買いはOP_BUY、売りはOP_SELL
*8 ポジションが無ければ、GC前、DC前でないかを調べて、条件が合えば注文を出す
*9 条件式は &(=and) や|(=or)で組み合わせが可能
*10 SetOrder()で売りや買い。
*11 ポジションがある場合、GC,DCでないかを調べる
*12 CloseOrder()でポジションを閉じる。
  

為替ロボットの作り方(FXCM用) 売買ルールを決める

【売買ルールを決める】

さて、いよいよシステム作りに入ります。

この売買ルールを決める手順は成績を左右する非常に重要な部分ですが、
まだ「これだ!」という投資手法が決まっていなければ、人から聞いたり、
本で見た方法、ふと思いついたものをどんどん試してみるほうが面白いと思います。
それで見込みがありそうなら、さらに磨いていけば良いでしょう。


 [採用ルール概要]
ここでは、以前ファンドマネージャーをされていたある方がちらりとおっしゃっていた、移動平均を使う手法を試してみることにします。

それは、基本中の基本、移動平均の長期線、短期線のゴールデンクロス(GC)とデッドクロス(DC)に多少手を加えるもので、GCDCになる少し前に仕掛けて、GC,DCになった時点で手仕舞うというやり方です。

GCやDCになる少し前」というのは具体的に言うと、直近の終値が短期線と長期線の間に入り込んだ時です。

ただそれだけだと『だまし』が非常に多くなるので、様子を見て一工夫が必要だとのことでした。
様子見や工夫の仕方が思いつかないので、とりあえずどのくらいだまされるものか、やってみてそれから考えることにしましょう。


 [ルールの式化]
ルールが決まったところで、プログラミングしやすいよう、式に置き換えてみます。

まず、GCやDCは以下のように定義してみました。
GC:短期線<長期線の状態から、長期線≦短期線になったとき
DC:長期線<短期線 〃  短期線≦長期線 〃

「GCやDCになる少し前」は、このようにします。
GCになる前:時価<短期線<長期線の状態から、短期線≦時価<長期線になったとき
DCになる前:長期線<短期線<時価 〃 長期線<時価<短期線 〃

(短期線、長期線は終値ベースの単純移動平均。時価は直近の終値)

そしてルールはこうなります。
  • GCになる前」が発生したら買い
  • DCになる前」が発生したら売り
  • 買いや売りの保有するポジションは1つまで。
     (ポジション保有時に再度買いや売り条件が発生しても無視する)
  • GCまたはDCが発生時、ポジションを保有していたら全て閉じる
  

為替ロボットの作り方(FXCM用)

それでは為替ロボット、略してカワロボを作ってみましょう。
ここでは、FXCMのデモ口座でカワロボの運用を開始するまでの手順を紹介します。

【ながれ】
  1. 売買ルール(戦略)を決める
  2. プログラミングをする
  3. バックテストをして戦略を調整する
  4. 運用開始


【用意するもの】

以下のソフトをダウンロード、インストールして下さい。
全てフリーソフトです。

HyperOrder(以下、HO)はダウンロード前にフォーラムへの登録(無料)が必要です。HOダウンロード手順

BlackJumboDog はリンク先一番下の「BlackJumboDog イントラネット用簡易サーバ 3.8.3」をダウンロードして下さい。

HOはメールサーバからメールを受信し、そのメールの内容に沿ってFXCMにオーダーを自動的に出す機能を持っています。
売買シグナル発生時にSBFXがメールを送り、HOで受信して売買注文を実行します。
BlackJumboDogはメールサーバーとして、SBFXとHOの仲介をしてもらいます。

*現在、SBFXより高機能な
  MetaTrader4 http://www.metatrader4.com/(以下、MT4)
というフリーソフトがありますが、バックテスト機能がまだ使えません。
MT4のバックテスト機能が使えるようになり次第、SBFXと入れ替える予定です。
(MT4はSBFXの元?となっているMetaTrader3の後継です。そのため画面構成や使い方はSBFXと非常によく似ています。
また、MT4にはシグナルをメールで送信する機能があり、売買シグナルをメール配信したり、
モブログで売買履歴を公開したりという使い方もできます。
早くバックテストができるようになるといいのですが。。)


【前準備】

取引に使用するFXCMのデモ口座を作っておきます。
こちらのページから登録しますとIDとパスワードがメールで届きます。  

2005年06月27日

SBFXとHyperOrderの連携方法

これまで、FXCMの取引を自動化するには
MetaTrader4HyperOrder
の組み合わせを使うことにしていましたが、
SBFXHyperOrder
の組み合わせでも使える方法がわかりました。

詳しくは為替ロボット入門で書いていきますが、
SBFXのファイル読み書き機能を使って、メールサーバーの受信ボックスに直接、
メールを書き出すという方法になります。

これまではSBFXはテスト用、MT4が本番用と考えていましたが、
MT4のバックテスト機能が実装されるまでは、SBFXをメインにする方向で行きたいと思います。
  
Posted by kawarobo at 20:34 この記事のURLComments(0)TrackBack(0)お知らせ

2005年06月22日

livedoorからMovableTypeへの引越し方法1

livedoor Blogから、他サーバーのMovableTypeへブログの引越しをすることにしました。

ドキュメントの移動だけなら、データのエクスポート機能を使えば簡単ですが、大量の画像や自ブログ内へのリンクがあるとえらいことになります。

そこで、いくつかのフリーソフトと自前のプログラムを使って、比較的簡単に引越しをする方法を紹介します。

【はじめに】
ここで紹介する方法は、エントリー100個程度の小規模なブログを前提としています。これよりはるかにデータが多くなりますと、時間が大幅に長くなったり、プログラムの変更が必要になるかもしれません。
あと、移行先サーバーがPHPに対応していることが必要です。

また、バグや操作ミスによりブログのデータが壊れたり、消えてしまうこともあるかもしれませんが、一切責任は負えませんのでご了承下さい。(私の環境ではうまくいきましたが。。)

(私の環境)
OS: WindowsMe
ブラウザ: IE6
画面: 800X600 ブラウザ画面は最大化
その他:Googleツールバーインストール済み
移行先サーバー:バリュードメイン(XREA.COM)月額200円でロリポよりイイ
MovableType:バージョン3.17日本語 全てのカテゴリーとエントリーを削除済み
livedoor Blog PRO:なし。試用後、解約したので使えません。(有料は嫌。。)

【ながれ】
.疋ュメントの取り込み(自動操作ソフトを使用)15分
∧源コードの変換(文字コード変換ソフトを使用)1分
サーバーへファイルを転送(FTPソフトを使用)5分
げ菫の取り込み(画像一括ダウンローダーを使用)5分
ゥ螢鵐の変換(自作のPHPコードを使用)1分
MobableType上でインポートの実行 1分

以上、合計30分程度でできるとおもいます。

【用意するもの】
以下のソフトを全てダウンロードしておいてください。いずれもフリーソフトです。
UWSC以外は、使い慣れたものがあればそちらで構いません。

つづく  

livedoorからMovableTypeへの引越し方法2

【前準備】
UWSCの本体
と、LD2MT.lzhを解凍してできる
readlivedoorblog.UWS
readlivedoorcategol.UWS
LD2MT.php
LD2MTconfig.txt
を全て同じフォルダに入れておきます。

次に保存時のファイル名や、リンク変換に必要なパス名をまとめて設定しておきます。
LD2MTconfig.txtを開いて、以下の太字の部分を書き換えてください。

contentspreset=ld_contents
titlefilename=ld_titlelist.txt
theauthor=kawarobo
blogname=為替ロボット
categolfilename=ld_categollist.txt
importfilename=import/changed.txt
convlistfilename=import/convlist.txt

ldhome=http://blog.livedoor.jp/kawarobo/
ldarchives=http://blog.livedoor.jp/kawarobo/archives/
ldimgs=http://image.blog.livedoor.jp/kawarobo/imgs/
newhome=http://kawarobo.com/
newarchives=http://kawarobo.com/archives/
newimgs=http://kawarobo.com/archives/images/

[説明]

  • theauthor=移行先のMovableType上で表示する投稿者名。
  • blogname=livedoor側のブログ名。
  • ldhome=livedoor側のブログのホームURL
  • ldarchives=livedoor側のアーカイブ保存先。
      自分のブログで個別記事のリンクをみて、  http://blog.livedoor.jp/kawarobo/archives/25278785.html
      なら、太字部分までをここに記入。

  • ldimgs=livedoor側の画像保存先。自分のブログで画像のリンク先をみて、  http://image.blog.livedoor.jp/kawarobo/imgs/a/e/aebefbcc.jpg
      なら、太字部分。

  • newhome=移行先ブログ(MT)のホームURL
  • newarchives=移行先ブログのアーカイブ保存先
  • newimgs=移行先ブログの画像保存先

保存先やURLは最後の/まで必ず入れてください。
  

livedoorからMovableTypeへの引越し方法3

【ドキュメントの取り込み】
いよいよ取り込みです。
livedoor Blog PROに契約中か、試用期間が残っているなら、livedoor Blog PROの機能でテキストファイルに落としてください。
私の場合、PROのほうは一度試した後、既に解約してしまいましたで無料では使えなくなってしまいました。

となると、あとは手作業で一つ一つコピペ・・・ これはあまりに辛いので、UWSCというソフトを使います。
これは操作を自動化するソフトで、手作業でいちいち繰り返さなくても、一度手順を登録してしまえばあとは自動的に作業を行ってくれます。

このUWSCのすごいところは、ただ単にマウスやキーの操作履歴を繰り返すわけではなく、条件分岐やファイルの読み書きなど、ワードのマクロのようにプログラミングができるところです。
(この機能は為替ロボットにも応用できます。FXCM以外のブローカーで、HyperOrderが対応していないというときでも、自動的にシグナルを読み取って売買を実行させることができるのです。
その練習のためにも今回はこのUWSCを使ってみることにしました。)

[記事の取り込み手順]
ld2mtreadtitle Blogの投稿」>「投稿したBlogを編集する」へ進む
一番上の記事(一番新しい記事)の編集画面に入る
readlivedoorblog.UWSをUWSCで実行
あとは自動的に記事を読み取って、htmlファイルとして保存してくれます。

動作がおかしい?と思った時は、下記の動作内容とUWSCのヘルプを参考に読み取り位置などの調整をして下さい。
動作中のUWSCを止めるには、Alt+F2です。

[readlivedoorblog.UWSの動作内容]
・URLの読み取り
・記事タイトルの読み取り
・カテゴリの読み取り
・本文の読み取り
・追記の読み取り
・投稿日時の読み取り
・読み取った内容をファイルに保存
・次の記事に移って繰り返し
・全ての記事を読み終わったら終了

【ドキュメントの取り込み つづき】
記事の取り込みは終わりましたが、あとでリンクを変換するためにカテゴリーリンクのURLを読み込んでおきます。

[手順]
ld2mtreadcategolー分のブログから、一番上のカテゴリーを開く
readlivedoorcategol.UWSをUWSCで実行
これでカテゴリーページのURLが自動的にリスト化され保存されます。

[readlivedoorcategol.UWSの動作内容]
・ウインドウ名からカテゴリの読み取り
・アドレスバーからURLの読み取り
・次のカテゴリに移って繰り返し
・全てのカテゴリを読み終わったら終了

  

livedoorからMovableTypeへの引越し方法4

【文字コードの変換】
取り込んだドキュメントは、そのままではMobableTypeに取り込んだとき文字化けしてしまいますので、「UTF-8」に変換しておきます。

[手順]
ld2mtutf8
CharsetConverterを立ち上げる
▲プションから、出力ファイル名を「入力ファイル名と同名(上書き)」に
先ほどのLD2MTconfig.txtなどが入っているフォルダの、
 ・ld_titlelist.txt
 ・ld_categollist.txt
 ・ld_contents000.html(ld_contents001以降があればそれらも全て)
 をそれぞれ、文字セット「UTF-8」改行コード「LF」に変換する。

【サーバーへファイルを転送】
取り込んだドキュメントと各ファイルをMovableTypeが稼動中のサーバーに転送します。
FFFTPの使い方や、サーバーの設定方法はここでは説明しませんが、こちらのサイトFFFTP Surpport Page
が非常に分かりやすいです。

[手順]
FFFTPを立ち上げる
MovableTypeのインストールフォルダ(mt.cgiがあるところ)に
 ・ld_titlelist.txt
 ・ld_categollist.txt
 ・ld_contents000.html(ld_contents001以降があればそれらも全て)
 ・LD2MTconfig.txt
 ・LD2MT.php
 をアップロード。
そこにimportフォルダがなければ、importフォルダを作成
import フォルダの属性を777に変更

*い呂海里△箸亮蟒腓派要になる作業です。FFFTPを立ち上げたついでにやっておいて下さい。