На практике как это реализовать?
Допустим за последние 1000 баров:
MAX PRICE_CLOSE 1.50000
MIN PRICE_CLOSE 1.40000
Расстояние между MAX и MIN 10 000 пунктов.
Разделим 10 000 пунктов на 5 >>> высота 1 коридора в пунктах 2 000.
Теперь если советник открывает ключевой (третий) ордер, определяющий направление всей группы ордеров (при контр-ордерной торговле) или первый (при торговле 1 ордером) тогда:
if(Ask < = IHighest() - ( iHighest() - iLowest() ) / 5) { OrderSend(...OP_BUY...) } else if(Bid > = IHighest() - ( iHighest() - iLowest() ) / 5) { OrderSend(...OP_SELL...) }
Примерно так, схематично.
Найдите 3 ошибки в концепции.
И что, Капитан очевидность? Могу дополнить - Земля круглая, вода мокрая и т.д. ))
А вы это применяете?
Сложность в том, что не факт что история за n-баров покажет экстремум. Какое количество баров оценивать по iHighest() и iLowest()???
А если на графике нет даже 100 баров? Я видел инструменты торговли где и такое было. Тогда как быть? Надо значить какую-то обработку делать этого момента.
А вы это применяете?
Сложность в том, что не факт что история за n-баров покажет экстремум. Какое количество баров оценивать по iHighest() и iLowest()???
А если на графике нет даже 100 баров? Я видел инструменты торговли где и такое было. Тогда как быть? Надо значить какую-то обработку делать этого момента.
Да, у меня робот использует каналы именно так, как вы написали в первом посте
Это очевидно, поэтому я так написал
Да, у меня робот использует каналы именно так, как вы написали в первом посте
Это очевидно, поэтому я так написал
Всё уже придумано, я понял. Велосипеды всё изобретаю. А какие подводные рифы там есть? ЧТо делать если на графике инструмента нет и 10 баров? Какой шаг для iHighest() и iLowest() указывать? У меня этот блекджек просто спотыкается. Покупает на максимумах и продаёт на минимумах. И привет...
Наверно, лучше брать не количество баров, ибо не понятно, сколько, а ближайшие фракталы на старшем таймфрейме. Например, на дневном или недельном.
В коде есть решение? Я вот этот момент пока не понимаю. Почитал про эти функции нахождения мин и макс значений цены в истории, а вопросов только прибавилось.
В коде есть решение? Я вот этот момент пока не понимаю. Почитал про эти функции нахождения мин и макс значений цены в истории, а вопросов только прибавилось.
#property copyright "Copyright 2009-2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "2.00" int Fractals_Handle_D1=0; // хэндл индикатора Fractals double Fractal_D1_h[]; // максимальные фракталы double Fractal_D1_l[]; // минимальные фракталы //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit(void) { Fractals_Handle_D1=iFractals(_Symbol,PERIOD_D1); if(Fractals_Handle_D1==INVALID_HANDLE) { printf("Error creating Fractals_Handle_D1 indicator"); return(INIT_FAILED); } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick(void) { int Min_Bars_Or_20=MathMin(Bars(_Symbol,PERIOD_D1),20); // скопируем ближайшие 20 баров (или все, что есть, если их меньше) if(CopyBuffer(Fractals_Handle_D1,0,1,Min_Bars_Or_20,Fractal_D1_h)==0) { Print("CopyBuffer from Fractal_D1_h failed, no data"); return; } if(CopyBuffer(Fractals_Handle_D1,1,1,Min_Bars_Or_20,Fractal_D1_l)==0) { Print("CopyBuffer from Fractal_D1_l failed, no data"); return; } double MaxLvl = 0; double MinLvl = 0; for(int e=Min_Bars_Or_20-1; e>=0; e--) { if(Fractal_D1_h[e]!=EMPTY_VALUE) { MaxLvl=Fractal_D1_h[e]; break; } } for(int e=Min_Bars_Or_20-1; e>=0; e--) // это можно было сделать в одном цикле, но так проще. { if(Fractal_D1_l[e]!=EMPTY_VALUE) { MinLvl=Fractal_D1_l[e]; break; } } string Str_Comment=""; if(MaxLvl==0) Str_Comment="Максимальный уровень не определен"; else Str_Comment="Максимальный уровень "+(string)MaxLvl; if(MinLvl==0) Str_Comment=Str_Comment+"\nМинимальный уровень не определен"; else Str_Comment=Str_Comment+"\nМинимальный уровень "+(string)MinLvl; Comment(Str_Comment); }

- www.mql5.com
В коде есть решение? Я вот этот момент пока не понимаю. Почитал про эти функции нахождения мин и макс значений цены в истории, а вопросов только прибавилось.
Посмотрите канал Дончиана. Описанная технология применяется мной, только делю на 10 зон и период не в 1000, а поменьше....
Кроме того, вхожу именно на покупку и продажу на границах - это стратегия черепах, она трендовая.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Советник не видит Максимальной и Минимальной цены в истории n-количества баров, в результате чего на верхнем ценовом уровне графика может поставить ордер на покупку или наоборот - в нижнем ценовом уровне графика поставить ордер на продажу.
Цена логично идёт в противоположном направлении от экстремумов цены в истории за n-количество баров и накапливает убыток.
Как решить эту проблему?
Идея GEOPRICE позиционирования такая:
1. С помощью фнкций iHigest() и iLowest() определяем расстояние и делим его на 5. (пока пусть будет 5)
Мы получаем 5 уровней или коридоров.
Нас интересует верхний и нижний коридоры:
2. При наличии текущей цены в верхнем коридоре (MAX цена) отправлять все упомянутые ордера на продажу.
3. При текущей цене в нижнем коридоре (MIN цена)- отправлять все упомянутые ордера только на покупку.
Если цена вне верхнего и нижнего коридора, то советник шпарит как обычно и зарабатывает тейкпрофиты))