Automated Trading Championship 2007: Häufige Fehler bei Experten - Seite 6

 
Die Fehlermeldung "OrderModify error 1" bedeutet, dass OrderModify mit unveränderten Parametern aufgerufen wurde, was auf eine ungenaue Programmierung zurückzuführen ist.

Bevor Sie OrderModify aufrufen, prüfen Sie, ob Sie die Aktualisierung mit den neuen Daten aufrufen oder ob Sie versuchen, vorhandene Werte zu setzen.
 
Der Test Ihres Experten ist abgeschlossen. Sachverständigengutachten:
-----------------------
2007.09.08 17:47
für EURUSD:60
17:38:34 2007.01.04 00:01 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:02 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:03 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:04 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:04 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify Fehler 1
17:38:34 2007.01.04 00:08 stalker_2 EURUSD,H4: OrderModify Fehler 1
0 min 49 Sekunden
Fehler: 20


-----------------------

Bitte korrigieren Sie Ihren Expert Advisor Code und laden Sie eine neue Version auf Ihre Profilseite hoch:

Ich glaube, Ihr Roboter ist verrückt geworden, es scheint, dass er viele Teilnehmer hat :-) Er hat bereits Expert Advisors durcheinander gebracht. Ich habe einen Expert Advisor, der nicht schreiben "Stalker_2" in den Kommentaren und arbeitet auf Stunden-Chart. Und der Befehl OrderModify verwendet ihn überhaupt nicht.
 
Renat:
Die Fehlermeldung "OrderModify error 1" bedeutet, dass OrderModify mit unveränderten Parametern aufgerufen wird, was auf eine ungenaue Programmierung zurückzuführen ist.

Bevor Sie OrderModify aufrufen, prüfen Sie bitte, ob Sie die Aktualisierung mit neuen Daten aufrufen oder ob Sie versuchen, bereits vorhandene Werte zu setzen.

Vielleicht meinen Sie die Konstruktion?

wenn ( RefreshRates() == true )

