2014-10-04 2 views
0

Добрый вечер всем,MQL4 Всего Результат от нескольких TimeFrame Индикатор

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

M1 = Купить, M5 = Продажа, M15 = Продажа, M30 = Купить, H1 = Купить, H4 = Купить, D1 = Купить,

Итого Результат = 5 Купить & 2 Продам

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

+0

Есть некоторые части отсутствуют. Определите количественно точный метод, с помощью которого индикатор Multi-TimeFrame вашего желания решает, при каких обстоятельствах он сообщает (на одном таймфрейме), это '{Buy | NOP | Sell} ', и из этого может начаться реализация MQL4. – user3666197

+0

Вы также можете отметить, что индикаторы многократного таймфрейма и стратегии EA вызывают проблемы при запуске в ** MT4.StrategyTester **, будь то с/без механизма оптимизации. Если вас интересует профессиональное решение, любезно ответьте на вопрос, чтобы получить работу для вас. – user3666197

ответ

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)" 
    ); 
}