Есть советник, в котором расчетные действия выполняются на каждом тике.
Оптимизированная настройка советника для режима тестирования "OHLC" дает положительный результат по прибыли.
Тестирование в режиме "все тики" даёт нулевой или отрицательный результат и не оптимизируется к положительному результату.
Как же так?
Ведь режим "OHLC" даёт всего четыре значения за бар, а режим "все тики" гораздо больше значений и казалось бы больше возможностей для оптимизации параметров.
Какие варианты можно использовать, что бы режим "все тики" тоже давал прибыльность, как и режим "OHLC"?
разобраться с алгоритмом и принципом советника, подумать отчего идёт прибыль в OHLC. Есть некоторый шанс что сможете адаптировать и к нормальной работе. Только это не оптимизатором делается :-) Исключительно головой
Есть советник, в котором расчетные действия выполняются на каждом тике.
Оптимизированная настройка советника для режима тестирования "OHLC" дает положительный результат по прибыли.
Тестирование в режиме "все тики" даёт нулевой или отрицательный результат и не оптимизируется к положительному результату.
Как же так?
Ведь режим "OHLC" даёт всего четыре значения за бар, а режим "все тики" гораздо больше значений и казалось бы больше возможностей для оптимизации параметров.
Какие варианты можно использовать, что бы режим "все тики" тоже давал прибыльность, как и режим "OHLC"?
Как вариант попробовать в коде разместить ограничение. Что бы выполнялся алгоритм только в момент открытия или закрытия свечи. Это приведет к тому что советник будет работать по всем тикам как в режиме "OHLC".
Ведь режим "OHLC" даёт всего четыре значения за бар, а режим "все тики" гораздо больше значений и казалось бы больше возможностей для оптимизации параметров.
Какие варианты можно использовать, что бы режим "все тики" тоже давал прибыльность, как и режим "OHLC"?
Именно "гораздо больше возможностей для оптимизации" - и приводит к разнице результатов. Слишком много степеней свободы.
Вариант один - надо торговать на открытии баров твоего таймфрейма. Пришла часовка - провел анализ, если надо - выставил приказ для сервера. Все. При таком подходе - на всех режимах тестирования получаются близкие результаты. Как бонус - тестирование на ОХЛС - проводится гораздо быстрее, чем на "всех тиках".
Именно "гораздо больше возможностей для оптимизации" - и приводит к разнице результатов. Слишком много степеней свободы.
Вариант один - надо торговать на открытии баров твоего таймфрейма. Пришла часовка - провел анализ, если надо - выставил приказ для сервера. Все. При таком подходе - на всех режимах тестирования получаются близкие результаты. Как бонус - тестирование на ОХЛС - проводится гораздо быстрее, чем на "всех тиках".
Удивляет не разница в результатах, а то что в режиме "все тики" не оптимизируется в прибыль вовсе. Казалось бы OHLC подмножество от "все тики" стало быть должна быть область параметров как минимум повторяющая прибыльность по OHLC, но этого не наблюдается.
Удивляет не разница в результатах, а то что в режиме "все тики" не оптимизируется в прибыль вовсе. Казалось бы OHLC подмножество от "все тики" стало быть должна быть область параметров как минимум повторяющая прибыльность по OHLC, но этого не наблюдается.
OHLC - читерский режим, т.к. сообщает High и Low бара ДО его Close.
OHLC - читерский режим, т.к. сообщает High и Low бара ДО его Close.
А разве в реальной торговле H и L появляются после Close ???
Удивляет не разница в результатах, а то что в режиме "все тики" не оптимизируется в прибыль вовсе. Казалось бы OHLC подмножество от "все тики" стало быть должна быть область параметров как минимум повторяющая прибыльность по OHLC, но этого не наблюдается.
А разве в реальной торговле H и L появляются после Close ???
Да!
// Кроссплатформенный тестерный грааль для режима OHLC #include <MT4Orders.mqh> input double Koef = 2; #ifdef __MQL5__ #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) #endif // __MQL5__ void OnTick() { static int Count = 0; static double BidOpen = 0; const int Flag = Count % 4; if (!Flag) BidOpen = Bid; else if (Flag == 1) { const double Spread = (Ask - Bid) * Koef; if (BidOpen - Bid > Spread) OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0); else if (Bid - BidOpen > Spread) OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0); } else if ((Flag == 2) && OrderSelect(0, SELECT_BY_POS)) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); Count++; }
OHLC - читерский режим, т.к. сообщает High и Low бара ДО его Close.
Это что-то новенькое. При открытии бара open, high, low, close равны между собой.
А разве в реальной торговле H и L появляются после Close ???
Они не появляются. Только в момент Close можно утверждать, что это были High и Low.
По теме. Режим OHLC моделирует развитие свечи. А потому время наступления High и Low может кардинально отличаться от того, что было реально. К примеру, если бар бычий, то считается, что сначала был Low, а потом High. На самом же деле все могло быть наоборот. В итоге, если в пределах свечи были и SL, и TP, то получается несколько вариантов изменения баланса, которые далеки от реальности.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть советник, в котором расчетные действия выполняются на каждом тике.
Оптимизированная настройка советника для режима тестирования "OHLC" дает положительный результат по прибыли.
Тестирование в режиме "каждый тик" даёт нулевой или отрицательный результат и не оптимизируется к положительному результату.
Как же так?
Ведь режим "OHLC" даёт всего четыре значения за бар, а режим "все тики" гораздо больше значений и казалось бы больше возможностей для оптимизации параметров.
Какие варианты можно использовать, что бы режим "каждый тик" тоже давал прибыльность, как и режим "OHLC"?