[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 54

 
vovan-gogan:

Ist das in meinem Beispiel nicht auch so? Inwiefern ist sie anders? Nur habe ich keine Startfunktion hinzugefügt.


Besser noch, es geht so.

int start()                            // Спец. функция start
  {
    int Orders=0;
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          int ticket = OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic);     
          if (ticket>0)              // Если ордер установлен
             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)  Sleep(100); // Если ордер выбран         
          Orders++;
          Alert ("Ордер выставлен.Orders = ",Orders );
             
        }   
       Alert ("Ордеров нет. Orders = ",Orders );    
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }


                 
         
      
 
vovan-gogan:

Aber ich sehe keinen Unterschied darin, es zu versuchen. Bitte sagen Sie mir, was ich falsch gemacht habe.

Sie versuchen, das Ergebnis zu schreiben. Es kann sein, dass der Auftrag nicht entsprechend Ihrer Bedingung eingestellt wird, weil bei der Einstellung die notwendigen Prüfungen fehlen. Darüber hinaus würde es nicht schaden, einen Fehler-Handler hinzuzufügen, wenn es aus dem einen oder anderen Grund nicht installiert ist, Schlupf machen > 0 - das ist das erste, was sofort zeigt.
 
Beziehen Sie sich auf Slippage bei einem schwebenden Auftrag?
 
vovan-gogan:
Meinen Sie Slippage bei einem schwebenden Auftrag?


Hacken Sie nicht auf dem Text herum - stellen Sie ihn einfach ein und das war's... Prüfen Sie ihn.

Zumindest im Tester sollte alles funktionieren - wenn Sie einen Auftrag aufgrund einer zu geringen Entfernung nicht einstellen können, wird er beim nächsten Mal eingestellt - Ihre Frage bezog sich auf etwas anderes - dann werden Sie alles andere erledigen - prüfen Sie, wie es im Tester ist.

 
Roman.:


Hacken Sie nicht auf dem Text herum - stellen Sie ihn ein und das war's... Überprüfen Sie ihn.

Zumindest im Tester sollte alles funktionieren - wenn du die Reihenfolge wegen des geringen Abstands nicht einstellst, wird sie beim nächsten Mal eingestellt - deine Frage bezog sich jetzt auf etwas anderes - dann wirst du alles andere erledigen - überprüfe es so, wie es ist, im Tester.


Danke, dass Sie mir helfen wollen, aber in dieser speziellen Situation möchte ich, dass Sie mir zunächst helfen, meinen Fehler zu verstehen. Wenn ich ständig Lösungen verwende, die von anderen entwickelt wurden, und meine Fehler nicht erkenne, werde ich als Programmierer wahrscheinlich nicht wachsen. Ich hoffe, Sie sind damit einverstanden
 
vovan-gogan:

Ist das in meinem Beispiel nicht auch so? Inwiefern ist sie anders? Allerdings habe ich die Startfunktion nicht hinzugefügt.


Lesen Sie noch einmal das Konzept der lokalen und globalen Variablen. Darüber hinaus ist aufgrund dieser Konstruktion

 if (OrdersTotal()>= 1) return(0);  

Wenn eine Position manuell oder durch einen anderen EA auf demselben Handelskonto eröffnet wird, setzt der EA keine Pending Order, wenn die Handelsbedingung für das Setzen einer Pending Order ausgelöst wird, für einen Strategietester funktioniert das problemlos.

Im allgemeinen Fall, müssen Sie eine Schleife durch die Aufträge geöffnet oder von diesem sehr Expert Advisor, je nach der Logik Ihres Algorithmus, in Abwesenheit von ausstehenden Aufträgen, setzen Sie es und erhöhen Sie den Zähler der Aufträge und drucken Sie die Informationen.

 
vovan-gogan:

Ich danke Ihnen für Ihre Bereitschaft zu helfen, aber in dieser speziellen Situation möchte ich, dass Sie mir zunächst helfen, meinen Fehler zu verstehen. Wenn ich ständig Lösungen verwende, die von anderen geschrieben wurden, und meine Fehler nicht erkenne, werde ich mich als Programmierer kaum weiterentwickeln können. Ich hoffe, Sie sind damit einverstanden


Einverstanden. Lesen Sie noch einmal das Konzept der lokalen und globalen Variablen im Client-Terminal.



int start()                            // Спец. функция start
  {
    int Orders=0;    
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          int ticket = OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic);     
          if (ticket>0)              // Если ордер установлен
             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)  Sleep(100); // Если ордер выбран         
          Orders++;
          Alert ("Ордер выставлен.Orders = ",Orders );
             
        }   
         
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }
 
vovan-gogan:

Ich danke Ihnen für Ihre Bereitschaft zu helfen, aber in dieser speziellen Situation möchte ich, dass Sie mir helfen, meinen Fehler zu verstehen.


Stellen Sie die Frage schon... :-Р

Versuchen Sie die Variante aus meinem vorherigen Beitrag.

Lesen Sie das Tutorial und die Dokumentation hier - ich habe noch nirgendwo ein detaillierteres Hackfleisch gesehen, das wiedergekäut wurde.

 
Danke für den Tipp mit den globalen und lokalen Variablen) Ich werde mehr lesen)
 
Alexandr24:
Erklären Sie mir, warum ich beim Öffnen eines Diagramms (in Echtzeit) mit M30-Zeitrahmen und wende den Indikator mit dem Parameter int shift=iBarShift(NULL,PERIOD_M5,some_time) an; shift wird so sein, wie es sein sollte, aber wenn ich denselben Indikator durch den Tester mit Periode M30 laufen lasse, wird shift nicht berechnet?

Wer weiß, wie man dieses Problem lösen kann?
Grund der Beschwerde: