Добрый день! Хочу добавить в эксперт при получении минуса - умножение лотов начиная с лота 0.01 с любым дробным коэф.
И добавить возможность регулировки начала этого умножения.
т.е. чтоб можно было выберать количество отрицательных сделок после которых начинает работать умножение лотов.
Я не программист но понемногу пытаюсь всеже во всем разобраться
Я пробывал разные варианты умножения но оптимального решения не нашел
Трудности в следующем:
При умножении обычным способом в советнике через переменную все какбы работает хорошо. Но при перезапуске советника информация в переменной о текущем лоте теряется и лот сбрасывается в начальный. еслиб можно было гдето хранить эту переменную даже при выключении терминала и последующем включении возобновлять ее это было бы решением. Но такого способа я незнаю пока.
Как вариант это брать лот из истории по последнему закрытому лоту
j = OrdersHistoryTotal()-1;
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==true && OrderMagicNumber() == magic && OrderSymbol() == Symbol() && OrderProfit() < 0 )
{
Lot = OrderLots();
Lot=Lot*koef;}
Так тоже работает и теминал после выключения нормально подхватывает лот. Но полноценно он работает только с лотом начиная с 0.04 или же с любым лотом но коэф. умножения должен быть целым числом.
это и за того что лот в истории всегда вида x.xx а для его нормального умножения начиная с лота 0.01 и коэф умножения например 1.3 лот в истории необходим вида x.xxx
из за этого лот просто не умножается.
Пробывал совместить оба варианта.поместив блок работы с историей в старт инит чтоб 1 раз при старте только работал а далее в основной программе уже через переменную но так не работает нормально.
И второй вопрос это возможность регулировки числа отрицательных сделок с лотом 0.01 после которых начинается умножение. Решения нормального тоже не нашел.
как вариант оба вопроса реализовал так:
j = OrdersHistoryTotal()-1;
if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==true && OrderMagicNumber() == 777 && OrderSymbol() == Symbol() && OrderProfit() < 0 )
{
Lot = OrderLots();
if (Lot<0.04)
{Lot=koefmini*b; b=Lot;}
if (Lot>0.04)
{Lot=Lot*koef; b=0.01;}
}
Оно работает... Но если перезапустить терминал при лоте меньшем 0.04 то он сбросится в начальный. если лот 0.04 и более работает нормально так как с истории берет.
ну и через koefmini можно задать меньшее число по сравнению с koef тогда лот растет медленее до 0.04 это как альтернатива регулировки начала умножения лота через основной koef. Но хотелось бы реализовать конечно это в виде просто переменной где указывается число по достижению которого начинает работать умножение.