[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 481

 
Was ist falsch an OrderOpenPrice( )? ??? Es ist eine einfache normale Funktion!!! Die Reihenfolge habe ich vorausgewählt.
 
Entschuldigung, was ist das? Die Funktion OrderSend funktioniert bei mir, während OrderClose auffällig ist!
 
Dimka-novitsek:
Entschuldigung, was ist das? Die Funktion OrderSend funktioniert bei mir, während OrderClose auffällig ist!
total = OrdersTotal();
  for(i=total-1;i>=0;i--)
    {
    OrderSelect(i, SELECT_BY_POS);
    type   = OrderType(); result = false;
    switch(type)
          { 
          case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), l_SlipPage, Red ); break;
          case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), l_SlipPage, Red ); break; 
          }
    if(!result)
      {
      error =  GetLastError(); 
      errorcomment = "Неудалось закрыть ордер №" + OrderTicket() + " " + Symbol() + " " + OrderType() + " " + ErrorDescript(error); 
      Print(errorcomment);
      }  
    }
Dies ist ein Beispiel für die Schließung aller Aufträge. Beachten Sie, dass Bai und Sell durch Bids und Ask geschlossen werden ....
 
Oh, danke!!!
 
7777877:

Vielen Dank für die bisherigen Antworten. Alles funktioniert und fast alles ist klar... Nun zu diesem "fast".

1. In welcher Zeile (siehe beigefügte Datei für den Indikator) wird angegeben, dass die aus den Array-Daten berechnete Linie im Client-Terminal-Fenster angezeigt werden soll?

2. Warum wird die Funktion IndicatorBuffers benötigt (oder besser gesagt, in welchen Situationen sollte sie verwendet werden), wenn die Anzahl der Puffer als String angegeben werden kann

Vielen Dank im Voraus für die Antwort

#property indicator_buffers 3                                           //объявляем количество буферов

mit dieser Zeichenfolge geben Sie die Anzahl der im Terminal sichtbaren Anzeigepuffer an

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

Mit dieser Zeichenfolge wird die Gesamtzahl der Puffer angegeben, die der Indikator für Berechnungen verwendet (3 sichtbare und 1 verborgener Puffer).

wenn Sie keine zusätzlichen Puffer benötigen, brauchen Sie diese Zeichenfolge nicht

Die Anzahl der Puffer darf 8 nicht überschreiten und sollte kleiner sein als der in der Eigenschaft indicator_buffers angegebene Wert. Hier ist ein gutes Beispiel.


 
Guten Morgen! Ist es wirklich notwendig, die Geld- und Briefkurse zu normalisieren?
NormalizeDouble(Bid, Digits)
Denn ich habe es so
for(int i=1; i<=OrdersTotal(); i++) {  
            if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symbol( ) )continue;      // Не наш фин. инструм
         if (OrderMagicNumber( ) !=magicnumber)continue;
         if (OrderType()==0){ BUY++; ticket=OrderTicket( );Print( "BUY++   " , BUY  ,"  ticket ",ticket);}
         if (OrderType()==1) {SELL++;ticket=OrderTicket( );Print( "SELL++   " , SELL  ,"  ticket ",ticket);}    } }
         
  
  if (strela1<strela2&&SELL==0&&BUY!=0
  ){ udalenie ();
              
   OrderSend(Symbol( ), OP_BUY, lot, Ask, 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);           
      Print( "strela1<strela2&&BUY==0&&SELL!=0 " , GetLastError()); }
            
  if (strela1>strela2){ udalenie ();
                
   OrderSend(Symbol( ), OP_SELL, lot, Bid, 3*Point, NormalizeDouble( Ask+ (stoplos*Point),Digits),   NormalizeDouble( Ask-( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
        Print( "strela1>strela2&&SELL==0&&BUY!=0 " , GetLastError()); }
      
    if (strela1<strela2&&BUY==0&&SELL==0){    
            
           OrderSend( Symbol( ), OP_BUY, lot, Ask, 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);  
            Print( "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError()  ,"  Ask ",Ask,"   stoplos= NormalizeDouble( Bid- (stoplos*Point),Digits)  ", NormalizeDouble( Bid- (stoplos*Point),Digits),
"    takeprofit= NormalizeDouble( Ask+( takeprofit*Point),Digits) ", NormalizeDouble( Ask+( takeprofit*Point),Digits)); }
           
   if (strela1>strela2&&BUY==0&&SELL==0){  

Es geht so 2012.11.01 11:31:00 AUDUSD,M15: strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129Falscher Preis Das ist seit Jahren nicht mehr vorgekommen! Das war auch gestern nicht der Fall

 
Dimka-novitsek:
Guten Morgen! Müssen die Geld- und Briefkurse wirklich normalisiert werden? Ich habe nämlich Folgendes

Es geht so 2012.11.01 11:31:00 AUDUSD,M15: strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129 Falscher Preis Ist noch nie passiert!!! Ich habe es gestern auch nicht gesehen.

In der Testversion ist das nicht nötig, aber in der Online-Version müssen Sie alles tun, was der DC-Server vorgibt, wenn Sie arbeiten wollen.
 
Dimka-novitsek:
Guten Morgen! Müssen die Brief- und Geldkurse wirklich normalisiert werden?

Es geht so 2012.11.01 11:31:00 AUDUSD,M15: strela1<strela2&&SELL==0&&BUY!=0 129

ERR_INVALID_PRICE 129 Falscher Preis Das ist seit Jahren nicht mehr vorgekommen! Es war auch nicht gestern


Das ist nicht immer so...

"Falscher Geld- oder Briefkurs, möglicherweise nicht normalisierter Kurs. Sie müssen die Daten nach einer Verzögerung von 5 Sekunden oder mehr mit der Funktion RefreshRates aktualisieren und es erneut versuchen. Bleibt der Fehler bestehen, ist es notwendig, alle Handelsversuche zu stoppen und die Programmlogik zu ändern. "AUS DER DOKUMENTATION".

Ob auf Demo oder Real - es wird nicht funktionieren. Sie versuchen sehr oft, zwei Aufträge hintereinander zu eröffnen. Dies funktioniert im Strategietester. Sie bräuchten eine Verzögerung zwischen dem Öffnen von Aufträgen.

 

Ich danke Ihnen!!! Setzen Sie die Normalisierung ein... Und verdammt, was zum Teufel ist auf !!!!!! los? Mein Kopf brennt. Scheint einfacher zu sein als Geometrie in der Schule.


 
Sepulca:


Das ist nicht immer so...

"Falscher Geld- oder Briefkurs, möglicherweise nicht normalisierter Kurs. Sie müssen die Daten nach einer Verzögerung von 5 Sekunden oder mehr mit der Funktion RefreshRates aktualisieren und es erneut versuchen. Bleibt der Fehler bestehen, ist es notwendig, alle Handelsversuche zu stoppen und die Programmlogik zu ändern. "AUS DER DOKUMENTATION".

Ob auf Demo oder Real - es wird nicht funktionieren. Sie versuchen sehr oft, zwei Aufträge hintereinander zu eröffnen. Dies funktioniert im Strategietester. Setzen Sie eine Verzögerung zwischen offenen Aufträgen.

Was bedeutet "nicht immer"? Der Code muss UNIVERSAL sein, d.h. er muss mit JEDER Maklerfirma funktionieren (unabhängig von der Anzahl der Ziffern in den Kursen und allen möglichen Tricks des Servers der Maklerfirma, um die rechtzeitige Ausführung von Handelsaufträgen abzulehnen)!