Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2535

 
Vitaly Muzichenko #:

Спасибо, Я и не подумал искать в double

Вроде же в процентах считается, а не в пикселях. А это вещественные значения.

 
Artyom Trishkin #:

Вроде же в процентах считается, а не в пикселях. А это вещественные значения.

Ожидал отступ в фиксированных барах, но это не так.

Цена налазит на панель, панель фиксированного размера, так что отступ в процентах - функция не полноценная. 

P.S. Нужно делать дополнительный расчёты, чтобы её применить. Пока откажусь от применения.
 

Здравствуйте, скажите пожалуйста что не так с кодом, он не компилируется пишет синтактическая ошибка, задача кода построить скользящую среднюю с периодом 21 и сдвиг 13 по формуле (open+high+low+close)/4 :

//+------------------------------------------------------------------+
//|                                                         MyMA.mq5 |
//|                                  Copyright 2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Blue

//--- Input parameters
input int InpPeriod = 21;      // Period of the moving average
input int InpShift = 13;       // Shift of the moving average

//--- Indicator buffers
double ExtBuffer[];            // Buffer for the moving average

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
    // Set up the indicator buffer
    SetIndexBuffer(0, ExtBuffer);
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, clrBlue);

    // Set the indicator label
    IndicatorSetString(INDICATOR_SHORTNAME, "Custom MA");

    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[])
{
    // Check if there are enough bars to calculate the indicator
    if (rates_total < InpPeriod + InpShift)
        return(rates_total);

    // Start from the last calculated bar or the first valid bar
    int start = MathMax(prev_calculated, InpPeriod + InpShift);

    // Calculate the custom moving average
    for (int i = start; i < rates_total; i++)
    {
        double sum = 0.0;
        int count = 0;

        // Calculate the sum of the average prices for the specified period
        for (int j = 0; j < InpPeriod; j++)
        {
            int index = i - j - InpShift;
            if (index >= 0)
            {
                double avg_price = (open[index] + high[index] + low[index] + close[index]) / 4.0;
                sum += avg_price;
                count++;
            }
        }

        // Store the result in the buffer
        if (count > 0)
            ExtBuffer[i] = sum / count;
        else
            ExtBuffer[i] = 0.0;
    }

    return(rates_total);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
    // Nothing to do here
}
 
Fr0stikov #:

Здравствуйте, скажите пожалуйста что не так с кодом, он не компилируется пишет синтактическая ошибка, задача кода построить скользящую среднюю с периодом 21 и сдвиг 13 по формуле (open+high+low+close)/4 :

Покажите ошибку из журнала.
 
Tretyakov Rostyslav #:
Покажите ошибку из журнала.

Скриншот ошибок.

Файлы:
[Удален]  
Tretyakov Rostyslav #:
Покажите ошибку из журнала.
Здравствуйте . Подскажите пожалуйста как исправить данную ошибку? 
 
Fr0stikov #:
SetIndexStyle(

В MQL5 нет SetIndexStyle

//--- задать рисование линии 
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); 
//--- задание стиля для рисования линии 
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT); 
//--- задание цвета линии 
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed); 
//--- задание толщины линии 
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1); 
//--- задание метки для линии 
   PlotIndexSetString(0,PLOT_LABEL,"Moving Average"); 
//--- 
 
0_SmertiX_0 #:
Здравствуйте . Подскажите пожалуйста как исправить данную ошибку? 
Там все написано, неправильные стопы!
 
Tretyakov Rostyslav #:

В MQL5 нет SetIndexStyle

А можете написать на что нужно изменить и оставшийся код корректно написан, можете помочь ?

 
Fr0stikov #:

А можете написать на что нужно изменить и оставшийся код корректно написан, можете помочь ?

Я же Вам написал, осталось вставить свои значения