warum wird Custom-Indicator im EA bei Test nicht gezeichnet?

Einloggen oder registrieren, um einen Kommentar zu schreiben
Bayne
1010
Bayne  
hier der Indicator: was muss ich wo ergänzen, damit der Indikator bei backtests meines EA geplottet wird?
//------------------------------------------------------------------
#property copyright "mladen"
#property link      "mladen"
//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_label1  "hull"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrLimeGreen,clrOrange
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

enum enPrices
{
   pr_close,      // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,        // Low
   pr_median,     // Median
   pr_typical,    // Typical
   pr_weighted,   // Weighted
   pr_average     // Average (high+low+oprn+close)/4
};

input double   HmaLength =   14;     // Hull period
input double   HmaPower  =    1;     // Hull power
input enPrices Price     = pr_close; // Price

double hull[];
double colorInd[];

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

int OnInit()
{
   SetIndexBuffer(0,hull    ,INDICATOR_DATA);
   SetIndexBuffer(1,colorInd,INDICATOR_COLOR_INDEX); 
   return(0);
}

//------------------------------------------------------------------
//
//------------------------------------------------------------------
//
//
//
//
//

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[])
{
   //
   //
   //
   //
   //
   
   int HalfPeriod = (int)MathFloor(HmaLength/2);
   int HullPeriod = (int)MathFloor(MathSqrt(HmaLength));
   for (int i=(int)MathMax(prev_calculated-1,1); i<rates_total; i++)
   {
      double price       = getPrice(Price,open,close,high,low,rates_total,i);
             hull[i]     = iLwmp(2.0*iLwmp(price,HalfPeriod,HmaPower,rates_total,i,0)-iLwmp(price,HmaLength,HmaPower,rates_total,i,1),HullPeriod,HmaPower,rates_total,i,2);
             colorInd[i] = colorInd[i-1];
               if (hull[i]>hull[i-1]) colorInd[i] = 0;
               if (hull[i]<hull[i-1]) colorInd[i] = 1;
   }
   return(rates_total);
}


//------------------------------------------------------------------
//                                                                  
//------------------------------------------------------------------
//
//
//
//
//

double getPrice(enPrices price, const double& open[], const double& close[], const double& high[], const double& low[], int bars, int i)
{
   switch (price)
   {
      case pr_close:     return(close[i]);
      case pr_open:      return(open[i]);
      case pr_high:      return(high[i]);
      case pr_low:       return(low[i]);
      case pr_median:    return((high[i]+low[i])/2.0);
      case pr_typical:   return((high[i]+low[i]+close[i])/3.0);
      case pr_weighted:  return((high[i]+low[i]+close[i]+close[i])/4.0);
      case pr_average:   return((high[i]+low[i]+close[i]+open[i])/4.0);
   }
   return(0);
}

//------------------------------------------------------------------
//                                                                 
//------------------------------------------------------------------
//
//
//
//
//

double workLwmp[][3];
double iLwmp(double price, double period, double power, int bars, int r, int instanceNo=0)
{
   if (ArrayRange(workLwmp,0)!= bars) ArrayResize(workLwmp,bars);
   
   //
   //
   //
   //
   //
   
   workLwmp[r][instanceNo] = price;
      double sumw = MathPow(period,power);
      double sum  = sumw*price;
      for(int k=1; k<period && (r-k)>=0; k++)
      {
         double weight = period-k;
                sumw  += MathPow(weight,power);
                sum   += MathPow(weight,power)*workLwmp[r-k][instanceNo];  
      }             
   return(sum/sumw);
}
Carl Schreiber
Moderator
9867
Carl Schreiber  

Nichts!

Du musst den Indikator vor dem Start auf das Chat ziehen.

Und das kannst Du dann als Vorlage unter dem Namen des EA speichern - ich glaube, dann wird der automatisch geladen - irgendwie so..

amando
2889
amando  

Sollte angezeigt werden, da stim im ea was nicht

Otto Pauser
2167
Otto Pauser  

Es hängt von den Launen des Testers ab (aktuelle Version)

ChartIndicatorAdd(handle) kann helfen.

Carl liegt hier richtig. Du kannst ein Template 'Tester' erstellen, das ist allgemein für den Tester.

Im speziellen ein Template für den Namen des EAs das hat priorität von dem Tester.tpl.

Solange allerdings nur, bis MQ auch hier wieder was ändert.

amando
2889
amando  
Ich kenn das problem nur, wenn mit dem handle des indicator was nicht passt
Otto Pauser
2167
Otto Pauser  
amando:
Ich kenn das problem nur, wenn mit dem handle des indicator was nicht passt

Das Handle MUSS immer überprüft werden.

Ist dieses 'INVALID' stimmt meist bei der Übergabe der Parameter in iCustom() was nicht.

Otto Pauser
2167
Otto Pauser  

Ist mir gerade eingefallen: wenn der Timeframe des Testers und des Indikators im EA nicht zusammenpasst(identisch ist)

wird der Indi auch nicht dargestellt. Bin ich auch schon drauf reingefallen.

amando
2889
amando  
Otto Pauser:

Ist mir gerade eingefallen: wenn der Timeframe des Testers und des Indikators im EA nicht zusammenpasst(identisch ist)

wird der Indi auch nicht dargestellt. Bin ich auch schon drauf reingefallen.

dann macht der Tester aber einen 2ten Tab mit dem Timeframe auf, wenn das handle richtig ist

Otto Pauser
2167
Otto Pauser  
amando:

dann macht der Tester aber einen 2ten Tab mit dem Timeframe auf, wenn das handle richtig ist

Ist mir nicht bekannt. Was meinst du damit?
amando
2889
amando  
Otto Pauser:
Ist mir nicht bekannt. Was meinst du damit?

Also zumindest bei mir ist das so, ob in der aktuelle version hab ich noch nicht getestet

du hast im tester unten auch tabs, alle timeframes welche im ea enthalten laufen da unten in einem eigenen tab

z.b test auf tf h1, da siehst du den tester im hauptfenster laufen

jetzt hast du einen i di auf d1, dann läuft der d1 mit dem indi im tester in einem eigenen tab


kann morgen ein bild davon posten

Otto Pauser
2167
Otto Pauser  

Tester

Ich sehe hier keine Tabs mit Timeframes. Build 2093 last stable (hahaha) version.

Der Tester läuft auf einem eigenen Bildschirm.

12
Einloggen oder registrieren, um einen Kommentar zu schreiben