Die Probleme wurden bei den Backtests festgestellt und die Ursache kann nicht gefunden werden!

 

Bitte beachten Sie den Screenshot unten nach dem Backtesting.

3 Fragen zu den seltsamen Dingen sind ebenfalls im Bild zu sehen.

Ich habe iCustom usage gelesen und meinen EA und Indikator immer wieder überprüft, kann aber die Ursache nicht finden.

Bitte um dringende Hilfe und vielen Dank!

(*. Sie können auf den Screenshot klicken, um ihn zu öffnen und zu vergrößern, um die Fragen deutlicher zu sehen)

Dies sind die kritischen Codes für den Indikator "Reverse" (andere Codes wurden durch "..." ersetzt, damit die kritischen Codes klar sind):

int OnInit()
  {
   IndicatorBuffers(8);
   ....
   SetIndexBuffer(6,ExtBuffer1);
   ....
  }

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[])
  {
   ...
   ...

   for(i=limit-1; i>=0; i--)
     {
      ...
      Value=...;
      ExtBuffer0[i]=MathLog((1+Value)/(1-Value));
      if(ExtBuffer0[i]>0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;
     }

   ...
   ...
  }

Dies sind die kritischen Codes im EA, um den Indikator zu verwenden (andere Codes wurden durch "..." ersetzt, damit die kritischen Codes klar sind):

...
...

void Reverse()
  {
   Joy1=iCustom(Symbol(),0,"Reverse",6,1);
   Joy2=iCustom(Symbol(),0,"Reverse",6,2);
  }

void openPosition()
  {
   ...
   if(Joy2<=-10 && Joy1>=10) 
    {
    r=OrderSend(Symbol(),OP_BUY,lotSize,Ask,slippage,0,0,TradeComment,MAGIC,0,clrMediumBlue);
    ...
    }
   else if(Joy2>=10&& Joy1<=-10) 
    {
    r=OrderSend(Symbol(),OP_SELL,lotSize,Bid,slippage,0,0,TradeComment,MAGIC,0,clrMediumVioletRed);
    ...
    }
   ...
   }
void closePosition()
  {
   ...
    if(openType==OP_BUY && Joy2>=10 && Joy1<=-10)
     for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,clrDodgerBlue);
            ...
            }
   else if(openType==OP_SELL && Joy2<=-10 && Joy1>=10) 
    for(i=OrdersTotal();i>=1; i--)
         if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==MAGIC)
           {
            r=OrderClose(OrderTicket(),OrderLots(),Ask,slippage,clrDeepPink);
            ...
            }
   ...  
  }
void OnTick()
  {
   ...
   Reverse();
   openPosition();
   closePosition(); 

}

 

Jetzt habe ich die Indikatordatei neu erstellt und das Problem mit der gelben Linie war gelöst.

Allerdings haben die anderen 2 Probleme immer noch keine Idee. Bitte helfen Sie!

 

Das Problem kommt wahrscheinlich von Ihrem Indikator

 if(ExtBuffer0[i]>= 0) ExtBuffer1[i]=10;
      else ExtBuffer1[i]=-10;

überprüfen Sie auch Ihren EmptyValue

 
ffoorr:

Das Problem liegt wahrscheinlich an Ihrem Indikator

überprüfe auch deinen EmptyValue

Lieber ffoorr, es sollte keinen leeren Wert geben, wie Sie an der gelben Linie sehen können.

 

was wäre, wenn if(ExtBuffer0[i]==0)

nach dem, was in Ihrem SetIndexEmptyValue steht, hätten Sie ein Loch, ein Nichts,

Die Zeile würde nicht gedruckt werden, bis die nächsten zwei Daten.


Andernfalls überprüfen Sie den Index Ihres Indikators, sieht aus wie das Signal ist ein Bar zu spät

Andernfalls kann niemand wissen, ohne den Code des Indikators zu sehen.


Verwenden Sie einen Fischer-Indikator?

 

Lieber ffoorr, vielen Dank für die Hilfe. Aber ich habe den Indikator mit Codes überprüft und kann bestätigen, dass es keinen leeren Wert gibt.

