EventChartCustom / OnChartEvent имеют ограничение на кол-во единовременно переданных событий

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
SemenTalonov
325
SemenTalonov  

Ограничение на кол-во передающихся единовременно (по подряд) кастомных сообщений ровно 1000.

В таком случае, было бы не плохо иметь функцию возвращающую состояние очереди событий, чтобы возобновить передачу при сбое?

//+------------------------------------------------------------------+
//|                                               TestChartEvent.mq5 |
//|                                                              SST |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "SST"
#property version   "1.00"
#property indicator_chart_window

int iEventSend =0, iEventRecv =0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
    while(iEventSend < 1200)
        if(!EventChartCustom(0, 1, iEventSend, 0, "test"))
        {
            printf("First send error on: %i [ERROR: %i]", iEventSend, GetLastError());
            break;
        }
        else
            iEventSend++;

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[])
{
    while(iEventSend < 1200)
        if(!EventChartCustom(0, 1, iEventSend, 0, "test"))
        {
            printf("Send error on: %i [ERROR: %i]", iEventSend, GetLastError());
            break;
        }
        else
            iEventSend++;
            
    Comment(StringFormat("Sended: %i / Received: %i", iEventSend, iEventRecv));
    
return(rates_total);
}
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
    if(id == (CHARTEVENT_CUSTOM + 1))
        iEventRecv++;
}
//+------------------------------------------------------------------+
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий