マーチンゲール法について

2020/05/23 17:53
826

お世話になっております。
以下マーチンゲール法のシステムについて質問です。(MT4)
if(OrderProfit() > 0 && lose == 0) win++;
else if(OrderProfit() < 0 && win == 0) lose++;
else break;

上記部分ですが、なぜ勝ちトレードを数えるのか理解できません。
たとえば、一度勝ったデータが出た場合、そのあと常にwin=1となってしまうため、loseを数えることができないのではないかと思ってしまいます。どなたかご教示いただけますと幸いです。

【以下コード一覧】
extern double LotMultiplier = 1.2;
extern double MaxMartingaleLots = 10.0;/
double MartingaleSystem(double baselots, int magic)
int win, lose;
double lots;
for(int i = OrdersHistoryTotal() - 1; i >= 0; i–){
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true){
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magic){
if(OrderProfit() > 0 && lose == 0) win++;
else if(OrderProfit() < 0 && win == 0) lose++;
else break;
}
}
}
lots = baselots * MathPow(LotMultiplier, lose); //指数計算を行うものです。//double MathPow(double base,double exponent);
if(lots > MaxMartingaleLots) lots = MaxMartingaleLots;
return(lots);

コメント

キングレブロン
2020/06/10 10:27

ご質問のロジックですが、直近の連勝数or連敗数を数えるロジックなのかと思います。

もし直近が勝ちだった場合win1。
その1つ前も勝ちであればwin2、win3、win4、、、と続き、
どこかで負けがあればlose1になりますので、その次のループの際にelseに入り終了。
ロット計算に入るのかなと思います。

直近が勝ちの場合はデフォルトのロット数で注文を行い、
負けの場合はデフォルトのロット数に1.2のlose乗をかけた値で注文を行うという仕組みのようです。

たとえば、一度勝ったデータが出た場合、そのあと常にwin=1となってしまうため、loseを数えることができないのではないかと思ってしまいます。

マーチンゲール法のロット数を計算するためのロジックですから全体のlose数をカウントする必要はなく、
あくまでも直近の連勝数or連敗数を数えるロジックなのかと思います。

関連トピックス

検索結果がありません。

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

注目トピックス

検索結果がありません。