externstring a = "ЛОТ ММ";
externbool MM=false; // если false - то работает обычный лот, если true - работает ММexterndouble Lots = 0.1; // обычный лотexterndouble balans = 200; // баланс при увеличении которого, следующий лот будет увеличен на лот MaximumRisk При ММdouble MaximumRisk = 0.1; // лот прибавляемый к предыдущему при ММdouble DecreaseFactor = 3.0; // если позиция проигрышная то следующая позиция откроется с лотом /3 При ММdouble LotsOptimized() {
double lot = Lots;
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
if (MM){
int orders = OrdersHistoryTotal();
int losses = 0;
lot = NormalizeDouble(AccountFreeMargin() * MaximumRisk / balans, 2);
if (DecreaseFactor > 0.0) {
for (int i = orders - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == FALSE) {
Print("Error in history!");
break;
}
if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;
if (OrderProfit() > 0.0) break;
if (OrderProfit() < 0.0) losses++;
}
if (losses > 1) lot = NormalizeDouble(lot - lot * losses / DecreaseFactor, 2);
}}
if(lot < minlot) lot = minlot;
if(lot > maxlot) lot = maxlot;
return (lot);}
那么,什么是损失和 减少系数 ?
损失 - 无利可图的交易
DecreaseFactor - 在一系列失败的交易中,手数减少的程度。
Sergey_Rogozin:
如果DecreaseFactor=3, 损失=3,那么根据公式我们可以得到 Lot=0!!!。
在损失>3的 情况下,我们得到 Lot<0
这就是为什么交易不会被打开,这就是计算的结果)
如果有太多的失败交易
所以什么也不会发生。函数Funk2--不返回任何值,它是无效的
在这种情况下,有关的函数是
Funk2功能
这就是为什么交易不会打开,这就是我们所指望的)
如果已经有很多的损失。
因此,这从根本上关闭了参与的可能性。
那么,盈利的交易将从哪里来?))))
所以它完全关闭了开启的可能性。
损失 - 无利可图的交易
DecreaseFactor - 在一系列失败的交易中,手数减少的程度。
是的,这正是我在谈论的。
当损失/DecreaseFactor >= 1 时会发生什么????
啊!它以最初的Lot开场。
谢谢。
是的,这正是我在谈论的。
当损失/DecreaseFactor >= 1 时会发生什么????
如果前者无利可图,则手数将被除以3。如果手数小于最小手数,则最小手数功能将被接管。
是的,谢谢你!
明白了。