Блог им. VadimKorotkov
// 1-st version if ( true ) strategy.entry( "long", strategy.long, when = close >= long_condition ) strategy.entry( "short", strategy.short, when = close <= short_condition ) // 2-nd version if ( true ) strategy.entry( "long", strategy.long, stop = long_condition ) strategy.entry( "short", strategy.short, stop = short_condition )
Примечания:
согласно справочнику
— стоп ордер на покупку исполняется, когда цена станет такой же или хуже уровня указанного в ордере (то есть цена равна или больше уровня)
— на продажу аналогично (то есть равна или меньше)
the Rolling Stones, с английским под трейдинг у меня не слишком хорошо, решил попробовать популярные русские форумы трейдинга, прежде чем идти на специализированный
вопросы по коду они размещают на stackoverflow
скорее всего, позже попрошу знакомых грамотно перевести мой вопрос, а ответы я, думаю, смогу понять
the Rolling Stones, а в этом суть вопроса
when это условие, по которому сработает открытие позиции обычным ордером
а stop это условие, по которому сработает открытие позиции стоп-ордером
логика кода, на мой взгляд одинаковая, но работают они почему-то по разному, не могу понять почему, об этом и спрашиваю
и там и там условия одинаковые, например, лонг позиция
обычный ордер срабатывает, когда цена равна или хуже (больше)
стоп-ордер срабатывает, когда цена равна или хуже (больше)
но тестер показывает всё так, будто коды работают по-разному
1. Определяем longCondition, чтобы в результате в этой переменной мы имели true / false на каждой конкретной свече. Аналогично определяем shortCondition
2. Дальше
Так мы получим реверс, он же переворот из лонга в шорт. Дальше, если нам нужны дополнительные условия на закрытие сделок, помимо переворота, юзаем или strategy.close или strategy.exit
tashik, спасибо большое за внимание к моей проблеме
я проверял предложенный Вами вариант
вывод сигналов будет аналогичным when
а проблема в том, что мне нужен вывод аналогичный stop
чтобы перетащить его на другую платформу, где более мощный тестер
но я не могу понять логику этого stop
условия-то одинаковые
if( condition ) то же самое что when = condition
по сути они должны быть тем же самым, что stop = condition
но это не так
и я не понимаю почему
надеюсь, нормально объяснил)))
UPD
Если Вам интересно, кажется, Sergeyka (2020-11-30 22:34) помог решить мою проблему (надо будет потестить).
2 вариант срабатывает если даже свеча просто пробила условие, при этом цена закрытия не имеет значения
Sergeyka, Вам тоже большое спасибо за внимание к моей проблеме.
Скорее всего, Вы правы… (надо будет потестить)
Интересно получилось. Я, конечно, сам себе создал проблему)))
Дело в том, что я привык на платформе смотреть работу стратегии в режиме реального времени.
Её результаты отличаются от тех, что показывает тестер.
Потому что в реальном времени на каждый тик стратегия проверяет текущую цену формирующейся свечи актива.
А это цена close
А в тестере стратегия проверяет не цену каждого тика (тестер не слишком гибкий), но и не именно ЗАКРЫТИЕ свечи. Вероятно в формате stop, она проверяет любое из имеющихся данных по свече, скорее всего, это цены OHLC (точно не знаю).
Вот и получается, что когда я явно задаю close, тестер проверяет только close и выдаёт соответствующие результаты.
А когда я задаю stop, то он, как Вы и заметили, проверяет свечу «целиком», насколько это возможно (OHLC или сгенерированные тики).
Я об этом не подумал из-за того, что привык постоянно следить только за текущей ценой close, т.е. тиками формирующейся свечи.
Проще говоря, я об этом не подумал, потому что я невнимательный :3