Ich habe Tick Story und MT4 neu installiert, das Problem ist immer noch da. Ich prüfe also noch.

 

jollydragon

wenn es keinen SetindicatorEmptyValue gibt, dann ist der Leerwert EMPTY_VALUE

wenn Du dann if( ExtBuffer1[i]!= 10 ) Open_Order() codierst

wenn ExtBuffer1[i] == EMPTY_VALUE ist, haben Sie eine Bestellung


Aber ich kann auch nicht wissen, ob dies die Ursache des Problems ist

 

Lieber ffoorr, ich habe Codes hinzugefügt, um die Daten vonExtBuffer1[i] anzuzeigen, wennExtBuffer1 nicht 10 oder -10 ist. Schließlich habe ich nichts und es beweistExtBuffer1 ist 10 oder -10 für jede Bar.

Ich habe auch den Indikator auf nur 2 Puffer mit 2 Zeilen aktualisiert. Sie können 1 in weiß und 1 in gelb sehen. Ich verwende die Daten der gelben Linie in meinem EA.

Bitte beachten Sie die Daten unten, können Sie sehen, wenn der Auftrag ändert, es genau verursacht wurde, weil die Daten der gelben Linie bekam ändert. 1" unten bedeutet die Daten der gelben Linie des Balkens, kurz bevor die Order eröffnet oder geschlossen wird, 2" bedeutet die Daten der gelben Linie des Balkens vor 1". Das ist auch die Art und Weise, wie ich das Öffnen und Schließen von Aufträgen handhabe.

Ich habe auch den Code des Indikators immer wieder überprüft, so dass ich bestätigen kann, dass der Indikator auf der Grundlage der vorherigen Balken berechnet wird und somit kein Fischer-Indikator ist.

Sie können jedoch sehen, dass die Orderänderungen immer noch nicht mit der gelben Linie (Signal) übereinstimmen.

Das ist sehr merkwürdig! Was kann die mögliche Ursache sein? Wer kann mir helfen und ich wäre Ihnen sehr dankbar?

2013.04.30 04:00:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 08:30:01:    1:  10.0, 2: -10.0-error:       0

2013.04.30 08:30:02:    1:  10.0, 2: -10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 09:30:00:    1: -10.0, 2:  10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.04.30 16:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 18:00:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:00:00:    1:  10.0, 2: -10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.01 22:30:00:    1: -10.0, 2:  10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 15:30:00:    1:  10.0, 2: -10.0-error:       0

2013.05.02 16:03:26:    1:  10.0, 2:  10.0-error:       0

 
Oh, mein Gott. Ich habe immer noch keine Ahnung, was das soll. Was ist denn los?
 
jollydragon: Oh, mein Gott! Ich habe immer noch keine Ahnung, was das soll. Was ist das Problem?
  1. Wie zum Teufel sollen wir das wissen? Sie haben nicht den ganzen Code gepostet.(Kein Indikator, kein iCustom, keine Schleifen)
  2. Sie sagen, der Indikator hat noch eine 10, aber das (erste) Bild zeigt Lücken. Wir haben keine Ahnung, wo Ihr Cursor war. War er über der Lücke?
  3. Sie haben keine Ahnung, weil Sie keine Informationen haben. Fügen Sie Druckanweisungen vor und innerhalb von if ein, einschließlich der Variablenwerte, und finden Sie es heraus.
 

Meine Lieben, in der Tat habe ich die kritischen Codes für Sie subtrahiert, um Ihre Zeit zu sparen.

Allerdings ist Ihre Hilfe sehr geschätzt und hier lassen Sie mich die Dateien der beiden EA und Indikator anhängen.

Bitte beachten Sie, dass die Dateinamen nach dem Anhängen automatisch geändert wurden. Es ist ein zufälliger Buchstabe zwischen 2 Wörtern eingefügt. Auf meinem Computer lauten sie "Trade Joy" und "Solar Joy".

Ich freue mich auf die Lösung :-)

Dateien:
tradebjoy.mq4  12 kb
trademjoy.ex4  17 kb
solarxjoy.mq4  7 kb
solarcjoy.ex4  8 kb