// ---
// ---
double newLotsMartingail(int magic = -1)
{
int time = 0;
double lastProfit = 0.0;
double lastLots = 0.0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
continue;
if ((OrderSymbol() == Symbol())
&& OrderCloseTime() > time
&& ((OrderMagicNumber() == magic) || (magic == -1)))
{
time = OrderCloseTime();
lastProfit = OrderProfit();
lastLots = OrderLots();
}
}
/* Если последняя сделка по текущему символу была убыточна, то возвращаем ёё объём, умноженный на два;
иначе возвращаем начальный объём (extern int Lots) */
double resultLots = 0.0;
if (lastProfit < 0)
resultLots = lastLots * 2;
else
resultLots = _Lots;
resultLots = MathRound(resultLots / MarketInfo(Symbol(), MODE_LOTSTEP)) * MarketInfo(Symbol(), MODE_LOTSTEP); // приводим к нужному числу знаков
resultLots = MathMin(resultLots, MarketInfo(Symbol(), MODE_MAXLOT));
resultLots = MathMax(resultLots, MarketInfo(Symbol(), MODE_MINLOT));
if(resultLots > _MaxLots)
resultLots = _Lots;
// ---
return(resultLots);
}
void get_lots()
{
// MQL4 | присвоение объёма по входному параметру и мартингейлу при закрытии последней сделки в убытке
OP_LOTS = newLotsMartingail(_MagicNumber);
}
// ---
// ---
Designer63rus