Я думаю, что для правильной работы индикатора необходимо ArraySetSeries (mf, true) и (ms, true) в OnInit ().
Все операторы
if (flg == 0) / / initialise on first pass { ArrayInitialize (ag, EMPTY_VALUE); ArrayInitialize (bg, EMPTY_VALUE); ArrayInitialize (cg, EMPTY_VALUE); hi = 0; I = 0; trend = 0; flg = 1; }
были бы более эффективны в OnInit (), и не пришлось бы использовать "flg".
Советник относительно ... использования MACD считает, что алгоритм его стратегии упрощается следующим образом:
Открываем покупку: MACDcurrent>MACDprev && MACDcurrent<0; buyed = true.
Закрыть покупку: buyed && MACDcurrent<MACDprev && MACDcurrent>0; buyed = false
Для продажи обратные действия.
Если мы используем SL и TP, когда советник не работает, я могу сказать "покупаю" или "продаю" по тренду (медленная МА) и ждать нового сигнала.
Здравствуйте, я не знаю, почему этот индикатор: madelta_inc.mq5, ничего не рисует, когда я прикрепляю его к графику. Прилагаю изображение, чтобы вы могли видеть, что я говорю. Также я приложил ниже код с изменениями, которые предлагает josemiguel1812, не использовать флаг: 'flg', и перенести часть кода в событие OnInit(). Я не использовал: ArraySetAsSeries (mf, true) и ArraySetAsSeries (ms, true), потому что и 'mf' и 'ms' являются одноэлементными массивами и я думаю, что это изменение не будет иметь эффекта, также MT5 не позволяет использовать эту функцию для статических массивов. Но я хотел бы знать, почему он не рисует линии индикатора? Не могли бы вы попробовать следующий код и протестировать его?
Заранее спасибо, Cyberglassed.
//+------------------------------------------------------------------+ //|madelta_inc | //|Copyright 2013 Winston | //+------------------------------------------------------------------+ #property copyright "Winston 2013" #property version "1.10" #property description "madelta_inc" #property indicator_separate_window #property indicator_buffers 4 #property indicator_plots 3 #property indicator_type1 DRAW_COLOR_LINE #property indicator_color1 White,Yellow,Red #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #property indicator_type2 DRAW_LINE #property indicator_color2 Yellow #property indicator_style2 STYLE_DOT #property indicator_width2 1 #property indicator_type3 DRAW_LINE #property indicator_color3 Red #property indicator_style3 STYLE_DOT #property indicator_width3 1 input double d = 0.00195; //delta input double m = 39.2; //mult input int F = 26; //быстрая скользящая средняя input ENUM_MA_METHOD FM = MODE_SMA; // режим быстрого усреднения input ENUM_APPLIED_PRICE FP = PRICE_WEIGHTED; // режим быстрых цен input int S = 51; // медленная скользящая средняя input ENUM_MA_METHOD SM = MODE_EMA; // медленный средний режим input ENUM_APPLIED_PRICE SP = PRICE_MEDIAN; // медленный ценовой режим int Ms, Mf, trend; double px, hi, lo; double ms[1], mf[1]; double ag[], bg[], cg[], ac[]; //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0, ag, INDICATOR_DATA); ArraySetAsSeries(ag, true); //signal SetIndexBuffer(1, ac, INDICATOR_COLOR_INDEX); ArraySetAsSeries(ac, true); //сигнальный цвет тренда SetIndexBuffer(2, bg, INDICATOR_DATA); ArraySetAsSeries(bg, true); //порог SetIndexBuffer(3, cg, INDICATOR_DATA); ArraySetAsSeries(cg, true); //порог ло ArrayInitialize(ag, EMPTY_VALUE); ArrayInitialize(bg, EMPTY_VALUE); ArrayInitialize(cg, EMPTY_VALUE); hi = 0; lo = 0; trend = 0; Mf = iMA(NULL, PERIOD_H1, F, 0, FM, FP); Ms = iMA(NULL, PERIOD_H1, S, 0, SM, SP); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, // размер массива price[] const int prev_calculated, // бары, обработанные в предыдущем вызове const int begin, // откуда начинаются значимые данные const double &price[]) // массив для вычисления { CopyBuffer(Mf, 0, 0, 1, mf); // быстрое скользящее среднее значение CopyBuffer(Ms, 0, 0, 1, ms); // значение медленной скользящей средней px = pow(m * (mf[0] - ms[0]), 3); //увеличить и перевести в куб разницу if (px > hi) { //определить тенденцию hi = px; lo = hi - d; trend = 1; } if (px < lo) { // с изменением цвета lo = px; hi = lo + d; trend = 2; } ag[0] = px; bg[0] = hi; cg[0] = lo; ac[0] = trend; return (rates_total); } //+------------------------------------------------------------------+
Здравствуйте, я не знаю, почему этот индикатор: madelta_inc.mq5, ничего не рисует, когда я прикрепляю его к графику. Прилагаю изображение, чтобы вы могли видеть, что я говорю. Также я приложил ниже код с изменениями, которые предлагает josemiguel1812, не использовать флаг: 'flg', и перенести часть кода в событие OnInit(). Я не использовал: ArraySetAsSeries (mf, true) и ArraySetAsSeries (ms, true), потому что и 'mf' и 'ms' являются одноэлементными массивами и я думаю, что это изменение не будет иметь эффекта, также MT5 не позволяет использовать эту функцию для статических массивов. Но я хотел бы знать, почему он не рисует линии индикатора? Не могли бы вы попробовать следующий код и протестировать его?
Заранее спасибо, Cyberglassed.
Что вы ожидаете? Устанавливаются только значения индекса 0 буферов индикатора.
Меня немного смущало, что всегда присваивался индекс 0 буферам, поэтому я ожидал, что ArraySetAsSeries как-то влияет на изменение интуитивного поведения, которое можно было бы подумать (наоборот) или что-то в этом роде, я начинающий в mql5. В любом случае, мне пришлось перезагрузить компьютер по другой причине, и я снова попробовал индикатор, и теперь он рисует линии, как я и ожидал в начале. Я прилагаю изображение.
Спасибо, Cyberglassed.
Меня немного смущало то, что буферам всегда присваивался индекс 0, поэтому я ожидал, что ArraySetAsSeries как-то повлияет на изменение интуитивного поведения, которое можно было бы подумать (наоборот) или что-то в этом роде, я начинающий в mql5. В любом случае, мне пришлось перезагрузить компьютер по другой причине, и я снова попробовал индикатор, и теперь он рисует линии, как я и ожидал в начале. Я прилагаю изображение.
Спасибо, Cyberglassed.
Либо код, который вы выполняете, не совпадает с тем, который вы выложили, либо ваш терминал рисует данные, поступающие из каких-то буферов.
Приведенный вами код не может дать такого результата.
Спасибо за ваши комментарии. Возможно, индикатор необычен тем, что он предназначен для работы только с тестером стратегий в режиме визуализации.
В Навигаторе щелкните левой кнопкой мыши на ea, а затем правой кнопкой мыши на test. В Тестере стратегий EURUSD, H1 и поставьте галочку в поле Visulization, а затем Start, индикатор должен появиться.
Дайте мне знать, как вы справитесь.
С наилучшими пожеланиями
Уинстон
Что-то не так с этим советником. Когда я пытаюсь торговать только на одной паре валют, этот советник ничего не делает в течение 2 дней, индикатор иногда показывает сигнал sel и buy в одно и то же время.
Когда я пытаюсь торговать на нескольких парах валют, он делает то же самое, но я заметил, что когда я вручную закрываю позиции, он начинает торговать снова, что-то очень не так с этим советником, что-то блокирует торговлю в Meta Trader 5
Когда я протестировал его в тестере стратегий, все в порядке, но когда я пытаюсь торговать, он только открывает позиции и не закрывает их, мне нужно закрыть их вручную....
Кто-нибудь может это исправить?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Разница двух скользящих средних:
Этот советник был разработан после следующего наблюдения: когда две скользящие средние расходятся и сходятся, то, как правило, перед изменением тренда наблюдается максимальная разница их мгновенных значений.
Разница этих двух скользящих средних усилена нелинейной кубической функцией смещения для того, чтобы отличить ее от большего и меньшего отклонения от нуля. Заключительный шаг является простым дискриминатором уровня с высокими и низкими порогами, который реагирует на главные отклонения прежде, чем сигнализировать об изменении тренда.
Данный советник с настройками по умолчанию показывает хорошие оптимизированные результаты за период последнего Чемпионата на таймфрейме H1 пары EURUSD. Одновременно с этим, как это часто бывает, советнику необходимы различные параметры для достижения оптимальных результатов в разные временные периоды.
Автор: Winston