直近高値安値をSLとしRRを1:1にする方法について

2025/05/03 15:54
36

お世話になっております。
以前のQAを拝見していたところ、売りで直近高値をSLとしTPを1:1にする方法について記載がありました(タイトル「直近の高値安値」)。

その中で売りの場合のコード修正例を示していただいておりましたが、買いの場合のコード修正例も示していただくことは可能でしょうか。

また、SLに数pipsの補正値を持たせるようにコード修正することは可能でしょうか(可能であればEAのパラメータとして稼働時変更できるように設定できるとなお良いのですが…)

どうぞよろしくお願いいたします。

コメント

GogoJungle
2025/05/09 09:55

過去QAお調べいただきありがとうございます。
こちらのQAですね。
買いの場合は直近の安値を利用することになると存じます。

SLに(SLのみにでよろしいでしょうか?)補正値を与える方法で、コードの修正方法をご紹介します。
例えばhoseichi=10とした場合、1:1よりも10pipsだけ有利な(買いなので価格が高い位置に)SLが設定されます。つまり、買値と直近の安値の差が100pipsのとき、TP=100pipsに対しSL=90pipsになります。

また、SLの最小値を設定するための変数・min_slを用意し、SLの計算結果がこれを下回った場合はエントリーしない処理を追加しておきました。こうすることで、「エントリー直後に損切決済してしまうような小さすぎるSL」の場合にエントリーを避けることができます。

次を参考に、コードの修正をお試しください。

変数の定義

【修正前】

input int Magic1 = 1;

【修正後】

input int Magic1 = 1;
input double hoseichi = 10;
input int min_sl = 10;

SL・TPの修正

【修正前】

   take_profit = TakeProfit;
   stop_loss = StopLoss;

【修正後】

   take_profit = PriceToPips(MathAbs(iLow(Symbol(), 0, iLowest(Symbol(), 0, MODE_LOW, 20, 1)) - Ask));
   stop_loss = take_profit - hoseichi;
   if (stop_loss <= min_sl) return; // SLがmin_sl以下の場合はエントリーしない

上記は直近20本の高値を利用する例です。「20」の部分をご変更いただくことで、安値を取得する期間を変えることも可能となっております。
ご参考になりましたら幸いでございます。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。