タイトルが入力されていません。
コンテンツがありません。
There have no category
There have no subcategory
オプションのマーチンゲールを使用しているのですが何連敗しても初期ロットのまま取引します。 バックテストでは機能しております。 ご確認おねがいします。
マーチンゲールがリアル運用では初期ロットのまま変化しない、というご質問ですね。
この場合、設定や環境によってマーチンゲールが発動しないことがあります。以下をご確認ください。
マーチンゲールは 「損切りでポジションが決済された直後」 に次回ロット数を増やします。
修正例: 基本項目 → 損切り → 損切り幅をpipsで入力(例:50) ※このとき「マーチンゲール」オプションの倍率設定も忘れずに確認してください。
マーチンゲールオプションの
バックテストではサーバーの約定状況やスリッページが発生しないため、必ず損切りで決済されますが、リアルではスプレッド変動などにより損切り決済にならないケースがあります。その場合もロットは据え置きになります。 →「履歴」タブで実際にどのように決済されたか(損切りか別条件か)を確認してください。
GOLD(XAUUSDなど)では、通常の通貨ペアとpipsの定義が異なります。EA内部で価格差をpipsに変換する関数 PriceToPips をそのまま使うと、計算がずれることがあります。
PriceToPips
まとめ
上記をご確認いただいても改善されない場合、出力されたファイルを確認させていただきたいと思います。 こちらより、ソースファイルをzipにしてお送りいただければ、弊社エンジニアの方でコードの確認をさせていただきます。 (通常はいきなりDMをお送りいただいてもご返信を差し上げられない場合がございます。「弊社からの依頼に対するコードのご提供であること」の識別のため、メッセージの本文内に今回のQAのリンク https://labo.gogojungle.co.jp/articles/2269 の記載をお願いします。)
https://labo.gogojungle.co.jp/articles/2269
調査後の回答につきましては、引き続きこのQAにてコメントさせていただきます。 お手数をおかけしますが、何卒よろしくお願いいたします。
コードをご提供いただきありがとうございます。 内容を拝見したところ、バックテストではマーチンゲールが動作するのに、リアル運用ではロットが初期値のままになる原因として、いくつか考えられる点がございます。特に「連敗カウント(lose)が増えない」ことが要因になっている可能性が高いです。以下の観点でご確認ください。
コード内の負け判定は OrderProfit() のみで行われています。 この値は 手数料やスワップを含まないため、実際にはマイナスでも「±0扱い」や「微プラス」になり、連敗と判定されないことがあります。
OrderProfit()
チェックポイント:
回避策(設定側):
MQL補足(必要なら):
コードを修正できる場合は、
if(OrderProfit() + OrderSwap() + OrderCommission() < 0) lose++;
のように純損益で判定すると安定します。
Martingale() は「同一マジック番号・同一シンボル」の履歴を最新から見ていき、最初にプラスが出た時点でカウントを止めます。
Martingale()
回避策:
コード内の checkLots() で口座仕様に合わせてロットが丸められます。
checkLots()
ナンピンやピラミッディングと同時に設定していると、マーチンゲールが効かないケースがあります。 まずはマーチンゲール単独で検証してください。
ご提示のコードでは、マーチンゲールオプションに
input double MartingaleMax = 10;
という制限値が設定されています。 この場合、計算上のロットが 10 を超えると強制的に「10」に固定され、それ以上は増えません。
「倍率方式」ではロットが口座上限に突き当たると増えなくなりますが、 「カスタムロット設定」を使えば、回数を任意に制御できます。
設定方法(例:15段階にしたい場合):
オプション → マーチンゲール → ロット数の計算方法を「可変(カスタムロット設定を使用)」に変更し、
0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24,20.48,40.96,81.92,163.84
のように15個以上をカンマ区切りで入力します。 ※あわせて「最大ロット数」もこれらを超えないように調整してください。
最後に、ブローカー側の「最大ロット(MODE_MAXLOT)」が10に設定されている場合、コード上の設定を変えても実際には10以上の発注はできません。 その場合は残念ながら「EAつくーる」やマーチン設定だけでは回避できず、ブローカー仕様に従う必要があります。
これらを順に見直すことで、リアル口座でもロットが正しく増えるはずです。
ご回答ありがとうございます。 1~7確認させて頂きましたが改善しませんでした。 最初の投稿に取引履歴、EAの設定画面を添付しておりますが、どこかおかしいところはありますでしょうか? 後、他に考えられる要因はありますでしょうか? ご確認お願いします。
改めまして、履歴と設定画面を確認させていただきました。今回のケースでは、マーチンゲールのロットが増えない原因は「連敗判定の不具合」よりも 設定値やブローカー仕様の制約による可能性が高いです。
設定値が 10.0 となっていますが、EAつくーるのコードでは「最大ロット数」として使われます。 この場合、口座仕様や小数点の扱いによっては 10ロット固定ではなく、0.10ロットが上限扱いになるケースがあります。 → そのため、計算上は 0.02 ロットに増えても「上限制御」で 0.01 に丸められてしまう可能性があります。
10.0
対策: まずは MartingaleMax を「0」(無制限)に設定し、挙動を確認してください。
履歴を見るとすべて 0.01 ロットで発注されています。 ブローカーの「最小ロット」や「ロット刻み(LOTSTEP)」が 0.01 であれば問題ありませんが、もし 0.1 刻みの口座仕様なら すべて丸められて 0.01 のままになってしまいます。
対策: 口座仕様を確認し、初期ロットを LOTSTEP に合わせることが重要です。
現在の設定では、TakeProfit・Slippage・その他オプションに干渉要素は見当たりません。 まずは マーチンゲール単独(他オプションOFF)+ MartingaleMax = 0 の状態で再テストすると、原因を切り分けやすいです。
この3点を見直すことで、バックテストと同じようにリアル口座でもロットが増えていくはずです。
1~3まで確認させていただきましたが改善されません。 build5200バージョンアップしたことは関係ありますか?
投稿を確認お願い致しました。 この度はマーチンゲール機能が正常に動作しない件でご不便をおかけし、誠に申し訳ございません。 ご指摘いただいた状況につきまして、弊社でも確認を進めておりますが、EAつくーるの仕様上または不具合による可能性が考えられます。
現在、弊社内で調査を行っておりますので、恐れ入りますが結果が分かるまで今しばらくお待ちいただけますでしょうか。 進捗があり次第、改めてご報告させていただきます。
この度はご迷惑をおかけしましたこと、重ねてお詫び申し上げます。
コメント文がありません。
マーチンゲールがリアル運用では初期ロットのまま変化しない、というご質問ですね。
この場合、設定や環境によってマーチンゲールが発動しないことがあります。以下をご確認ください。
1. 「損切り」の設定をご確認ください
マーチンゲールは 「損切りでポジションが決済された直後」 に次回ロット数を増やします。
修正例:
基本項目 → 損切り → 損切り幅をpipsで入力(例:50)
※このとき「マーチンゲール」オプションの倍率設定も忘れずに確認してください。
2. 「ロット数の計算方法」の確認
マーチンゲールオプションの
3. 他オプションとの干渉
4. リアル運用時の注意点
バックテストではサーバーの約定状況やスリッページが発生しないため、必ず損切りで決済されますが、リアルではスプレッド変動などにより損切り決済にならないケースがあります。その場合もロットは据え置きになります。
→「履歴」タブで実際にどのように決済されたか(損切りか別条件か)を確認してください。
5. 通貨ペアがGOLDの場合の注意
GOLD(XAUUSDなど)では、通常の通貨ペアとpipsの定義が異なります。EA内部で価格差をpipsに変換する関数
PriceToPips
をそのまま使うと、計算がずれることがあります。PriceToPips
関数内のティックサイズや桁数計算部分をGOLDに合わせて修正する必要があります。まとめ
PriceToPips
の計算方法を通貨仕様に合わせて調整する上記をご確認いただいても改善されない場合、出力されたファイルを確認させていただきたいと思います。
こちらより、ソースファイルをzipにしてお送りいただければ、弊社エンジニアの方でコードの確認をさせていただきます。
(通常はいきなりDMをお送りいただいてもご返信を差し上げられない場合がございます。「弊社からの依頼に対するコードのご提供であること」の識別のため、メッセージの本文内に今回のQAのリンク
https://labo.gogojungle.co.jp/articles/2269
の記載をお願いします。)調査後の回答につきましては、引き続きこのQAにてコメントさせていただきます。
お手数をおかけしますが、何卒よろしくお願いいたします。
コードをご提供いただきありがとうございます。
内容を拝見したところ、バックテストではマーチンゲールが動作するのに、リアル運用ではロットが初期値のままになる原因として、いくつか考えられる点がございます。特に「連敗カウント(lose)が増えない」ことが要因になっている可能性が高いです。以下の観点でご確認ください。
1. 損益判定が純損になっていない
コード内の負け判定は
OrderProfit()
のみで行われています。この値は 手数料やスワップを含まないため、実際にはマイナスでも「±0扱い」や「微プラス」になり、連敗と判定されないことがあります。
チェックポイント:
回避策(設定側):
MQL補足(必要なら):
コードを修正できる場合は、
のように純損益で判定すると安定します。
2. 途中の±0や他マジックの履歴で連敗が途切れている
Martingale()
は「同一マジック番号・同一シンボル」の履歴を最新から見ていき、最初にプラスが出た時点でカウントを止めます。回避策:
3. ロット刻み(LOTSTEP)や最小ロットの丸め
コード内の
checkLots()
で口座仕様に合わせてロットが丸められます。チェックポイント:
4. オプション干渉
ナンピンやピラミッディングと同時に設定していると、マーチンゲールが効かないケースがあります。
まずはマーチンゲール単独で検証してください。
5. 「最大ロット数」の制限による頭打ち
ご提示のコードでは、マーチンゲールオプションに
という制限値が設定されています。
この場合、計算上のロットが 10 を超えると強制的に「10」に固定され、それ以上は増えません。
チェックポイント:
回避策:
6. カスタムロット設定での回数制御
「倍率方式」ではロットが口座上限に突き当たると増えなくなりますが、
「カスタムロット設定」を使えば、回数を任意に制御できます。
設定方法(例:15段階にしたい場合):
オプション → マーチンゲール → ロット数の計算方法を「可変(カスタムロット設定を使用)」に変更し、
のように15個以上をカンマ区切りで入力します。
※あわせて「最大ロット数」もこれらを超えないように調整してください。
7. ブローカー仕様の上限確認
最後に、ブローカー側の「最大ロット(MODE_MAXLOT)」が10に設定されている場合、コード上の設定を変えても実際には10以上の発注はできません。
その場合は残念ながら「EAつくーる」やマーチン設定だけでは回避できず、ブローカー仕様に従う必要があります。
まとめ
これらを順に見直すことで、リアル口座でもロットが正しく増えるはずです。
ご回答ありがとうございます。
1~7確認させて頂きましたが改善しませんでした。
最初の投稿に取引履歴、EAの設定画面を添付しておりますが、どこかおかしいところはありますでしょうか?
後、他に考えられる要因はありますでしょうか?
ご確認お願いします。
改めまして、履歴と設定画面を確認させていただきました。今回のケースでは、マーチンゲールのロットが増えない原因は「連敗判定の不具合」よりも 設定値やブローカー仕様の制約による可能性が高いです。
1. MartingaleMax の解釈
設定値が
10.0
となっていますが、EAつくーるのコードでは「最大ロット数」として使われます。この場合、口座仕様や小数点の扱いによっては 10ロット固定ではなく、0.10ロットが上限扱いになるケースがあります。
→ そのため、計算上は 0.02 ロットに増えても「上限制御」で 0.01 に丸められてしまう可能性があります。
対策:
まずは MartingaleMax を「0」(無制限)に設定し、挙動を確認してください。
2. ロット刻み(LOTSTEP)
履歴を見るとすべて 0.01 ロットで発注されています。
ブローカーの「最小ロット」や「ロット刻み(LOTSTEP)」が 0.01 であれば問題ありませんが、もし 0.1 刻みの口座仕様なら すべて丸められて 0.01 のままになってしまいます。
対策:
口座仕様を確認し、初期ロットを LOTSTEP に合わせることが重要です。
3. 初期設定のまま動作確認
現在の設定では、TakeProfit・Slippage・その他オプションに干渉要素は見当たりません。
まずは マーチンゲール単独(他オプションOFF)+ MartingaleMax = 0 の状態で再テストすると、原因を切り分けやすいです。
まとめ
この3点を見直すことで、バックテストと同じようにリアル口座でもロットが増えていくはずです。
1~3まで確認させていただきましたが改善されません。
build5200バージョンアップしたことは関係ありますか?
投稿を確認お願い致しました。
この度はマーチンゲール機能が正常に動作しない件でご不便をおかけし、誠に申し訳ございません。
ご指摘いただいた状況につきまして、弊社でも確認を進めておりますが、EAつくーるの仕様上または不具合による可能性が考えられます。
現在、弊社内で調査を行っておりますので、恐れ入りますが結果が分かるまで今しばらくお待ちいただけますでしょうか。
進捗があり次第、改めてご報告させていただきます。
この度はご迷惑をおかけしましたこと、重ねてお詫び申し上げます。