Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
22.01.2017, 23:04
Лучший ответ
Сообщение от Niral Посмотреть сообщение
к сожалению на сайте не нашел статьи как писать мультитаймфреймовые индикаторы.
На каком сайте вы искали? Посмотрите в эту сторону: https://www.mql5.com/ru/code/mt5/indicators
Сообщение от Niral Посмотреть сообщение
Важен сам принцип, что и где менять чтобы он стал мультитаймфреймовым, к сожалению на сайте не нашел статьи как писать мультитаймфреймовые индикаторы
Интересно, вы умножая периоды MACD на какой-то множитель, получаете значении старшего временного периода? Это где-то примерно справедливо, но не абсолютно. Обычно для этих целей берут значения индикатора того же периода, но другого тайм-фрейма.
23.01.2017, 13:46
Лучший ответ
Спасибо за Ваш отзыв! Т.е Вы считаете использовать множитель- это не верно? Покажите пожалуйста другой метод на примере МАКД, было бы очень интересно.
  • #1 Свернуть

    Мультитаймфреймовый индикатор

    Здравствуйте! Важен сам принцип, что и где менять чтобы он стал мультитаймфреймовым, к сожалению на сайте не нашел статьи как писать мультитаймфреймовые индикаторы.

    Привожу наброски простого индикатора, где при изменении множителя таймфрейма Faktor - должны отображаться стрелки обозначающиее пересечении сигнальной линии МАКД и 0, на соответствующем множителю таймфрейме.

    Стрелки отображаются, но почему то со смещением... Прошу Вашей помощи!

    MQL код:
    //+------------------------------------------------------------------+
    //| Proba4.mq5 |
    //| 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 indicator_chart_window
    #property indicator_buffers 1
    #property indicator_plots 1
    //--- plot Label1
    #property indicator_label1 "Label1"
    #property indicator_type1 DRAW_ARROW
    #property indicator_color1 clrGreen
    #property indicator_style1 STYLE_SOLID
    #property indicator_width1 1
    //--- input parameters
    input int Faktor=1; //Множитель ТФ
    //--- indicator buffers
    double Label1Buffer[];
    //-- служебные массивы
    double SignalBuffer[];

    int Handle;
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int OnInit()
    {
    //--- indicator buffers mapping
    SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
    //--- setting a code from the Wingdings charset as the property of PLOT_ARROW
    PlotIndexSetInteger(0,PLOT_ARROW,233);
    IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

    //AO_Handle=iCustom(NULL,0,"AO_Zotik",Faktor);
    Handle=iMACD(NULL,0,12*Faktor,26*Faktor,9*Faktor,P RICE_CLOSE);
    Print(BarsCalculated(Handle));

    //---
    return(INIT_SUCCEEDED);
    }
    //+------------------------------------------------------------------+
    //| 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 to_copy,limit;
    if(prev_calculated==0)
    {
    limit=1;
    to_copy=rates_total-1;
    if(CopyBuffer(Handle,1,0,rates_total,SignalBuffer) <=0)
    {
    Print("Getting MACD is failed! Error",GetLastError());
    return(0);
    }
    }
    else
    {
    limit=prev_calculated-1;
    to_copy=rates_total-1;
    if(CopyBuffer(Handle,1,0,rates_total,SignalBuffer) <=0)
    {
    Print("Getting MACD is failed! Error",GetLastError());
    return(0);
    }
    }

    for(int i=limit; i<to_copy;i++)
    if(SignalBuffer[i-1] < 0 && SignalBuffer[i] > 0)
    Label1Buffer[i]=high[i];//пересечение на графике
    else
    Label1Buffer[i]=EMPTY_VALUE; //пустое значение
    //--- return value of prev_calculated for next call
    return(rates_total);
    }
    //+------------------------------------------------------------------+
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от Niral Посмотреть сообщение
    к сожалению на сайте не нашел статьи как писать мультитаймфреймовые индикаторы.
    На каком сайте вы искали? Посмотрите в эту сторону: https://www.mql5.com/ru/code/mt5/indicators
    Сообщение от Niral Посмотреть сообщение
    Важен сам принцип, что и где менять чтобы он стал мультитаймфреймовым, к сожалению на сайте не нашел статьи как писать мультитаймфреймовые индикаторы
    Интересно, вы умножая периоды MACD на какой-то множитель, получаете значении старшего временного периода? Это где-то примерно справедливо, но не абсолютно. Обычно для этих целей берут значения индикатора того же периода, но другого тайм-фрейма.
    Реализую за ваши деньги ваши идеи на MQL - mql@fx-prog.ru

    Комментарий

    • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
    • #3 Свернуть

      Спасибо за Ваш отзыв! Т.е Вы считаете использовать множитель- это не верно? Покажите пожалуйста другой метод на примере МАКД, было бы очень интересно.

      Комментарий

      X