Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Глянул быстро (еще не копал) , нашел обращение к point , которое у тебя вычисляется.
Попробуй "выбросить" его и поставить тупо Point. Возможно, проблема в этом (point через МаркетИнфо можеь быть не всегда выходит такой как тебе надо?).
да по идее всегда...
хотя можно и его попробовать нормализовать =)
и это не всегда допустимо - эксперт может торговать по нескольким парам, и поинт у них может быть разным...
Допустим, orderstoploss = 1.29211 (5 цифр после запятой)
bid=1.29716 (тоже 5 цифр )
TrailingStop = 50
point =0.001
тогда (bid - TrailingStop * point)=1.29216>1.29211
Правда, для этого нужно, чтобы digits вдруг стало равно 5
И еще
можно безболезнено заменить на
проверка на отсутствие уровня стоплосса, мне кажется, не нужна при трейлинге.
Вообще-то , нужна, сам себя поправлю. Если мы выставляем стоп-лосс только при наличие профита, а в противном случае готовы пережидать до маржинкола.
Больше ничего не нашел. На какой паре у тебя не правильно работал трейлинг и не было ли при этом сильных движений?
Я все привожу к целым числам для сравнения. И вообще где только можно храню и
использую приведенные значения (в массивах, переменных и пр..)
Т.е. переменные типа int могут принимать значения от -2147483648 до 2147483647.
Эта размерность вполне годится для кроссов.
Соответственно 1.2999 и 1.3000 можно привести к 12999 и 13000, а потом благополучно их сравнить,
не боясь всякой лажи с периодами.
Тут набросал для примера примерчик :)
вот
output:
shiftpoint EURUSD,H1: Real Double Value = 1.29999999
shiftpoint EURUSD,H1: Shift Point Value = 13000
shiftpoint EURUSD,H1: Restored value = 1.3000
на
Как вариант.
проверка на отсутствие уровня стоплосса, мне кажется, не нужна при трейлинге
Привет.
Я все привожу к целым числам для сравнения
2dev:
Вы правы - это фундаментальная проблема, опасно сравнивать числа с плавающей запятой.
В важных местах постоянно приводите числа к определенной точности через Normalize().
Стандартная на типе double (8 байт).
Кстати, мы все передаваемые цены в торговых запросах принудительно нормализуем дабы избежать ошибок.
Можно послать запрос на стоп-лосс как 1.2932461, но выставится 1.2932 .
Проверьте, пожалуйста, не в этом ли ошибка с попытками повторных установок стопа по той же цене?
3 человека смотрело =) пришёл Ренат и просто показал пальцем на ошибку =)))
сейчас проверю, конечно, но скорей всего дело именно в этом... я не нормализовал "bid - TrailingStop * point", а в модификации ордера участвует именно эта конструкция...
невнимательно мы как-то, господа ;)
вы имеете в виду Normalize(), который предложил Begun?
вы имеете в виду Normalize(), который предложил Begun?
Извиняюсь, имел в виду стандартную NormalizeDouble.