あなたのコードでは、UseMeanReversion = falseの場合、tp値はg_upperより高くなるはずですよね?
if (EnableBuys) { bool buySignal = false; if (UseMeanReversion) { // 平均回帰買い:下値に跳ね返される(現在>下値、事前安値≦下値) double prevLow = iLow(_Symbol, PERIOD_CURRENT, 1); buySignal = (bid > g_lower && prevLow <= g_lower); } else { // ブレイクアウト買い:上限を上回る buySignal = (ask > g_upper); } if (buySignal) { double entry = ask; double sl = NormalizeDouble(g_lower - (SLBuffer * point), digits); double tp = NormalizeDouble(g_upper, digits); // 最小距離を満たすようにSLを調整する if (entry - sl < minDist) sl = NormalizeDouble(entry - minDist, digits); // TPの最小距離をチェックする if (tp - entry < minDist) { Print("TP too close for buy (dist=", (tp - entry)/point, " < ", minDist/point, ") - skipping"); } else if (trade.Buy(LotSize, _Symbol, entry, sl, tp, "Channel Buy")) { Print("Buy order placed: Entry=", entry, " SL=", sl, " TP=", tp, " (TP > SL)"); } else { Print("Buy order failed: ", trade.ResultRetcode(), " - ", trade.ResultRetcodeDescription()); } } }
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「MQL5標準ライブラリエクスプローラー(第3回):エキスパート標準偏差チャネル」はパブリッシュされました:
探求者の目的は、物事をより深く理解し、実験を通して新しいアイデアを発見することです。前回は、この学習プロセスを簡略化するために、エキスパートアドバイザー(EA)にクラスを統合するための基礎と手順を示しました。主な目的は、クラスのインターフェースと役割を理解することでした。また、開発者コメントが学習プロセスをどれほど容易にするかも確認しました。
最後に、標準ライブラリのクラスを扱うための基本的なステップをまとめました。ここで際立った大きな利点の一つは、MQL5の充実したドキュメントが利用できることです。他のプログラミング言語と同様に、MQL5のドキュメントは包括的な知識ベースを形成しています。MQL5のウェブサイト全体(記事、フォーラム、本、コードベースを含む)が、アルゴリズム取引における実践的な課題解決の豊富な参照資料となります。各セクションは、開発者やトレーダーが実務上の課題を解決できるよう設計されています。
本記事の課題は、ボラティリティに基づくチャネルを用いた取引をおこなうEAを作成することです。その過程で、CChartObjectStdDevChannelクラスを学ぶことで、単に機能するEAを作成するだけでなく、標準ライブラリへの理解も深めることができます。既存コードからも常に学べることがあり、すべての実験が新しいアイデアの扉を開きます。
今日の課題をパズルだと考えてみてください。最終的な完成図がEAであり、私たちの役割は、前回の議論で得た概念やメモを活用して、ピースを組み合わせることです。
作者: Clemence Benjamin