индикатор только для сигнала на текущем баре
Results 1 to 5 of 5

Thread: индикатор только для сигнала на текущем баре

  1. #1
    Здравствуй,
    У меня есть скользящий показатель скользящих средних, который выдает предупреждение каждый раз, когда скользящие средние пересекаются.

    Я бы хотел, чтобы индикатор выдавал предупреждение только тогда, когда только что произошел крест (т. Е. На текущем баре). Однако, с этим индикатором, каждый раз, когда я открываю MT4 или переключаюсь между таймфреймами, я получаю предупреждения, хотя крест произошел 2-3 бара назад.

    Вот копия приведенного ниже кода. Большое спасибо.


    #property indior_chart_window
    #property indior_buffers 2
    #property indior_color1 DarkGoldenrod
    #property indior_color2 FireBrick
    double CrossUp [];
    double CrossDown [];
    extern int FasterEMA = 1;
    extern int SlowerEMA = 50;
    extern bool SoundON = true;
    double alertTag;
    двойной контроль = 2147483647;

    // ----------------------------------------------- -------------------
    //| Пользовательская функция инициализации индикатора |
    // ----------------------------------------------- -------------------
    int init ()
    {
    //---- индикаторы
    SetIndexStyle (0, DRAW_ARROW, EMPTY, 1);
    SetIndexArrow (0, 233);
    SetIndexBuffer (0, CrossUp);
    SetIndexStyle (1, DRAW_ARROW, EMPTY, 1);
    SetIndexArrow (1, 234);
    SetIndexBuffer (1, CrossDown);
    //----
    Возвращение (0);
    }
    // ----------------------------------------------- -------------------
    //| Пользовательская функция деинициализации индикатора |
    // ----------------------------------------------- -------------------
    int deinit ()
    {
    //----
    //----
    Возвращение (0);
    }
    // ----------------------------------------------- -------------------
    //| Пользовательская функция итерации индикатора |
    // ----------------------------------------------- -------------------
    int start () {
    int limit, i, counter;
    double speedEMAnow, slowerEMAnow, быстрееEMAprevious, slowerEMArerevious, fastEMAafter, slowerEMAafter;
    double Range, AvgRange;
    int counted_bars = IndiorCounted ();
    //---- проверить возможные ошибки
    if (counted_barslt; 0) return (-1);
    //---- последний подсчитанный балл будет пересчитан
    if (counted_barsgt; 0) counted_bars--;
    предел = Bars-counted_bars;

    для (i = 0; i lt; = limit; i ) {

    Счетчик = я;
    Диапазон = 0;
    AvgRange = 0;
    for (counter = i; counterlt; = i 9; counter )
    {
    AvgRange = AvgRange MathAbs (высокий [счетчик] -Low [счетчик]);
    }
    Диапазон = AvgRange10;

    fastEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
    fastEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
    fastEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
    slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
    slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
    slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);

    if ((быстрееEMAnow gt, slowerEMAnow) (быстрееEMAprevious lt; slowerEMAprevious) (быстрееEMAafter gt; slowerEMAafter)) {
    CrossUp [i] = Low [i] - Диапазон * 0,5;
    }
    else if ((более быстрыйEMAnow lt; slowerEMAnow) (более быстрыйEMAprevious gt; slowerEMAprevious) (быстрее EMAafter lt; slowerEMAafter)) {
    CrossDown [i] = High [i] Range * 0.5;
    }
    if (SoundON == true i == 1 CrossUp [i]] CrossDown [i] alertTag! = Time [0]) {
    Предупреждение (MACD 0 cross DOWN on, Symbol (),, Period ());
    alertTag = Время [0];
    SendNotifiion (MACD 0 cross DOWN on _Symbol);
    }
    if (SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag! = Time [0]) {
    Предупреждение (MACD 0 переходят вверх, Символ (),, Период ());
    alertTag = Время [0];
    SendNotifiion (MACD 0 скрещивается на _Symbol);
    }


    }
    Возвращение (0);
    }

  2. #2
    #property indior_chart_window #property indior_buffers 2 #property indior_color1 DarkGoldenrod #property indior_color2 FireBrick double CrossUp []; double CrossDown []; extern int FasterEMA = 1; extern int SlowerEMA = 50; extern bool SoundON = true; double alertTag; двойной контроль = 2147483647;/ ----------------------------------------------- ------------------- /| Пользовательская функция инициализации индикатора |/ ----------------------------------------------- ------------------- int init () {//---- индикаторы SetIndexStyle (0, DRAW_ARROW, EMPTY, 1); SetIndexArrow (0, 233); SetIndexBuffer (0, CrossUp); SetIndexStyle (1, DRAW_ARROW, EMPTY, 1); SetIndexArrow (1, 234); SetIndexBuffer (1, CrossDown);/---- return (0); }/ ---------------------------------------------- -------------------- /| Пользовательская функция деинициализации индикатора |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| Пользовательская функция итерации индикатора |/ ----------------------------------------------- ------------------- int start () {int limit, i, counter; double speedEMAnow, slowerEMAnow, быстрееEMAprevious, slowerEMArerevious, fastEMAafter, slowerEMAafter; double Range, AvgRange; int counted_bars = IndiorCounted ();/---- проверить возможные ошибки if (counted_barslt; 0) return (-1);/---- последний подсчитанный балл будет пересчитан if (counted_barsgt; 0) counted_bars--; предел = Bars-counted_bars; для (i = 0; i lt; = limit; i ) {counter = i; Диапазон = 0; AvgRange = 0; for (counter = i; counterlt; = i 9; counter ) {AvgRange = AvgRange MathAbs (High [counter] -Low [counter]); } Диапазон = AvgRange10; fastEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i); fastEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1); fastEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1); slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i); slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1); slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1); if ((быстрееEMAnow gt, slowerEMAnow) (быстрееEMAprevious lt; slowerEMAprevious) (быстрееEMAafter gt; slowerEMAafter)) {CrossUp [i] = Low [i] - Range * 0.5; } else if ((более быстрыйEMAnow lt; slowerEMAnow) (быстрееEMAprevious gt; slowerEMAprevious) (быстрееEMAafter lt; slowerEMAafter)) {CrossDown [i] = High [i] Range * 0.5; } if (SoundON == true i == 1 CrossUp [0] gt; CrossDown [0] alertTag! = Time [0]) {Предупреждение (MACD 0 cross DOWN on, Symbol (),, Period ()); alertTag = Время [0]; SendNotifiion (MACD 0 cross DOWN on _Symbol); } if (SoundON == true i == 1 CrossUp [0] lt; CrossDown [0] alertTag! = Time [0]) {Предупреждение (MACD 0 перекрестно, Символ (),, Период ()); alertTag = Время [0]; SendNotifiion (MACD 0 скрещивается на _Symbol); }} return (0); }

  3. #3
    Я думаю, что эта ветка имеет ответ
    https://www.russia-forex.ru/forex-ma...-breakout.html

  4. #4
    это macd перекрестный

  5. #5

    Quote Originally Posted by ;
    это macd перекрестный
    Для индикатора вы можете установить любые 2 скользящих средних. 12 и 26 крест представляет собой пересечение линии 0 на MACD.

Действующие разрешения

  • Вы не можете создавать новые темы
  • Вы не можете размещать ответы
  • Вы не можете использовать вложения
  • Вы не можете редактировать ваши записи
  •  
  • BB-код - Вкл.
  • Смайлики - Вкл.
  • Код [IMG] - Вкл.
  • Код [VIDEO] - Вкл.
  • HTML-код - Выкл.
Веб-сайт использует cookies
Веб-сайт использует cookies, в настоящее время некоторые из них уже установлены. Вы можете ознакомиться с более подробной информацией об использовании нами cookies здесь. Чтобы принять условия использования cookies, пожалуйста, нажмите на кнопку справа. Если вы продолжаете пользоваться веб-сайтом, вы по умолчанию принимаете условия использования cookies.