честно говоря, не понял в чём проблема...
if(AccountFreeMargin()<(1000*Lots)) - т.е. на один лот 1000, а к примеру для евро
надо уже больше, сейчас почти 1300... Это первая проблема, вторая,
шаг лота.
ExpertTrader:
if(AccountFreeMargin()<(1000*Lots)) - т.е. на один лот 1000, а к примеру для евро надо уже больше, сейчас почти 1300... Это первая проблема, вторая, шаг лота.
Дык Bid*1000 =)
if(AccountFreeMargin()<(1000*Lots)) - т.е. на один лот 1000, а к примеру для евро надо уже больше, сейчас почти 1300... Это первая проблема, вторая, шаг лота.
Во блин, так просто, ну я туплю, заработался наверное. Спасибо.
;)
А вторую проблему как решить, как учитывать шаг лота?
ExpertTrader:
А вторую проблему как решить, как учитывать шаг лота?
Я, если чесно, тоже не понял, в чём проблема =)
А вторую проблему как решить, как учитывать шаг лота?
komposter писал (а):
ExpertTrader писал (а):
А вторую проблему как решить, как учитывать шаг лота?
Я, если чесно, тоже не понял, в чём проблема =)А вторую проблему как решить, как учитывать шаг лота?
Ну например, на счете одного ДЦ можно открыть от 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);
Подойти должно, а вот куда засунуть в функцию расчета оптимального размера лота чего-то не пойму.
Во-первых, вместо
Во-вторых, сразу после этого надо добавить:
Должно работать ;)
ps: настоятельно рекомендую все выражения и переменные нормализовывать перед сравнением. Речь идёт о размере лота - ошибка может быть достаточно обидной...
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: настоятельно рекомендую все выражения и переменные нормализовывать перед сравнением. Речь идёт о размере лота - ошибка может быть достаточно обидной...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не будет правильно допустим для евро.
А еще есть:
Как бы правильно зделать расчет для таких валют как евро, фунт. .. При этом учитывая минимальный размер лота и шаг изменения лота.