Есть вот такой код, перевода позиции в безубыток:
Т.е. если позиция дала прибыль равную размеру Стоп лоссу по модулю, то позиция переводится в безубыток. Проблема в том, что фактически цена может проскочить точку равенства и условие не сработает, особенно это заметно при тестировании на исторических данных. Есть ли идеи как этого избежать?
1. При сравнении чисел типа double знак равенства, а также знак неравенства применять не рекомендуется - два равных числа этого типа могут быть не равны по округлению, даже если они равны по значению.
2. Помимо знака равенства есть еще знаки "больше или равно", а также "меньше или равно".
Дык в том-то и проблема, что если заменить знак == на >= или <=, то скрипт/эксперт завалит сервер пустыми приказами модификации ордера. Они будут поступать все время, если текущие цены будут выше при покупки и ниже при продаже. Знак равенства используется для того что бы модификация ордера вызывалась один раз (или хотя бы около того).
Дык в том-то и проблема, что если заменить знак == на >= или <=, то скрипт/эксперт завалит сервер пустыми приказами модификации ордера. Они будут поступать все время, если текущие цены будут выше при покупки и ниже при продаже. Знак равенства используется для того что бы модификация ордера вызывалась один раз (или хотя бы около того).
В дополнение к указанному Решетовым, Вам перед модификацией стоит сравнить OrderStopLoss() с OrderOpenPrice() и убедиться, сто СЛ в зоне убытка. Т.о. Вы получите однократную модификацию стопа в безубыток.
В дополнение к указанному Решетовым, Вам перед модификацией стоит сравнить OrderStopLoss() с OrderOpenPrice() и убедиться, сто СЛ в зоне убытка. Т.о. Вы получите однократную модификацию стопа в безубыток.
Вот, это уже лучше. Так и сделаю. Правда проблема в том, что это только частный случай. Как только я захочу модифицировать безубыточный стоп лосс в треллинг стоп, снова начнутся проблемы. Как выход, можно где-то хранить последную цену модификации стоп ордера. Сейчас алгоритм представляю смутно, надо обдумать, придумаю - напишу. Надеюсь что есть более простой/общий случай эффективной идентификации цен, надеюсь и на ваши идеи.
Вот, это уже лучше. Так и сделаю. Правда проблема в том, что это только частный случай. Как только я захочу модифицировать безубыточный стоп лосс в треллинг стоп, снова начнутся проблемы. Как выход, можно где-то хранить последную цену модификации стоп ордера. Сейчас алгоритм представляю смутно, надо обдумать, придумаю - напишу. Надеюсь что есть более простой/общий случай эффективной идентификации цен, надеюсь и на ваши идеи.
Просто используйте две функции: первая однократно переведёт позицию в безубыток при достижении нужного профита, вторая будет трейлить стоп с более высокого уровня профита.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть вот такой код, перевода позиции в безубыток:
Т.е. если позиция дала прибыль равную размеру Стоп лоссу по модулю, то позиция переводится в безубыток. Проблема в том, что фактически цена может проскочить точку равенства и условие не сработает, особенно это заметно при тестировании на исторических данных. Есть ли идеи как этого избежать?