Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
18.07.2016, 17:48
Лучший ответ
Накопленные выплаты: 209 RUB
Сообщение от UniFace Посмотреть сообщение
Куда мне копануть
В первую очередь в справку. Например по iMAOnArray().
  • #1 Свернуть

    Как добавить усреднение в индикатор

    Усреднить значения в индикаторе
    Пытаюсь запилить индикатор по своей задумке, но я только изучаю mql и пока без помощи тяжеловато, должное понимание процесса еще не пришло...

    Есть код:

    MQL код:

    //+------------------------------------------------------------------+
    //| MarketGOD_Indicators.mq4 |
    //| Copyright 2016, MetaQuotes Software Corp. |
    //| [url]https://www.mql5.com[/url] |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2016, MetaQuotes Software Corp."
    #property link "https://www.mql5.com"
    #property version "1.00"
    #property strict
    #property indicator_chart_window // Индикатор рисуется в основном окне
    #property indicator_buffers 1 // Количество буферов
    #property indicator_color1 Green // Цвет первой линии
    #property indicator_width1 2 // Толщина линии

    double Buf_0[]; // Объявление массивов(под буферы индикатора)
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int OnInit() // Специальная функция OnInit()
    {
    //--- indicator buffers mapping
    SetIndexBuffer(0, Buf_0); // Назначение массива буферу
    SetIndexStyle (0, DRAW_SECTION); // Стиль линии
    //---
    return(INIT_SUCCEEDED); // Выход из спец. ф-ии init()
    }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function |
    //+------------------------------------------------------------------+
    int OnCalculate(const int rates_total,
    const int prev_calculated,
    const datetime &time[],
    const double &open[],
    const double &high[],
    const double &low[],
    const double &close[],
    const long &tick_volume[],
    const long &volume[],
    const int &spread[])
    {
    //+------------------------------------------------------------------+
    int i,
    limit = prev_calculated == 0 // Переменной limit, при условии что prev_calculated равно нулю
    ? rates_total-1 // будет присвоено значение rates_total(количество баров в окне) минус 1
    : prev_calculated; // иначе будет присвоено prev_calculated(количество не посчитанных баров

    for(i = 0; i < limit; i++) // цикл
    {
    if(open[i] < close[i])
    {
    Buf_0[i] = (high[i]+low[i]+open[i]+close[i])/4.0; /* тут должна быть ваша котировка получившаяся после ваших расчетов на этом баре*/
    }
    else if(open[i] > close[i])
    {
    Buf_0[i] = EMPTY_VALUE; /* тут должна быть ваша котировка получившаяся после ваших расчетов на этом баре*/
    }
    else //если будет равно то управление перейдет в этот блок
    {
    Buf_0[i] = EMPTY_VALUE; /* тут должна быть ваша котировка получившаяся после ваших расчетов на этом баре*/
    }
    }
    return(rates_total);
    }
    //+---


    Нужно усреднить получаемые значения для вывода на график (то есть по принципу EMA). Куда мне копануть, можно без вывода поля в настройках, чисто в коде прописать "усреднять на 2,3,4,5" по выбору то есть. Заранее благодарность за подсказку!
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от UniFace Посмотреть сообщение
    Куда мне копануть
    В первую очередь в справку. Например по iMAOnArray().

    Комментарий

    X