Помогите люди добрые. Дайте совет где я ошибаюсь. - страница 2

 
Lomov:

Сомнения были и помоему не зря. При построении линий теряется один бар , самый первый при смене направления ADX. Буфер, условие которого не выполняется, прекращает рисовать, причем с предыдущего значения по текущее, а другой у которого выполняется условие начнет рисовать только с текущего. В результате выпадает бар при смене направления. А если происходит на следующем баре обратное изменение направления то теряется и следующий! Вобщем ерунда какая то. Попробовал запускать цикл из прошлого все равно таже картина.  

 


Вопрос не только в построении линий - это, в принципе, визуально легко "рихтуется" по истории. Кстати, для корректной работы МА по 2-м условиям нужно 3 буфера: нужно еще выделить случай равенства  условий. То есть не if (>) else  как у Вас, а if(>) else if(<) else. И лучше ввести некоторый порог (допустимую ошибку) для сравнения значений.

Индикатор-то нужен не для того, чтоб рисовать, а для принятия решения на открытие позиции. Тогда основным вопросом будет когда, то есть в какой момент времени, на текущем, нулевом, баре (любого, внутреннего по отношению к 4-х часовому, таймфрема ) трейдер получит надежно такой же сигнал, какой видит по истории.

Ответ очевиден, увы, не для всех трейдеров: такой сигнал трейдер получит только тогда, когда используемая цена будет в точности такой как на истории 

То есть, если смотреть на этот индикатор: используется цена закрытия 4-х часового бара. Следовательно, после закрытия нулевого бара по 4-х часовому т\ф, когда цена закрытия бара перестанет меняться и станет достоверно известной, Вы ее и получите. То есть, в аккурат с открытием нового 4-х часового бара - когда появится новый нулевой бар, а текущий станет 1-м. Вот тогда все сигналы на меньших таймфреймах станут такими, как Вы их увидите по истории.

Или нужно использовать единственную достоверно известную цену нулевого бара - цену его открытия. Боюсь, результат в этом случае Вас разочарует ;).

 
VladislavVG:


Вопрос не только в построении линий - это, в принципе, визуально легко "рихтуется" по истории. Кстати, для корректной работы МА по 2-м условиям нужно 3 буфера: нужно еще выделить случай равенства  условий. То есть не if (>) else  как у Вас, а if(>) else if(<) else. И лучше ввести некоторый порог (допустимую ошибку) для сравнения значений.

Индикатор-то нужен не для того, чтоб рисовать, а для принятия решения на открытие позиции. Тогда основным вопросом будет когда, то есть в какой момент времени, на текущем, нулевом, баре (любого, внутреннего по отношению к 4-х часовому, таймфрема ) трейдер получит надежно такой же сигнал, какой видит по истории.

Ответ очевиден, увы, не для всех трейдеров: такой сигнал трейдер получит только тогда, когда используемая цена будет в точности такой как на истории.

То есть, если смотреть на этот индикатор: используется цена закрытия 4-х часового бара. Следовательно, после закрытия нулевого бара по 4-х часовому т\ф, когда цена закрытия бара перестанет меняться и станет достоверно известной, Вы ее и получите. То есть, в аккурат с открытием нового 4-х часового бара - когда появится новый нулевой бар, а текущий станет 1-м. Вот тогда все сигналы на меньших таймфреймах станут такими, как Вы их увидите по истории.

Или нужно использовать единственную достоверно известную цену нулевого бара - цену его открытия. Боюсь, результат в этом случае Вас разочарует ;).

Буферов изначально было 4, это я сейчас упростил. Я ставил себе задачу как раз не "рихтовать" линию а поймать тренд в самом начале (пусть с задержкой) А по четырех часовой ADX он как то заметней и потом он в течении дня очень часто не меняется. В советнике для принятия решения я использую меньший таймфрейм когда на четырех часовом есть сигнал. А как выяснилось у меня не получается от ADX получить даже задержанный сигнал.
 
Lomov:
 А как выяснилось у меня не получается от ADX получить даже задержанный сигнал.


То, что Вы анализируете - это только часть сигнала. Смотрите https://ta.mql4.com/ru/indicators/trends/average_directional_movement
 
VladislavVG:

То, что Вы анализируете - это только часть сигнала. Смотрите https://ta.mql4.com/ru/indicators/trends/average_directional_movement


Спасибо за ссылку, я в курсе, что это только часть) но как мне кажется она первостепенная, а +DI и -DI можно заменить и на скользящую среднюю на малом таймфрейме, но при условии что ADX растет.

 Вот еще ссылка http://forexvst.narod2.ru/torgovaya_strategiya_6/index.html Тоже интересно. Эту стратегию, с небольшими изменениями я и пытаюсь воплотить в советнике. 

А еще меня интересует как же все таки в момент закрытия нулевого бара по 4-х часовому т\ф, когда он станет первым, получить все таки сигнал - больше он второго или нет. Уже голову сломал. Не пойму почему он его пропускает? Советник все равно анализирует не нулевой бар, а первый.

 
Блин, у меня уже аллергия на "люди добрые"... "приехали на лечение"... "украли все документы"...
 
