Правильное определение размера лота. Минимальный размер лота и шаг изменения лота.
честно говоря, не понял в чём проблема...
if(AccountFreeMargin()<(1000*Lots)) - т.е. на один лот 1000, а к примеру для евро надо уже больше, сейчас почти 1300... Это первая проблема, вторая, шаг лота.
А вторую проблему как решить, как учитывать шаг лота?
А вторую проблему как решить, как учитывать шаг лота?
Ну например, на счете одного ДЦ можно открыть от 0,1 до 10 лотов
с шагом 0,1 (0,1...0,2...0,3... и т. д.) , на счете второго ДЦ можно открыть
от 1 до 100 лотов с шагом 1 (1...2...3... и т. д.), на счете третьего ДЦ можно
открыть от 10 до 1000 лотов с шагом 10 (10...20...30... и т. д.).
Если использовать шаг в 0,1 на счете с шагом в 1, то размер лота
будет некоректным, например 1,1.
MarketInfo(Symbol(),MODE_LOTSTEP);
Подойти должно, а вот куда засунуть в функцию расчета оптимального размера лота чего-то не пойму.
if(Lots<0.1) { Lots=0.1; }надо написать
if(Lots<MarketInfo(Symbol(),MODE_MINLOT)) { Lots=MarketInfo(Symbol(),MODE_MINLOT); }
Во-вторых, сразу после этого надо добавить:
double raznica = MathMod( Lots, MarketInfo(Symbol(),MODE_LOTSTEP) ); if ( raznica > 0.0 ) Lots -= raznica;
Должно работать ;)
ps: настоятельно рекомендую все выражения и переменные нормализовывать перед сравнением. Речь идёт о размере лота - ошибка может быть достаточно обидной...
Не будет правильно допустим для евро.
А еще есть:
Как бы правильно зделать расчет для таких валют как евро, фунт. .. При этом учитывая минимальный размер лота и шаг изменения лота.