Сомнения были и помоему не зря. При построении линий теряется один бар , самый первый при смене направления ADX. Буфер, условие которого не выполняется, прекращает рисовать, причем с предыдущего значения по текущее, а другой у которого выполняется условие начнет рисовать только с текущего. В результате выпадает бар при смене направления. А если происходит на следующем баре обратное изменение направления то теряется и следующий! Вобщем ерунда какая то. Попробовал запускать цикл из прошлого все равно таже картина.
Вопрос не только в построении линий - это, в принципе, визуально легко "рихтуется" по истории. Кстати, для корректной работы МА по 2-м условиям нужно 3 буфера: нужно еще выделить случай равенства условий. То есть не if (>) else как у Вас, а if(>) else if(<) else. И лучше ввести некоторый порог (допустимую ошибку) для сравнения значений.
Индикатор-то нужен не для того, чтоб рисовать, а для принятия решения на открытие позиции. Тогда основным вопросом будет когда, то есть в какой момент времени, на текущем, нулевом, баре (любого, внутреннего по отношению к 4-х часовому, таймфрема ) трейдер получит надежно такой же сигнал, какой видит по истории.
Ответ очевиден, увы, не для всех трейдеров: такой сигнал трейдер получит только тогда, когда используемая цена будет в точности такой как на истории
То есть, если смотреть на этот индикатор: используется цена закрытия 4-х часового бара. Следовательно, после закрытия нулевого бара по 4-х часовому т\ф, когда цена закрытия бара перестанет меняться и станет достоверно известной, Вы ее и получите. То есть, в аккурат с открытием нового 4-х часового бара - когда появится новый нулевой бар, а текущий станет 1-м. Вот тогда все сигналы на меньших таймфреймах станут такими, как Вы их увидите по истории.
Или нужно использовать единственную достоверно известную цену нулевого бара - цену его открытия. Боюсь, результат в этом случае Вас разочарует ;).
Вопрос не только в построении линий - это, в принципе, визуально легко "рихтуется" по истории. Кстати, для корректной работы МА по 2-м условиям нужно 3 буфера: нужно еще выделить случай равенства условий. То есть не if (>) else как у Вас, а if(>) else if(<) else. И лучше ввести некоторый порог (допустимую ошибку) для сравнения значений.
Индикатор-то нужен не для того, чтоб рисовать, а для принятия решения на открытие позиции. Тогда основным вопросом будет когда, то есть в какой момент времени, на текущем, нулевом, баре (любого, внутреннего по отношению к 4-х часовому, таймфрема ) трейдер получит надежно такой же сигнал, какой видит по истории.
Ответ очевиден, увы, не для всех трейдеров: такой сигнал трейдер получит только тогда, когда используемая цена будет в точности такой как на истории.
То есть, если смотреть на этот индикатор: используется цена закрытия 4-х часового бара. Следовательно, после закрытия нулевого бара по 4-х часовому т\ф, когда цена закрытия бара перестанет меняться и станет достоверно известной, Вы ее и получите. То есть, в аккурат с открытием нового 4-х часового бара - когда появится новый нулевой бар, а текущий станет 1-м. Вот тогда все сигналы на меньших таймфреймах станут такими, как Вы их увидите по истории.
Или нужно использовать единственную достоверно известную цену нулевого бара - цену его открытия. Боюсь, результат в этом случае Вас разочарует ;).
Буферов изначально было 4, это я сейчас упростил. Я ставил себе задачу как раз не "рихтовать" линию а поймать тренд в самом начале (пусть с задержкой) А по четырех часовой ADX он как то заметней и потом он в течении дня очень часто не меняется. В советнике для принятия решения я использую меньший таймфрейм когда на четырех часовом есть сигнал. А как выяснилось у меня не получается от ADX получить даже задержанный сигнал.
То, что Вы анализируете - это только часть сигнала. Смотрите https://ta.mql4.com/ru/indicators/trends/average_directional_movement
Спасибо за ссылку, я в курсе, что это только часть) но как мне кажется она первостепенная, а +DI и -DI можно заменить и на скользящую среднюю на малом таймфрейме, но при условии что ADX растет.
А еще меня интересует как же все таки в момент закрытия нулевого бара по 4-х часовому т\ф, когда он станет первым, получить все таки сигнал - больше он второго или нет. Уже голову сломал. Не пойму почему он его пропускает? Советник все равно анализирует не нулевой бар, а первый.
Спасибо за ссылку, я в курсе, что это только часть) но как мне кажется она первостепенная, а +DI и -DI можно заменить и на скользящую среднюю на малом таймфрейме, но при условии что ADX растет.
А еще меня интересует как же все таки в момент закрытия нулевого бара по 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//---- Параметры индикатораexternint Period_MA=21;
externint Mode_MA=1; // 0-SMA, 1-EMA, 2-SMMA, 3-LWMAexternint Shift_MA=0;
externint Time_ADX=240;
externint ADX_period=14;
//---- Буферы для индикатораdouble MA_1[];
double MA_2[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- drawing settingsIndicatorDigits(Digits+1);
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
//---- indicator buffers mappingSetIndexBuffer(0,MA_1);
SetIndexBuffer(1,MA_2);
//---- name for DataWindow and indicator subwindow labelIndicatorShortName("MA_(ADX)");
SetIndexLabel(0,"ADX растет");
SetIndexLabel(1,"ADX падает");
//---- initialization donereturn(0);
}
//+------------------------------------------------------------------+int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recountedif(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);
}
//---- donereturn(0);
}
Вот скрин:
На графике М15 слева от вертикальной линии - синяя "загогулина", которой нет на H4. И на нулевом и первом баре того же М15 появляется синий "крючек". Хотя на H4 ADX продолжает расти. Откуда это берется и как исправить я не знаю. Если кто может помочь прошу откликнитесь на мою просьбу!
Товарищи и господа програмисты, пожалуйста помогите с кодом индикатора! Я вовсе не прошу обсудить выбраную мной стратегию, просто прошу помощи найти ошибку в коде!!! Линии индикатора должны в точности повторяться на промежутках времени с любым тф. Если на графике H4 линия окрасилась в красный то и на любых меньших она должна повторять это без своих фонтазий!
Вот код индикатора:
Вот скрин:
На графике М15 слева от вертикальной линии - синяя "загогулина", которой нет на H4. И на нулевом и первом баре того же М15 появляется синий "крючек". Хотя на H4 ADX продолжает расти. Откуда это берется и как исправить я не знаю. Если кто может помочь прошу откликнитесь на мою просьбу!
Ошибка прежняя - для т\ф, меньших 4-часов, количество баров должно быть больше. Разве в 4-х часах один 30, 15, 5 минутный, например, бар? А у Вас количество баров одинаково. Вопрос контрольный: сколько кодов рабочих мультитаймфреймовых индикаторов Вы посмотрели ? Их в базе кодов - вагон.
Ошибка прежняя - для т\ф, меньших 4-часов, количество баров должно быть больше. Разве в 4-х часах один 30, 15, 5 минутный, например, бар? А у Вас количество баров одинаково. Вопрос контрольный: сколько кодов рабочих мультитаймфреймовых индикаторов Вы посмотрели ? Их в базе кодов - вагон.
Я понял так, что нужно найти мультифреймовый индикатор ADX, а технический ADX для моего случая не подходит?
Сомнения были и помоему не зря. При построении линий теряется один бар , самый первый при смене направления ADX. Буфер, условие которого не выполняется, прекращает рисовать, причем с предыдущего значения по текущее, а другой у которого выполняется условие начнет рисовать только с текущего. В результате выпадает бар при смене направления. А если происходит на следующем баре обратное изменение направления то теряется и следующий! Вобщем ерунда какая то. Попробовал запускать цикл из прошлого все равно таже картина.
Вопрос не только в построении линий - это, в принципе, визуально легко "рихтуется" по истории. Кстати, для корректной работы МА по 2-м условиям нужно 3 буфера: нужно еще выделить случай равенства условий. То есть не if (>) else как у Вас, а if(>) else if(<) else. И лучше ввести некоторый порог (допустимую ошибку) для сравнения значений.
Индикатор-то нужен не для того, чтоб рисовать, а для принятия решения на открытие позиции. Тогда основным вопросом будет когда, то есть в какой момент времени, на текущем, нулевом, баре (любого, внутреннего по отношению к 4-х часовому, таймфрема ) трейдер получит надежно такой же сигнал, какой видит по истории.
Ответ очевиден, увы, не для всех трейдеров: такой сигнал трейдер получит только тогда, когда используемая цена будет в точности такой как на истории
То есть, если смотреть на этот индикатор: используется цена закрытия 4-х часового бара. Следовательно, после закрытия нулевого бара по 4-х часовому т\ф, когда цена закрытия бара перестанет меняться и станет достоверно известной, Вы ее и получите. То есть, в аккурат с открытием нового 4-х часового бара - когда появится новый нулевой бар, а текущий станет 1-м. Вот тогда все сигналы на меньших таймфреймах станут такими, как Вы их увидите по истории.
Или нужно использовать единственную достоверно известную цену нулевого бара - цену его открытия. Боюсь, результат в этом случае Вас разочарует ;).
Вопрос не только в построении линий - это, в принципе, визуально легко "рихтуется" по истории. Кстати, для корректной работы МА по 2-м условиям нужно 3 буфера: нужно еще выделить случай равенства условий. То есть не if (>) else как у Вас, а if(>) else if(<) else. И лучше ввести некоторый порог (допустимую ошибку) для сравнения значений.
Индикатор-то нужен не для того, чтоб рисовать, а для принятия решения на открытие позиции. Тогда основным вопросом будет когда, то есть в какой момент времени, на текущем, нулевом, баре (любого, внутреннего по отношению к 4-х часовому, таймфрема ) трейдер получит надежно такой же сигнал, какой видит по истории.
Ответ очевиден, увы, не для всех трейдеров: такой сигнал трейдер получит только тогда, когда используемая цена будет в точности такой как на истории.
То есть, если смотреть на этот индикатор: используется цена закрытия 4-х часового бара. Следовательно, после закрытия нулевого бара по 4-х часовому т\ф, когда цена закрытия бара перестанет меняться и станет достоверно известной, Вы ее и получите. То есть, в аккурат с открытием нового 4-х часового бара - когда появится новый нулевой бар, а текущий станет 1-м. Вот тогда все сигналы на меньших таймфреймах станут такими, как Вы их увидите по истории.
Или нужно использовать единственную достоверно известную цену нулевого бара - цену его открытия. Боюсь, результат в этом случае Вас разочарует ;).
А как выяснилось у меня не получается от ADX получить даже задержанный сигнал.
То, что Вы анализируете - это только часть сигнала. Смотрите https://ta.mql4.com/ru/indicators/trends/average_directional_movement
То, что Вы анализируете - это только часть сигнала. Смотрите https://ta.mql4.com/ru/indicators/trends/average_directional_movement
Спасибо за ссылку, я в курсе, что это только часть) но как мне кажется она первостепенная, а +DI и -DI можно заменить и на скользящую среднюю на малом таймфрейме, но при условии что ADX растет.
Вот еще ссылка http://forexvst.narod2.ru/torgovaya_strategiya_6/index.html Тоже интересно. Эту стратегию, с небольшими изменениями я и пытаюсь воплотить в советнике.
А еще меня интересует как же все таки в момент закрытия нулевого бара по 4-х часовому т\ф, когда он станет первым, получить все таки сигнал - больше он второго или нет. Уже голову сломал. Не пойму почему он его пропускает? Советник все равно анализирует не нулевой бар, а первый.
Блин, у меня уже аллергия на "люди добрые"... "приехали на лечение"... "украли все документы"...
Не нервничай, ВСЕ БУДЕТ ХОРОШО!
Спасибо за ссылку, я в курсе, что это только часть) но как мне кажется она первостепенная, а +DI и -DI можно заменить и на скользящую среднюю на малом таймфрейме, но при условии что ADX растет.
Вот еще ссылка http://forexvst.narod2.ru/torgovaya_strategiya_6/index.html Тоже интересно. Эту стратегию, с небольшими изменениями я и пытаюсь воплотить в советнике.
А еще меня интересует как же все таки в момент закрытия нулевого бара по 4-х часовому т\ф, когда он станет первым, получить все таки сигнал - больше он второго или нет. Уже голову сломал. Не пойму почему он его пропускает? Советник все равно анализирует не нулевой бар, а первый.
Товарищи и господа програмисты, пожалуйста помогите с кодом индикатора! Я вовсе не прошу обсудить выбраную мной стратегию, просто прошу помощи найти ошибку в коде!!! Линии индикатора должны в точности повторяться на промежутках времени с любым тф. Если на графике H4 линия окрасилась в красный то и на любых меньших она должна повторять это без своих фонтазий!
Вот код индикатора:
Вот скрин:
На графике М15 слева от вертикальной линии - синяя "загогулина", которой нет на H4. И на нулевом и первом баре того же М15 появляется синий "крючек". Хотя на H4 ADX продолжает расти. Откуда это берется и как исправить я не знаю. Если кто может помочь прошу откликнитесь на мою просьбу!
Товарищи и господа програмисты, пожалуйста помогите с кодом индикатора! Я вовсе не прошу обсудить выбраную мной стратегию, просто прошу помощи найти ошибку в коде!!! Линии индикатора должны в точности повторяться на промежутках времени с любым тф. Если на графике H4 линия окрасилась в красный то и на любых меньших она должна повторять это без своих фонтазий!
Вот код индикатора:
Вот скрин:
На графике М15 слева от вертикальной линии - синяя "загогулина", которой нет на H4. И на нулевом и первом баре того же М15 появляется синий "крючек". Хотя на H4 ADX продолжает расти. Откуда это берется и как исправить я не знаю. Если кто может помочь прошу откликнитесь на мою просьбу!
Ошибка прежняя - для т\ф, меньших 4-часов, количество баров должно быть больше. Разве в 4-х часах один 30, 15, 5 минутный, например, бар? А у Вас количество баров одинаково. Вопрос контрольный: сколько кодов рабочих мультитаймфреймовых индикаторов Вы посмотрели ? Их в базе кодов - вагон.
Ошибка прежняя - для т\ф, меньших 4-часов, количество баров должно быть больше. Разве в 4-х часах один 30, 15, 5 минутный, например, бар? А у Вас количество баров одинаково. Вопрос контрольный: сколько кодов рабочих мультитаймфреймовых индикаторов Вы посмотрели ? Их в базе кодов - вагон.
Я понял так, что нужно найти мультифреймовый индикатор ADX, а технический ADX для моего случая не подходит?