Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 915

 

Das Problem ist, dass diese Tickets mehr als eine sind. vielleicht 4, ich weiß noch nicht genau. das ist, warum ich eine Klasse mit Ticketnummer und andere Informationen, die nicht von orderselect gespeichert wird erstellt. so wollte ich Zugriff auf das Ticket haben. aber bisher kann ich nur Klasse Objekte erstellen und legen Sie sie in CarrayObj und dann den Index erhalten, vergleichen Sie das Ticket und weiter zu analysieren. Aber ich habe das Problem gelöst, danke, ich gebe mir die Schuld an anderer Stelle. Meine HerrenevilliveAlexeyVik - vielen Dank für Ihre prompten Antworten!

 
Hallo! Bitte schreiben Sie, warum in der Strategie-Tester nicht offen Trades, schreibt in der Log-Fehler: (2015.07.13 00:22:39.218 TestGenerator: unmatched Daten Fehler (Hochwert 1.31150 am 2013.07.11 05:00 ist nicht von der niedrigsten Zeitrahmen erreicht, Hochpreis 1.31140 mismatches) Zitate aktualisiert. Hier ist der Code des Expert Advisors:
int ticket;
int init;

int start()
{

int bars0;
int bars1;
int bars2;
int bars3;
int   stoploss=50; 
int   takeprofit=30;
int       slipage=2;

//-------------------------------------------------------------------+
  
  if ( OrdersTotal()<1 &&  Open[bars0]<Close[bars0] && Open[bars1]<Close[bars1] )
      if (  Open[bars2]>Close[bars2]&& Open[bars3]>Close[bars3] )
      if(V1()==true) 
     
       ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,slipage,Ask-stoploss*Point,Ask+takeprofit*Point,"",123,0,Red);
     
//-------------------------------------------------------------------+ 
    if ( OrdersTotal()<1 &&  Open[bars0]>Close[bars0] && Open[bars1]>Close[bars1]&& Open[bars2]<Close[bars2])
     if (  Open[bars2]<Close[bars2]&& Open[bars3]<Close[bars3] )
      if(V2()==true) 
     
       ticket = OrderSend(Symbol(),OP_SELL,0.1,Bid,slipage,Bid+stoploss*Point,Bid-takeprofit*Point,"",123,0,Red);
      
    
         
//-------------------------------------------------------------------+                    
 return;}
//+------------------------------------------------------------------+
bool V1( ){
  int      i, k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
     if (OrderType()==OP_BUY) {
      return(false);
   }
  }    
 }
 return(true); 
}

bool V2( ){
  int      i, k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
     if(OrderType()==OP_SELL) {
      return(false);
   }
  }
 }
 return(true); 
}

)
 
rylay:
Hallo! Bitte schreiben Sie, warum in der Strategie-Tester nicht öffnen Trades, schreibt in der Log-Fehler: (2015.07.13 00:22:39.218 TestGenerator: unmatched Daten Fehler (hoher Wert 1.31150 am 2013.07.11 05:00 ist nicht von der niedrigsten Zeitrahmen erreicht, hoher Preis 1.31140 mismatches) Zitate aktualisiert. Hier ist der Code des Expert Advisors:
)

Was den erwähnten Fehler des Testers betrifft, so wird dies immer der Fall sein, wenn auf Ticks getestet wird. Der Kursverlauf in MT4 ist nicht perfekt, es gibt immer Abweichungen.

Der Code ist voller Fehler. Variablen sind nicht initialisiert, die Startfunktion versteht nicht, was sie zurückgibt, es gibt keine Überprüfung der Ausführung von Handelsfunktionen, also bitte beheben Sie das.

Fügen Sie #property strict an den Anfang des Codes.

Und da wir zwei Funktionen zur Definition von Auftragsarten geschaffen haben, warum nicht den Zähler der Aufträge jeder Art integrieren und if ( OrdersBuy<1...), if ( OrdersSell<1...) schreiben, anstatt if( OrdersTotal()<1...) zu vergleichen? Das wäre korrekter.

 

Bitte beraten Sie mich, wie man nur einen Handel unter den Bedingungen eines Balkens eröffnet, wenn der Handel innerhalb des Balkens stattfindet, aber zum Zeitpunkt der Schließung das Signal zur Eröffnung sofort auf demselben Balken erscheint.

Mit anderen Worten: Der Balken gab ein Signal zur Eröffnung eines Auftrags. Sie wurde geöffnet und eine kurze Aufnahme ausgelöst. Das Geschäft wurde geschlossen, aber der EA schließt das erste Geschäft und öffnet sofort das zweite mit der exakt gleichen Reihenfolge, da wir immer noch die Bedingung haben, es innerhalb desselben Balkens zu öffnen. Ich muss nur eine Position auf einem Balken eröffnen. Und um den nächsten Handel zu eröffnen, sollten wir auf die Eröffnung eines weiteren Balkens warten.

 
Poinson:

Bitte beraten Sie mich, wie man nur einen Handel unter den Bedingungen eines Balkens eröffnet, wenn der Handel innerhalb des Balkens stattfindet, aber zum Zeitpunkt der Schließung das Signal zur Eröffnung sofort auf demselben Balken erscheint.

Mit anderen Worten: Der Balken gab ein Signal zur Eröffnung eines Auftrags. Sie wurde geöffnet und eine kurze Aufnahme ausgelöst. Das Geschäft wurde geschlossen, aber der EA schließt das erste Geschäft und öffnet sofort das zweite Geschäft mit der exakt gleichen Reihenfolge, da wir immer noch die Bedingung haben, es innerhalb desselben Balkens zu öffnen. Ich muss nur eine Position auf einem Balken eröffnen. Und wir warten auf die Öffnung eines weiteren Balkens, um den nächsten Handel zu eröffnen.

Das _already open = false;

if (isNewBar()){ _already opened = false;}

if (!OrderSend(...) ) { /* Fehlerbehandlung */; } else { _already opened = true; }

isNewBar() - Standard, wie in den Artikeln, mit statischem datetime date = Time[0];

if (_already opened) { return; //schickt den Haftbefehl nicht }

 
evillive:

Was den erwähnten Fehler des Testers betrifft, so wird dies immer der Fall sein, wenn auf Ticks getestet wird. Der Kursverlauf in MT4 ist unvollkommen, es gibt immer Abweichungen.

Der Code ist voller Fehler. Variablen sind nicht initialisiert, die Startfunktion versteht nicht, was sie zurückgibt, es gibt keine Überprüfung der Ausführung von Handelsfunktionen, also bitte beheben Sie das.

Fügen Sie #property strict an den Anfang des Codes.

Und da wir zwei Funktionen zur Definition von Auftragsarten geschaffen haben, warum nicht den Zähler der Aufträge jeder Art integrieren und if ( OrdersBuy<1...), if ( OrdersSell<1...) schreiben, anstatt if( OrdersTotal()<1...) zu vergleichen? Das wäre korrekter.

Ich danke Ihnen. Ich werde es korrigieren. Es ist nur so, dass wenn es eine Bedingung gab:
if ( OrdersTotal()<1 &&  Open[bars0]<Close[bars0]
   ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,slipage,Ask-stoploss*Point,Ask+takeprofit*Point,"",123,0,Red);
Es hat einfach nicht richtig funktioniert, also habe ich gefragt.
 
danik:

bool _already opened = false;

if (isNewBar()){ _already opened = false;}

if (!OrderSend(...) ) { /* Fehlerbehandlung */; } else { _already opened = true; }

isNewBar() - Standard, wie in den Artikeln, mit statischem datetime date = Time[0];

if (_already opened) { return; //don't send the warrant }

es heißt 'isNewBar' - Funktion nicht definiert 2015

Ich bin nicht wirklich ein Zauberer. Ich hätte gerne eine exakte Kopie und Einfügung, wenn Sie das können.

 
Poinson:

es heißt 'isNewBar' - Funktion nicht definiert 2015

Ich bin nicht wirklich ein Handwerker. Ich bitte um eine genaue Kopie und Einfügung, wenn möglich.

Wenn es ein neuer Balken ist, können Sie die Funktion isNewBar() kopieren und einfügen, vielleicht bekommen Sie es richtig, es ist nicht kompliziert - es vergleicht die Öffnungszeit eines neuen Balkens (mit Index 0, d.h. der letzte), wenn es mehr als vorher ist, bedeutet es, dass ein neuer Balken gerade erschienen ist, und wenn er erschienen ist, bedeutet es, dass Sie einen neuen Handel eröffnen können, wenn Sie andere Bedingungen haben
 
Poinson:

es heißt 'isNewBar' - Funktion nicht definiert 2015

Ich bin nicht wirklich ein Handwerker. Ich bitte um eine genaue Kopie und Einfügung, wenn möglich.

Ja, in jedem Ratgeber in der kodobase wäre es zu finden!

//в старте перед условиями входа:
      if(NewBar() == true)
      { 
//----------------------
  return(0);
}
// и вне старта:
//----------------------------//  NewBar  \\----------------------------\\
bool NewBar() 
{
  static datetime lastbar = 0;
  datetime curbar = iTime(NULL,15,0);
  if(lastbar != curbar) 
  {
    lastbar = curbar;
    return(true);
  }
  else return(false);
} 
 
borilunad:

Jedes Ratsmitglied, das sich in einer Kodobase befindet, hätte es gefunden!

Danke )) Das Stärkste einfach! Alles hat vom 1. Mal an funktioniert!

Ich danke Ihnen allen!