« 為替ロボットの作り方(FXCM用) 設定の確認 | メイン | 為替ロボットの作り方(FXCM用) 出来上がり »
為替ロボットの作り方(FXCM用) 仕上げ
[プログラム最終版]最後に、
シグナル発生時にSBFXがオーダーを(メールに見せかけて)書き出すよう、コードに追加します。
MAPreGCDCを以下のように書き換えます(最終バージョン)
(売買ルールは、
- GC前になったら買い、DC前は売り
- 短期移動平均の傾きが反転したらポジションを閉じる
- ストップロスは150pips
*この最終バージョンでバックテストを行う場合は、必ずHyperOrderを停止しておいて下さい。テストによって出力された過去のオーダーが大量に実行されてしまいます。
また、テスト終了後には忘れず、アカウント名(.csv)ファイルを削除して下さい。
*a メールオーダー用のユーザーファンクションを呼び出しますまた、テスト終了後には忘れず、アカウント名(.csv)ファイルを削除して下さい。
参考:UserFunction()
さらに一つ、mailorderというユーザーファンクションを追加します。
*ユーザーファンクションは、Expertプログラム中から呼び出すことのできる外部ファイルです。繰り返し行なう処理や、他のExpertプログラムでも使用したいものをユーザーファンクションにしておくと、あとから修正や拡張したい時に便利です。
今回は、BJDのメール保存フォルダにオーダーを書き出す処理をユーザーファンクションにしました。これは他のExpertプログラムからも呼び出して使うことができます。
File>new から、「User Function」を選びます。
Nameをmailorderと入力して、OK。
新規ウィンドウが表示されます。
以下のコードを記入して、*3のfilenameとpassの部分を書き換えます。
filenemaはBJDで設定したメールのアカウント名(.csv付き)
passはHOで設定した、オーダー用のパスワードです。
例:アカウント名kawarobo.csv、パスワードorderpassの場合、
vars: filename("kawarobo.csv"),pass("orderpass");
あとは、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用) 設定の確認 | メイン | 為替ロボットの作り方(FXCM用) 出来上がり »
トラックバック
このエントリーのトラックバックURL:
http://kawarobo.com/motp/mt-tb.cgi/298