便利に使ってるMT4のスクリプト、第4弾!StopLossとTakeProfitを変更もしくは設定するスクリプト『4_chgStopLoss_TakeProfit100』の作成方法の紹介。すでに紹介済みのBUY・SELL・Closeスクリプトと同様、興味ある方はチャレンジしてみてください。
紹介済みのスクリプト(過去記事)はこちら
この記事では、よく陥りやすいエラーについて紹介しています。笑わないでね。。。
スクリプト動作検証しているFX会社
- FXTF ゴールデンウェイ・ジャパン株式会社
- XM XM
紹介しているスクリプトが期待した動作をしてくれない場合、また、新規アイディアなど思いつきましたらご連絡ください。
なお、かならず、デモ口座で検証して正常動作を確認の上、リアル口座で使いましょう。^_^
StopLossとTakeProfit変更スクリプトの作成
メタエディター起動
新規作成を選択
(SELLスクリプト紹介記事で掲載した画像を流用)
MQL4ウィザード設定
スクリプトを選択し、次へをクリック
名前付け、著作権・リンクを確認し、Okなら、完了をクリック
スクリプトの名前は、『4_chgStopLoss_TakeProfit100』としました。最初の数字はナビゲーターでの表示順序を意図しています。
- 1_Buy100
- 2_Sell100
- 3_Close100
- 4_chgStopLoss_TakeProfit100
って感じで、並びます。
最後の100はバージョン区分番号です。改定したら数字を変更し、履歴管理ができるようにしています。
完了をクリックしたら、初期テンプレートがオープンします。
次のように入力します。あくまでも一例です。要求機能さえ満足すれば、どのようにプログラミングするかは人それぞれでいいですもんね。
追加した行は、11~17行、24~41行です。
(property宣言部)11行
- #property script_show_inputs
- スクリプト命令発行時にStopLossとTakeProfit値を確認、または変更できるパラメータ設定windowがオープン
- 不要であれば、行の先頭にコメントマーク『//』を付記
(パラメータ宣言部)13~15行
- extern int StopLoss = 10;
- StopLoss値(pips)
- extern int TakeProfit = 10;
- TakeProfit値(pips)
- extern int Slippage = 3;
- スリップページの許容pips
(変数宣言部)17行
- int modifyOk = 0;
- StopLossとTakeProfitが変更または設定できたかどうか受け取る変数
(処理内容)24~41行
- 24行目 if 文
- 通貨ペアの価格単位に3つの変数の単位を合わせる
- 小数点以下の桁数が3桁または5桁の場合、10倍
- 31行目 for 文
- 存在するポジション数だけfor文内の処理を繰り返す
- 33行目 if 文
- ポジション選択失敗 → サーバーとの通信エラー → for文処理中止
- 34行目 if 文
- 選択したポジションとチャートの通貨ペアが異なる場合、残りの処理を飛ばします。
- 35行目 if 文
- BUYポジション、SELLポジション、それぞれでStopLossとTakeProfitの変更命令を発します。
- 40行目 if 文
- StopLossとTakeProfitが変更できなかった場合の処理。エラーであることとエラー番号をターミナルのエキスパート欄に出力します。
- 過去記事3つのスクリプトとは表現を変えてみました。MQL4のヘルプの表現がよりいいような感じでしたので・・・ここは作成者の好きなように編集できますね。
入力終了したら、コンパイルします。
(1_Buy100の記事画像を流用)
で、エラー・・・
エラー個所を示す行(赤〇バック、白マイナスマーク行)をダブルクリックすると、エラー発生個所に飛びます。常にエラー発生個所に飛んでくれるわけではなく、近くの場合やとんでもなく離れた個所に飛んだりするので注意が必要です。
このエラーは、閉じ中括弧『}』が足りないから発生しています。
次のように追加。
再度、コンパイル・・・あれれ?
こんどは警告・・・
ダブルクリックで該当箇所に、、、
今度は、for文内の変数宣言の初期値がないことを知らせてくれています。
int i → int i=0 ですね。。。修正して、
コンパイル。。。
エラーなし。
活用例
記事アップ済みの3つと同様、ショートカットキーに登録して、活用しています。
登録方法、使用方法は同じなのですが・・・
ショートカットキーの登録。
ナビゲーターのスクリプト、4_chgStopLoss_TakeProfit100を右クリックし、ショートカットキー設定をクリック。
コントロールキーとキーを設定します。キーは、Gとしました。
閉じる、で登録終了です。
このスクリプトは、保有ポジションのStopLossとTakeProfitを変更できますが、ワンクリックオーダー後にStopLossとTakeProfitを設定することもできます。
新規オーダーが約定したら自動的にStopLossとTakeProfitを設定するEAも考えていたのですが、不要ですね。
また、一度StopLossとTakeProfitを設定してたら、そのラインをマウスでつまんで上下すれば簡単に値が変更できますから、変更用には不要なスクリプトかもしれない。
右クリックでキャンセルもできますから、TakeProfitだけキャンセルもできちゃいます。
いろいろな使い方ができるMT4は、ほんとに便利です。^_^
このスクリプトを使っていると、StopLossだけセットしたいって思いが出てくるかもしれません。本記事で紹介したプログラムでは、できないです。
興味ある方は、作成にチャレンジされると楽しいかも ^_^
コメント
ブログをよく拝見しています。
今回はショートカットキーでBUY&SELLとクローズのオーダーができるスクリプトで感激しました。スクリプトなので他のEAが付いているチャートでも簡単に手動でオーダーができ、まさに探していたツールです。丁寧な説明もあり、プログラミングがわからない私でも理解でき、自分用に少し手を加えることもできました。また、開発中のEAも興味深く、今後も要注目です。本当にありがとうございました。
P.S.龍馬の土佐弁大好きです。
あんぎんさん、
コメントありがとうございます。
お役に立ててうれしいです。
MT4、開発元がサポート終了されたとの噂が届いています。
私の試用している MT4 build1355 は、ショートカットキーの保存ができないです。
また、MT4 起動時のチャート表示も Default のみ・・・
よく使う組合せを Default として保存すればいいだけなのですが。。。
また何かお気づきの点など浮かびましたらコメントください。