Торможение при тестировании

Тема в разделе "Индикаторы, скрипты и эксперты для МТ4", создана пользователем Grew, 4 окт 2009.

  1. Grew

    Grew Новичок

    Приветствую уважаемое сообщество.
    Вопрос собственно в следующем: есть несколько индикаторов ,которые при прогоне системы с их использованием в тестере тормозят расчёты до неприличия . Возможно ли что либо с ними сделать дабы процесс ускорился.

    например:
    //+------------------------------------------------------------------+
    //| Kaufman.mq4 |
    //| Copyright © -2005, by konKop & wellx |
    //| <span class='inv'><![CDATA[<noindex>]]></span><a href="http://www.onix-trade.net/forum/go.php?http://www.metaquotes.net" rel="nofollow" target="_blank">http://www.metaquotes.net</a><span class='inv'><![CDATA[</noindex>]]></span> |
    //+------------------------------------------------------------------+
    #property copyright "Copyright © 2004, by konKop,wellx"
    #property link "http://www.metaquotes.net"
    #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_color1 Sienna
    #property indicator_color2 DeepSkyBlue
    #property indicator_color3 Gold
    //---- input parameters
    extern int periodAMA=240;
    extern int nfast=2;
    extern int nslow=30;
    extern double G=2.0;
    extern double dK=2.0;
    //---- buffers
    double kAMAbuffer[];
    double kAMAupsig[];
    double kAMAdownsig[];
    //+------------------------------------------------------------------+
    int k=0, cbars=0, prevbars=0, prevtime=0;
    double slowSC,fastSC;
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //---- indicators
    SetIndexStyle(0,DRAW_LINE);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,158);
    SetIndexStyle(2,DRAW_ARROW);
    SetIndexArrow(2,158);
    //SetIndexDrawBegin(0,nslow+nfast);
    SetIndexBuffer(0,kAMAbuffer);
    SetIndexBuffer(1,kAMAupsig);
    SetIndexBuffer(2,kAMAdownsig);
    IndicatorDigits(4);
    //----
    return(0);
    }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function |
    //+------------------------------------------------------------------+
    int deinit()
    {
    return(0);
    }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function |
    //+------------------------------------------------------------------+
    int start()
    {
    int i,pos=0;
    double noise=0.000000001,AMA,AMA0,signal,ER;
    double dSC,ERSC,SSC,ddK;
    if (prevbars==Bars) return(0);
    //---- TODO: add your code here
    slowSC=(2.0 /(nslow+1));
    fastSC=(2.0 /(nfast+1));
    cbars=IndicatorCounted();
    if (Bars<=(periodAMA+2)) return(0);
    //---- check for possible errors
    if (cbars<0) return(-1);
    //---- last counted bar will be recounted
    if (cbars>0) cbars--;
    pos=Bars-periodAMA-2;
    AMA0=Close[pos+1];
    while(pos>=0)
    {
    kAMAupsig[pos] =NULL;
    kAMAdownsig[pos]=NULL;
    if(pos==Bars-periodAMA-2) AMA0=Close[pos+1];
    signal=MathAbs(Close[pos]-Close[pos+periodAMA]);
    noise=0.000000001;
    for(i=0;i<periodAMA;i++)
    {
    noise=noise+MathAbs(Close[pos+i]-Close[pos+i+1]);
    }
    ER =signal/noise;
    dSC=(fastSC-slowSC);
    ERSC=ER*dSC;
    SSC=ERSC+slowSC;
    AMA=AMA0+(MathPow(SSC,G)*(Close[pos]-AMA0));
    kAMAbuffer[pos]=AMA;
    //----
    ddK=(AMA-AMA0);
    if ((MathAbs(ddK) > (dK*Point)) && (ddK > 0)) kAMAupsig[pos] =AMA;
    if ((MathAbs(ddK)) > (dK*Point) && (ddK < 0)) kAMAdownsig[pos]=AMA;
    AMA0=AMA;
    pos--;
    }
    //----
    prevbars=Bars;
    return(0);
    }
    //+------------------------------------------------------------------+
     
  2. simplexnet

    simplexnet Новичок

    переписывайте под МТ5 и пробуйте.
    Обещают более шуструю обработку вычислений.
     
  3. Ice

    Ice Профи форума

    Так каждый советник переписывать нервов не хватит...
     
  4. Grew

    Grew Новичок

    simplexnet
    Хочется верить что есть другой способ ...
     

Поделиться этой страницей