{

....

OrderModify(Ticket,...

}

bei meinem Streifzug

Resresh() nach jeder Auftragsänderung in der Schleife

Breakeven nach 35 Pips Gewinn

externe Variablen, kleinster Wert

FirstTralStopSell = 35;

anschließender Rückfall nach Erreichen von 50 Pips

Ich verstehe nicht ganz, wie dieser Fehler auftreten kann - ich habe keinen solchen Fehler bei Tests

Es ist möglich, dass das Testsystem nach der Erteilung des OrderModify-Befehls Requotes emuliert, so dass der Kurs Zeit hat, um um mehr als 50 Pips zurückzukehren.

Aber wie lässt sich eine solche Situation vermeiden?

außerdem tauchen meine LOGS nicht in der vom Testsystem ausgegebenen Logdatei auf!

if (err != 0 )
{
if ( ECHOerror == 1 )
Print("Error("+err+") Open="+OrderOpenPrice()+""+OrderStopLoss()+" modifying SL: "+(Ask+Point*FirstTralStopSell)+" TP "+(0)+""+msgErrors(err));
}

void TralYZ(int lLockTralSell, int lLockTralBuy)
{
   int err;
   int cnt=OrdersTotal();
   int LocalDinamicTrallSELL;
   int LocalDinamicTrallBUY;
   int FirstTralStopSell;
   int FirstTralStopBuy;
   LocalDinamicTrallSELL = oDinamicTrallSELL ; // значения по умолчанию 
   LocalDinamicTrallBUY =  oDinamicTrallBUY  ;
   FirstTralStopSell = oFirstTralStopSell;             // первый безуюыток 
   FirstTralStopBuy = oFirstTralStopBuy;
 
 
   while(cnt>=0)
   {
      RefreshRates();
      
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      Sleep(10000);
      int Ticket=OrderTicket();
      int IDorder;
      IDorder = FindID(Ticket);
      if (OrderSymbol() == Symbol() )
      {
         if (OrderType()==OP_SELL && lLockTralSell == 0 ) 
         {         
            if ( OrderMagicNumber() == MAGIC3 )
               FirstTralStopSell = d3FirstTralStopBuy;
            if ( OrderMagicNumber() == MAGIC2 )
               FirstTralStopSell = d2FirstTralStopBuy;
            if ( OrderMagicNumber() == MAGIC1 )
               FirstTralStopSell = d1FirstTralStopBuy;
            if ( OrderMagicNumber() == cMAGIC3 )
               FirstTralStopSell = c3FirstTralStopSell;
            if ( OrderMagicNumber() == cMAGIC2 )
               FirstTralStopSell = c2FirstTralStopSell;
            if ( OrderMagicNumber() == cMAGIC1 )
               FirstTralStopSell = c1FirstTralStopSell;
            if ( 
               ( OrderStopLoss() == 0  && ( OrderOpenPrice()-Ask )>=(FirstTralStopSell*Point) + Ask-Bid ) ||
               ( OrderStopLoss() > OrderOpenPrice()  && ( OrderOpenPrice()-Ask )>=(FirstTralStopSell*Point) + Ask-Bid ) 
               )
            {                  
               if ( DEBUG == 1 )
                  Print( "1 SL="+OrderStopLoss()+" > OP="+OrderOpenPrice() +" && ( OP"+OrderOpenPrice()+" - Ask"+Ask+") "+( OrderOpenPrice()-Ask ) +" >= ( "+FirstTralStopSell+" *  "+Point+")  "+Ask+" - "+Bid+" ="+(Ask-Bid));
               lotlib_PrevLots = OrderLots();  
               lotlib_PrevProfit = OrderProfit();
               OrderModify(Ticket,OrderOpenPrice(),Ask+(Point*FirstTralStopSell) , 0 ,0,Purple);
               Sleep( 10000 );
               err=GetLastError();
               if (err != 0 )
               {
                  if ( ECHOerror == 1 )
                     Print("Error("+err+") Open="+OrderOpenPrice()+" "+OrderStopLoss()+" modifying SL: "+(Ask+Point*FirstTralStopSell)+" TP "+(0)+" "+msgErrors(err));
               }
            }
 
Ich habe den gleichen Expertencode dreimal überprüft. Die ersten beiden Male gab es keine Fehler und beim dritten Mal gab es plötzlich einen Fehler und ich muss den Expertencode nun ändern. Es ist nicht klar, warum der gleiche Expertencode mehrmals überprüft werden muss?
 
Renat:
Die Fehlermeldung "OrderModify error 1" bedeutet, dass OrderModify mit unveränderten Parametern aufgerufen wurde, was auf eine ungenaue Programmierung zurückzuführen ist.

Bevor Sie OrderModify aufrufen, prüfen Sie, ob Sie die Aktualisierung mit neuen Daten aufrufen oder ob Sie versuchen, vorhandene Werte zu setzen.


Nach der Einführung des Konstrukts

                     if ( RefreshRates() == true )
                        OrderModify(Ticket,OrderOpenPrice(),Bid-Point*LocalDinamicTrallBUY , 0,0,Purple);

Terminalversion 208 funktioniert in Tests überhaupt nicht

RefreshRates() == true ?

LocalDinamicTrallBUY = 50;

Eintritt in den Trall

              if ( OrderStopLoss() > OrderOpenPrice() && ( Bid - OrderStopLoss() )  >= (LocalDinamicTrallBUY*Point) + Ask-Bid )
                  {
                     lotlib_PrevLots = OrderLots();  
                     lotlib_PrevProfit = OrderProfit();
                     if ( RefreshRates() == true )
                        OrderModify(Ticket,OrderOpenPrice(),Bid-Point*LocalDinamicTrallBUY , 0,0,Purple);

Es muss einige Feinheiten geben... Ich weiß nicht, ob

 
YuraZ:
Renat:
Die Fehlermeldung "OrderModify error 1" bedeutet, dass OrderModify mit unveränderten Parametern aufgerufen wird, was auf eine ungenaue Programmierung zurückzuführen ist.

Bevor Sie OrderModify aufrufen, prüfen Sie, ob Sie die Aktualisierung mit neuen Daten aufrufen oder ob Sie versuchen, vorhandene Werte zu setzen.

Vielleicht meinen Sie die Konstruktion?


Das bedeutet, dass Sie versuchen, denselben StopLoss-Wert in OrderModify zu setzen, der dort bereits vorhanden war. Wenn der StopLoss beispielsweise 1,3020 beträgt und Sie versuchen, den Stop erneut auf 1,3020 zu setzen, gibt OrderModify den Code 1 zurück. Dies wird in der Dokumentation von OrderModify ausdrücklich erwähnt:

bool BestellungÄndern( int ticket, double price, double stoploss, double takeprofit, datetime expiration, colour arrow_color=CLR_NONE)
Ändert die Parameter von zuvor geöffneten Positionen oder schwebenden Aufträgen. Gibt TRUE zurück, wenn die Funktion erfolgreich abgeschlossen wurde. Gibt FALSE zurück, wenn die Funktion fehlschlägt. Sie müssen GetLastError() aufrufen, um die Fehlerinformationen zu erhalten.

Hinweis: Der Eröffnungskurs und die Verfallszeit können nur bei schwebenden Aufträgen geändert werden.
Werden unveränderte Werte als Parameter an die Funktion übergeben, wird ein Fehler 1 (ERR_NO_RESULT) erzeugt.
Auf einigen Handelsservern kann ein Verbot des Verfalls von schwebenden Aufträgen festgelegt werden. In diesem Fall wird ein Fehler 147 (ERR_TRADE_EXPIRATION_DENIED) erzeugt, wenn versucht wird, einen Wert ungleich Null im Ablaufparameter zu setzen.
 
Renat:
YuraZ:
Renat:
Die Fehlermeldung "OrderModify error 1" bedeutet einen OrderModify-Aufruf mit unveränderten Parametern, was auf eine ungenaue Programmierung zurückzuführen ist.

Bevor Sie OrderModify aufrufen, prüfen Sie, ob Sie die Aktualisierung mit neuen Daten aufrufen oder ob Sie versuchen, bereits vorhandene Werte zu setzen.

Vielleicht meinen Sie die Konstruktion?


Damit ist gemeint, dass Sie versuchen, denselben StopLoss-Wert in OrderModify zu setzen, der dort bereits vorhanden war. Wenn der StopLoss beispielsweise 1,3020 beträgt und Sie versuchen, den Stop erneut auf 1,3020 zu setzen, gibt OrderModify den Code 1 zurück. Dies wird in der Dokumentation von OrderModify ausdrücklich erwähnt:

bool BestellungÄndern( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
Ändert die Parameter von zuvor geöffneten Positionen oder schwebenden Aufträgen. Gibt TRUE zurück, wenn die Funktion erfolgreich abgeschlossen wurde. Gibt FALSE zurück, wenn die Funktion fehlschlägt. Rufen Sie GetLastError() auf, um Informationen über den Fehler zu erhalten.

Hinweis: Der Eröffnungskurs und die Verfallszeit können nur bei schwebenden Aufträgen geändert werden.
Wenn der Funktion unveränderte Werte als Parameter übergeben werden, wird ein Fehler 1 (ERR_NO_RESULT) erzeugt.
Auf einigen Handelsservern kann ein Verbot des Verfalls von schwebenden Aufträgen festgelegt werden. In diesem Fall wird ein Fehler 147 (ERR_TRADE_EXPIRATION_DENIED) erzeugt, wenn versucht wird, einen Wert ungleich Null im Ablaufparameter zu setzen.


WOW!!! genau!!! Renat, danke!

Bedingung für die Einreise nach Trall hinzugefügt

&& OrderStopLoss() != Ask+Point*LocalDinamicTrallSELL

if ( 
                         OrderStopLoss()  < OrderOpenPrice()
                      && ( OrderStopLoss()-Ask )>=(LocalDinamicTrallSELL*Point) + Ask-Bid   
                      && OrderStopLoss() !=  Ask+Point*LocalDinamicTrallSELL    
                       ) 
                  {                     
                     if ( DEBUG == 1 )
                        Print( "2 SL="+OrderStopLoss()+" < OP="+OrderOpenPrice() +" && ( OP"+OrderOpenPrice()+" - Ask"+Ask+") "+( OrderOpenPrice()-Ask ) +" >= ( "+LocalDinamicTrallSELL+" *  "+Point+")  "+Ask+" - "+Bid+" ="+(Ask-Bid));
                     lotlib_PrevLots = OrderLots();  
                     lotlib_PrevProfit = OrderProfit();
                     if ( RefreshRates() == true )
                        OrderModify(Ticket,OrderOpenPrice(),Ask+Point*LocalDinamicTrallSELL , 0,0,Purple);
                     err=GetLastError();
                     if (err != 0 )
                     {   
                        if ( ECHOerror == 1 )
                           Print("Error("+err+") Open="+OrderOpenPrice()+" "+OrderStopLoss()+" modifying SL: "+(Ask+Point*LocalDinamicTrallSELL)+" TP "+(0)+" "+msgErrors(err));
                     }
                  }

Aber während des Tests gab es keine Fehler in meinen Protokollen! - das ist sehr merkwürdig

 
pilgrim:

Ich glaube, Ihr Roboter ist verrückt geworden, ich glaube, er hat viele Teilnehmer :-) Er hat bereits begonnen, EAs zu verwirren. Mein EA schreibt nicht "stalker_2" in den Kommentaren, er arbeitet auf dem Stundenchart. Und der Befehl OrderModify verwendet ihn überhaupt nicht.
Das Skript des automatischen Testers hat die Protokolle eines anderen Benutzers erfasst - bereits behoben.
 
d.h. ich habe zweimal eine E-Mail erhalten, in der mir mitgeteilt wurde, dass die Prüfung bestanden wurde und ich registriert bin... und bei der dritten sagt er, dass ich einen Fehler im Code habe... Warum muss ich den Code des Experten ändern, wenn ich ihn einmal in das Profil hochgeladen habe?
 
folver:
d.h. ich habe zweimal eine E-Mail erhalten, dass der Experte die Prüfung erfolgreich bestanden hat und ich registriert bin... und beim dritten Mal heißt es, ich hätte einen Fehler im Code... warum sollte ich den Code des Expert Advisors ändern, nachdem ich ihn in das Profil hochgeladen habe?
Nach den Ergebnissen zu urteilen, hat der Expert Advisor einen Margin Call erwischt. Ich kann noch nichts sagen. Morgen früh werden die nächsten Kontrollen durchgeführt und wir werden die Ergebnisse überprüfen.