お世話になっております。
以下マーチンゲール法のシステムについて質問です。(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);
検索結果がありません。 |
検索結果がありません。 |
ご質問のロジックですが、直近の連勝数or連敗数を数えるロジックなのかと思います。
もし直近が勝ちだった場合win1。
その1つ前も勝ちであればwin2、win3、win4、、、と続き、
どこかで負けがあればlose1になりますので、その次のループの際にelseに入り終了。
ロット計算に入るのかなと思います。
直近が勝ちの場合はデフォルトのロット数で注文を行い、
負けの場合はデフォルトのロット数に1.2のlose乗をかけた値で注文を行うという仕組みのようです。
マーチンゲール法のロット数を計算するためのロジックですから全体のlose数をカウントする必要はなく、
あくまでも直近の連勝数or連敗数を数えるロジックなのかと思います。