便利に使ってるMT4のスクリプト、第3弾!『Closeスクリプト』の作成方法の紹介。すでに紹介済みのBUY・SELLスクリプトと同様、数行で完成します。
紹介済みのスクリプト(過去記事)はこちら
スクリプトの動作検証しているFX会社
MT4が利用できるFX会社には、二通りの発注方式があります。
成行注文(InstantExcution)方式とカウントダウン(MarketExcution)方式です。両者でStopLossとTakeProfitの発注方法が異なります。
動作検証しているFX会社は次の二社。両社、成行注文方式で、売買と同時にStopLossとTakeProfitを発注できる方式です。
- FXTF ゴールデンウェイ・ジャパン株式会社
- XM XM
他のFX会社では、発注方式の差が要因でうまく動作しない場合がありますので、ご注意ください。
今回紹介するCloseスクリプトには影響ないと思いますが、動作検証していません。ご了承ください。
Closeスクリプトの作成
メタエディターの起動
メタエディターの新規作成を選択
MQL4ウィザードが表示されます。
ここでスクリプトを選択し、次へをクリック
お好きな名前を入力します。今回は『3_Close100』としました。
次に著作権とリンクを確認して、OKなら完了をクリックすると、準備されている初期テンプレートが開きます。
次のように入力します。入力行は、11~13行、20~32行です。
(パラメータ宣言部)11行
- extern int Slippage = 3;
- スリップページの許容pips
(変数宣言部)13行
- int closeOk = 0;
- Close(OrderClose)できたかどうかを受け取る変数
(処理内容)20~32行
- 20行目 if 文
- 通貨ペアの価格単位にSlippageの単位を合わせる
- 小数点以下の桁数が3または5の場合、10倍
- 23行目 for 文
- 存在するポジション数だけfor文内の処理を繰り返す
- 25行目 if 文
- ポジション選択失敗→サーバーとの何らかの通信エラー→for文処理中止
- 26行目 if 文
- 選択したポジションとチャートの通貨ぺアが異なる場合、残りの処理を飛ばします。
- 27行目 if 文
- BUYポジション、または、SELLポジション、すべて、その時点の該当価格でClose
- 30行目 if 文
- Closeできなかった場合、エラー番号をターミナルのエキスパート欄に出力します。
入力終了したら、コンパイルします。次のようにエラーなければ、Closeスクリプト作成終了。
活用例
BUY・SELLスクリプトと同様、ショートカットキーに登録し、活用しています。
増し玉(ピラミッティング)を活用しますので、複数ポジションのCloseはとても楽です。
ショートカットキーの登録は、、、
ナビゲーターのスクリプト、『3_Close100』を右クリック。
ショートカットキーを設定をクリック。
3_Close100の行、右側のコントロールキーとキーを設定。両者ダブルクリックすると編集可能になります。
閉じる、で、ショートカットキーへの登録終了です。
ショートカットキー『Alt+C』は、その時点で選択状態のチャート(通貨ペア:Symbol)のポジションをすべて、Closeします。
USDJPYのポジションをCloseしたかったのに、その時選択されていたチャートがEURJPYだった、なんてことにならないように気をつけないといけません。
チャートを見ながらCloseすると思うので、多分、このようなミスは起こらないかな、とは思いますが・・・
なお、すべてのポジションをCloseする場合は、26行目を省略すればOK。その際にはスクリプトの名前を『3_Close All』とすれば区別できて便利かも ^_^
繰り返しますが、デモで正常動作を確認後、リアル口座で利用しましょう。FX会社によって結果が異なる場合も考えられますので、検証は大事です。
うまくいかなかったら、ご連絡ください。できるだけ期待にそえるよう努力します。
また、必要とご連絡いただければ、BUY、SELL、Closeともファイルを送ります。
次は、StopLossとTakeProfitの変更スクリプトを紹介します。
コメント