Доброго времени суток.
Есть бот написанный саморучно. Работал на паре eurusd на четырехзнаке было все норм. Сейчас сменил ДЦ, а в нем пятизнак по данной паре. Малость подстроил его под такую работу. На истории работает без проблем, запускаю в реале: при открытии ордера любого направления выдает ошибку неверная цена, и пробует еще раз. так как на пятизнаке котировки движутся очень быстро, он начинает трещать как гелекоптер с этой ошибкой и вешает тем самым терминал. точность при открытии позиции в нем ставил аж до 30 пп, однако, один хер выдает ошибку цена изменилась и тем самым вгоняет себя в цикл пытаясь открыть ордер. остановить сей процесс можно лишь перезагрузив сам терминал. Что здесь может быть не так ?
В приложенном файле кусок кода относящийся к открытии позиции.
*Бот писался на скорую руку, так что код межет быть агресивным, однако на четырехзнаке все работало норм!
нормализуйте цены до пяти знаков
нормализуйте цены до пяти знаков
Спасибо за столь быструю реакцию на вопрос
Можно ли поподробнее, если честно то вперые об этом слышу, правда опыт в этом деле всего около полгода, наверное сказывается)
нормализуйте цены до пяти знаков
буду очень благодарен если ссылочку сможете дать на инфу по данной тематик
Спасибо за столь быструю реакцию на вопрос
Можно ли поподробнее, если честно то вперые об этом слышу, правда опыт в этом деле всего около полгода, наверное сказывается)
Выглядит это так
NormalizeDouble(Ask, Digits)
так же и с остальными переменными относящимися к цене....
в этом случаее -
NormalizeDouble(1.24801999999999999, Digits) будет равно 1.24801
заметил еще одну херь: дц иногда с ума сходит и присылает котировки вида 1.24801999999999999, если нормализировать до пятизнака, как он будет обрабатывать такую хрень?
так
// Глобальные переменные int SlipPips = 10; int init() { // Пересчеты пунктов для пятизначного ДЦ if ((Digits == 3) || (Digits == 5)) SlipPips = SlipPips * 10; return (0); }
Благодарю за помощь. Воспользовался NormalizeDouble. Пока все работает без нареканий. Вродь помогло.
Проблема решена!
if ((Digits == 3) || (Digits == 5)) SlipPips = SlipPips * 10;
предположим, запустил я эксперта с такой строчкой в ините
решил я переключить фрейм при работающем на пятизнаке эксперте, например, или еще какое-нить действо произвел, запускающее инит...
и что я получу в результате этих действий? - каждый раз SlipPips будет умножаться на 10
SlipPips = 10, SlipPips = 100, SlipPips = 1000 SlipPips = 10000, SlipPips = 100000 ну и т.д....
предположим, запустил я эксперта с такой строчкой в ините
решил я переключить фрейм при работающем на пятизнаке эксперте, например, или еще какое-нить действо произвел, запускающее инит...
и что я получу в результате этих действий? - каждый раз SlipPips будет умножаться на 10
SlipPips = 10, SlipPips = 100, SlipPips = 1000 SlipPips = 10000, SlipPips = 100000 ну и т.д....
нет. Читайте документацию. Порядок работы эксперта, выполнение соответствующих спец. функций. Если лень - на крайняк проверьте сами и все... :-)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток.
Есть бот написанный саморучно. Работал на паре eurusd на четырехзнаке было все норм. Сейчас сменил ДЦ, а в нем пятизнак по данной паре. Малость подстроил его под такую работу. На истории работает без проблем, запускаю в реале: при открытии ордера любого направления выдает ошибку неверная цена, и пробует еще раз. так как на пятизнаке котировки движутся очень быстро, он начинает трещать как гелекоптер с этой ошибкой и вешает тем самым терминал. точность при открытии позиции в нем ставил аж до 30 пп, однако, один хер выдает ошибку цена изменилась и тем самым вгоняет себя в цикл пытаясь открыть ордер. остановить сей процесс можно лишь перезагрузив сам терминал. Что здесь может быть не так ?
В приложенном файле кусок кода относящийся к открытии позиции.
*Бот писался на скорую руку, так что код межет быть агресивным, однако на четырехзнаке все работало норм!