LEARN / GOLD DAWN BREAK / 2
利益の目標を置かず、損切りを引き上げる
このEAは、「ここまで来たら利益を確定」という目標(TP)を置きません。かわりに、利益が伸びるたびに損切りの位置を少しずつ有利な方へ動かして、出た利益を守ります。
このしくみの面白いところ
値動きが続くかぎり、利益を伸ばせます。目標を決めていないので、値段が有利な方へ動き続けている途中で、EAのほうから利益を確定して終わることはありません。
伸びた利益は、段を上がるように守ります。利益が一定の幅に届くと、損切りの位置を「買った値段より上」へ動かします。そこから値段が戻ってきても、その位置で取引が終わるので、出た利益の一部が残ります。損切りの位置を後ろへ戻すことはありません。
決済の手段は、この損切りだけです。シンプルですが、試した結果では勝率が 76.0〜84.3%(2025〜26年)と高く出ています。
最初の損切り4ドルは、1日の値動きのどれくらいか
最初の損切りは、注文の値段から4ドルです。この4ドルが、金の1日の値動きの幅(その日の高値 − 安値)に比べてどれくらいの大きさかを、年ごとに比べました。なお、4ドルという数字は、この値幅から計算して決めたものではありません。
| 年 | 日数 | 1日の値動きの幅(真ん中の値) | 4ドルは幅の何%か |
|---|---|---|---|
| 2022 | 258 | 22.51ドル | 17.8% |
| 2023 | 257 | 20.75ドル | 19.3% |
| 2024 | 259 | 30.13ドル | 13.3% |
| 2025 | 258 | 51.43ドル | 7.8% |
| 2026(1〜8月) | 150 | 103.24ドル | 3.9% |
出所:当方で持っている Exness の金(XAUUSD)の1分足。Exness の業者の時計(世界標準時と同じ)で日を区切りました。平日で、1分足が600本以上ある日について、1日の高値 − 安値を求め、その真ん中の値(中央値)を出しました(2026年10月13日に計算)。%は 4 ÷ 真ん中の値です。
同じ4ドルでも、2022〜23年は1日の値動きの2割近く、2026年は4%ほどです。金の値動きが大きくなるほど、4ドルの損切りは相対的に小さくなっています。
損切りを引き上げるところ
void ManageGrid()
{
// ...
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
// ...
double favorable = isLong ? (tk.bid - entry) : (entry - tk.ask);
int idx = LockIndex(ticket);
if(g_locks[idx].lastModMsc > 0 &&
tk.time_msc - g_locks[idx].lastModMsc < (long)InpModifyIntervalSec * 1000) continue;
double ref = favorable - InpGridBackoffUSD;
if(ref < InpGridFirstUSD) continue;
int j = (int)MathFloor((ref - InpGridFirstUSD) / InpGridStepUSD + 1e-9);
double lockDistance = InpGridFirstUSD + j * InpGridStepUSD;
double desiredSL = NormalizeDouble(isLong ? (entry + lockDistance) : (entry - lockDistance), _Digits);
double currentSL = posInfo.StopLoss();
bool improve = isLong ? (desiredSL > currentSL + _Point)
: (currentSL == 0 || desiredSL < currentSL - _Point);
if(!improve) continue;
if(trade.PositionModify(ticket, desiredSL, posInfo.TakeProfit()))
g_locks[idx].lastModMsc = tk.time_msc;
}
}
持っている取引を1つずつ見ていきます。
favorable の行で、いまの利益の幅を測っています。注文が発動した値段から、有利な方向に何ドル進んだかです。
ref の行で、そこから「戻りの余地」(InpGridBackoffUSD)を差し引いています。それが最初の段(InpGridFirstUSD)に届くまでは、何もしません。
届いたら、等しい間隔(InpGridStepUSD)で並んだ段のうち、届いているいちばん上の段を選びます。そこが新しい損切りの位置です(desiredSL)。
improve の行で、新しい位置がいまの損切りより有利なときだけ動かします。不利な方へ戻すことはありません。
動かしたあとは、決まった秒数(InpModifyIntervalSec)だけ、次の変更を待ちます。
試した結果で見ると
2025〜26年の11回の試験では、勝率 76.0〜84.3%、1回の勝ちの平均 208〜330円、1回の負けの平均 611〜730円でした(0.01ロット)。たとえば Exness・注文の遅れなしでは、261回の取引のうち約220回が勝ちです。
1回の取引の長さは、真ん中の値で1分以下でした(2022〜24年は約7〜8分)。値段が動き出した勢いに乗り、すぐに損切りを引き上げて利益を守る。そういう取引が多い形です。
勝ち1回は小さく、負け1回は大きめです。そのぶん、勝つ回数の多さで全体をプラスにしています。
出所:各試験の結果に付く取引の一覧を集計。勝ちの回数は、取引の回数 × 勝率から計算した値です。
動かすだけなら、マイページで GOLD DAWN BREAK を受け取ってください。
全部読みたい・直したい・別の通貨で試したい場合は、ソースコード単品か、EA開発システム+全EAソースコードです。