Joker:
Блин, у меня уже аллергия на "люди добрые"... "приехали на лечение"... "украли все документы"...

Не нервничай, ВСЕ БУДЕТ ХОРОШО!
 
Lomov:


Спасибо за ссылку, я в курсе, что это только часть) но как мне кажется она первостепенная, а +DI и -DI можно заменить и на скользящую среднюю на малом таймфрейме, но при условии что ADX растет.

 Вот еще ссылка http://forexvst.narod2.ru/torgovaya_strategiya_6/index.html Тоже интересно. Эту стратегию, с небольшими изменениями я и пытаюсь воплотить в советнике. 

А еще меня интересует как же все таки в момент закрытия нулевого бара по 4-х часовому т\ф, когда он станет первым, получить все таки сигнал - больше он второго или нет. Уже голову сломал. Не пойму почему он его пропускает? Советник все равно анализирует не нулевой бар, а первый.

Упомянутая Вами система рассматривает тенденцию на некотором промежутке времени, а Вы в коде проверяете ТОЛЬКО "частный случай" (сравниваете два бара). Результаты такого подхода будут различаться от ожидаемых.
 

Товарищи и господа програмисты, пожалуйста помогите с кодом индикатора! Я вовсе не прошу обсудить выбраную мной стратегию, просто прошу помощи найти ошибку в коде!!! Линии индикатора должны в точности повторяться на промежутках времени с любым тф. Если на графике H4 линия окрасилась в красный то и на любых меньших она должна повторять это без своих фонтазий!

Вот код индикатора:

//---- Установки индикатора
#property  indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  Blue

#property  indicator_width1  3
#property  indicator_width2  3

//---- Параметры индикатора
extern int Period_MA=21;
extern int Mode_MA=1;   // 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
extern int Shift_MA=0;
extern int Time_ADX=240;
extern int ADX_period=14;
//---- Буферы для индикатора
double     MA_1[];
double     MA_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorDigits(Digits+1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
//---- indicator buffers mapping
   SetIndexBuffer(0,MA_1);
   SetIndexBuffer(1,MA_2);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("MA_(ADX)");
   SetIndexLabel(0,"ADX растет");
   SetIndexLabel(1,"ADX падает");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   
// Первый буфер
// Рисуется при условии растущей ADX 
   for(int i=limit; i>0; i--)
   {
      int li_Bar = iBarShift (NULL, Time_ADX, Time[i]);
      if (iADX ( NULL, Time_ADX, ADX_period, PRICE_CLOSE, MODE_MAIN, li_Bar) <= iADX (NULL, Time_ADX, ADX_period, PRICE_CLOSE, MODE_MAIN, li_Bar-1))   
         MA_1[i]=iMA(NULL,0,Period_MA,Shift_MA,Mode_MA,PRICE_CLOSE,i);
         else
// Вторй буфер
// Рисуется при условии падающей ADX
            MA_2[i]=iMA(NULL,0,Period_MA,Shift_MA,Mode_MA,PRICE_CLOSE,i);

   }      
   //---- done
   return(0);
  }

 

Вот скрин:

 

 На графике М15 слева от вертикальной линии - синяя "загогулина", которой нет на H4. И на нулевом и первом баре того же М15 появляется синий "крючек". Хотя на H4 ADX продолжает расти. Откуда это берется и как исправить я не знаю. Если кто может помочь прошу откликнитесь на мою просьбу!

 
Lomov:

Товарищи и господа програмисты, пожалуйста помогите с кодом индикатора! Я вовсе не прошу обсудить выбраную мной стратегию, просто прошу помощи найти ошибку в коде!!! Линии индикатора должны в точности повторяться на промежутках времени с любым тф. Если на графике H4 линия окрасилась в красный то и на любых меньших она должна повторять это без своих фонтазий!

Вот код индикатора:

 

Вот скрин:

 

 На графике М15 слева от вертикальной линии - синяя "загогулина", которой нет на H4. И на нулевом и первом баре того же М15 появляется синий "крючек". Хотя на H4 ADX продолжает расти. Откуда это берется и как исправить я не знаю. Если кто может помочь прошу откликнитесь на мою просьбу!


Ошибка прежняя - для т\ф, меньших 4-часов, количество баров должно быть больше. Разве в 4-х часах один 30, 15, 5 минутный, например, бар? А у Вас количество баров одинаково.  Вопрос контрольный: сколько кодов рабочих мультитаймфреймовых индикаторов Вы посмотрели ? Их в базе кодов - вагон.
 
VladislavVG:

Ошибка прежняя - для т\ф, меньших 4-часов, количество баров должно быть больше. Разве в 4-х часах один 30, 15, 5 минутный, например, бар? А у Вас количество баров одинаково.  Вопрос контрольный: сколько кодов рабочих мультитаймфреймовых индикаторов Вы посмотрели ? Их в базе кодов - вагон.


Я понял так, что нужно найти мультифреймовый индикатор ADX, а технический ADX для моего случая не подходит? 

Причина обращения: