DLL на Metatrader 4 не обновляется с помощью входящих тиков - PullRequest
1 голос
/ 27 июня 2011

Я написал простую DLL как часть пользовательского индикатора для Metatrader 4, который называется так:

int start( ) {
    double Rates[][6];
    int MaximumRecords = ArrayCopyRates( Rates, Symbol(), 0 ); 

    for( int zz = MaximumRecords; zz >= 0; zz-- ) { 
        OutPut[zz] = EMPTY; 
    }

    GetSMAArray( Rates, MaximumRecords, Periods, OutPut );

    return(0); 
}

Это прекрасно работает, поскольку оно строит графики, как и ожидалось, на графике, но, к сожалению, оно не обновляется новыми поступающими тиками - оно просто отображает исходный вызов. Какой дополнительный код я могу добавить, чтобы обновлять DLL с помощью входящих тиков? Почти во всех моих поисках были найдены варианты использования

ExtCountedBars = IndicatorCounted();

чтобы заставить цикл while вычислять, но все они применяются к вычислениям, содержащимся в самом файле .mq4. Я хочу заставить DLL пересчитать. Во-вторых, я бы хотел, чтобы этот пересчет происходил только по завершении бара, а не по прибытии всех и каждого тика.

1 Ответ

1 голос
/ 21 сентября 2011

Единственное, что нужно для нового бара, - это сохранить информацию о времени последнего бара (Bars [0]) в переменной, и если она изменилась, это означает, что появился новый бар.

datetime lastBarDateTime;

int start(){
    if(Time[0]==lastBarDateTime)
    return(0);

    lastBarDateTime = Time[0];

    // codes to run on a new bar ...
}

Что касается DLL, я на самом деле не мог понять, где вы используете DLL в этом коде.

...