Общий результат MQL4 от индикатора Multi-timeFrame

Всем доброго вечера,

может ли кто-нибудь показать мне, как получить общий результат от индикатора MTF, например, если MACD:

M1 = покупка, M5 = продажа, M15= продажа, M30= покупка, H1 = покупка, H4 = покупка, D1 = покупка,

Общий результат = 5 покупок и 2 продаж

Как реализовать это в коде MQL4? Спасибо за все ваши ответы.


person user3869115    schedule 04.10.2014    source источник
comment
Не хватает некоторых кусочков. Определите количественно точный метод, с помощью которого индикатор Multi-TimeFrame по вашему желанию решает, при каких обстоятельствах он сообщает (на одном таймфрейме) свое { Buy | NOP | Sell } указание, и с этого может начаться реализация MQL4.   -  person user3666197    schedule 07.10.2014
comment
Вы также, возможно, заметили, что мультитаймфреймовые индикаторы и стратегии советников вызывают проблемы после запуска в MT4.StrategyTester, независимо от того, с движком оптимизации или без него. Если вас интересует профессиональное решение, пожалуйста, ответьте по теме, чтобы работа была сделана за вас.   -  person user3666197    schedule 07.10.2014


Ответы (1)


Пример кода для рассмотрения:

start() {
    //--------------------------------------------
    // Get the MACD values for all time-frames
    //--------------------------------------------
    double vaiMACD[7];
    vaiMACD[0] = iMACD( Symbol(), PERIOD_M1, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    vaiMACD[1] = iMACD( Symbol(), PERIOD_M5, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    vaiMACD[2] = iMACD( Symbol(), PERIOD_M15, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    vaiMACD[3] = iMACD( Symbol(), PERIOD_M30, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    vaiMACD[4] = iMACD( Symbol(), PERIOD_H1, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    vaiMACD[5] = iMACD( Symbol(), PERIOD_H4, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    vaiMACD[6] = iMACD( Symbol(), PERIOD_D1, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);
    //--------------------------------------------

    //--------------------------------------------
    // CALC: Total Buys/Sells
    //--------------------------------------------
    int viMACDSignalBuyCount  = 0;
    int viMACDSignalSellCount = 0;
    for( int viElement=0; viElement<ArrayRange(vaiMACD, 0); viElement++) {
        //-----------------------------------------------------------
        // Here, you need to define your own rules on what is considered as Buy/Sell signal.
        // My example here is a simple: >0 is Buy. <0 is Sell.
        //-----------------------------------------------------------
        if( vaiMACD[viElement]>0 )    viMACDSignalBuyCount  += 1;
        if( vaiMACD[viElement]<0 )    viMACDSignalSellCount  += 1;
    }
    //--------------------------------------------

    //--------------------------------------------
    // Display Outcome
    //--------------------------------------------
    Comment( "Total MACD Signals:"
        + " " + viMACDSignalBuyCount + " (Buy)"
        + ", " + viMACDSignalSellCount + " (Sell)"
    );
}
person Joseph Lee    schedule 05.03.2015