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

 
Elena56:

Während des Optimierungsprozesses überprüfe ich das Visualisierungselement und drücke auf Start, woraufhin der Strategietester ausgeblendet wird, die Visualisierungsmarkierung verschwindet und der Test nur sehr langsam voranschreitet. Was bedeutet das? Ich habe Angebote geladen und aktualisiert. (MT4)

Dies ist eine Optimierung, keine Prüfung.
 

Meine Herren, ich bitte um Hilfe. Ich habe ein Problem - will nicht, um Text am Ende der Bestellung zu schreiben, sagen Sie mir, warum plz

   OrderSelect(otbH,SELECT_BY_TICKET);
   if(OrderSelect(otbH,SELECT_BY_TICKET)==true)
   { 
      Print("1");
      if(OrderCloseTime()>0)
      {
         Print("2");
         ObjectCreate("ndp"+OrderTicket(),OBJ_TEXT,0,0,0);
         ObjectSet("ndp"+OrderTicket(),OBJPROP_TIME1,TimeCurrent());
         ObjectSet("ndp"+OrderTicket(),OBJPROP_PRICE1,OrderClosePrice());
         ObjectSetText("ndp"+OrderTicket(),OrderProfit(),5,"Arial",Aqua);
      } 
   }    
   
   

otbH - das ist die Ticketnummer. Das Interessante ist, dass die Zahl "1" gedruckt wird, aber die Zahl "2" nicht... Ich kann den Grund nicht herausfinden... ...weil es die Reihenfolge auswählt... Erklären Sie mir...

 
CLAIN:

Meine Herren, ich bitte um Hilfe. Ich habe ein Problem - will nicht den Text am Ende der Bestellung zu schreiben, sagen Sie mir, warum plz

otbH - das ist die Ticketnummer. Das Interessante ist, dass die Zahl "1" gedruckt wird, aber die Zahl "2" nicht... Ich kann den Grund nicht herausfinden... ...weil es die Reihenfolge auswählt... Erklären Sie mir...


Ist der Auftrag abgeschlossen oder nicht?
 

Erst wird der Auftrag eröffnet, dann geschlossen.

Dieses Skript läuft bei jedem Tick, also wird es irgendwann definitiv geschlossen...

Ich wähle die Bestellung zuerst nach dem Ticket aus - OrderSelect(otbH,SELECT_BY_TICKET); - sie wird ausgewählt, egal wo sie sich befindet, richtig?

Und dann sollte es feststellen, ob es geschlossen oder offen ist... aber aus irgendeinem Grund tut es das nicht...

 
CLAIN:

Erst wird der Auftrag eröffnet, dann geschlossen.

Dieses Skript läuft bei jedem Tick, also wird es irgendwann definitiv geschlossen...

Ich wähle die Bestellung zuerst nach dem Ticket aus - OrderSelect(otbH,SELECT_BY_TICKET); - sie wird ausgewählt, egal wo sie sich befindet, richtig?

Und dann sollte es feststellen, ob es geschlossen oder offen ist... aber aus irgendeinem Grund tut es das nicht...


Versuchen Sie, einen geschlossenen Auftrag auszuwählen
 
Sagen Sie mir wie, ich weiß es nicht.
 
CLAIN:
Sagen Sie mir wie, ich weiß es nicht.

   int total=OrdersHistoryTotal();
   for (int i=total-1;i>=0;i--) 
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol()==Symbol())
         {
            if(OrderMagicNumber()==MagicNumber )
            {
               // Ваши действия с ордером
            }
         }
      }
   }
 

Die Frage ist - der Eröffnungskurs ist bei der Überquerung von zwei beweglichen (übertrieben), im Test berechnet - alles ist in Ordnung, aber wenn man es auf der Demo, die Öffnungen sind falsch (weil während der Bildung einer Bar Preis innerhalb Springen von min bis max), daher die Idee zu berücksichtigen, die Kreuzung nur dann, wenn die Bar gebildet wird, dh bar gebildet wird (sah die Kreuzung) und dann den nächsten Markteintritt, unter Berücksichtigung der Kreuzung.

 
DOCTORS:

Die Frage ist diese: der Eröffnungskurs wird durch die Kreuzung von zwei Schiebereglern (übertrieben) berechnet, in den Test ist alles in Ordnung, aber wenn Sie die Demo zu öffnen, sind die Eröffnungen falsch (weil während der Erstellung einer Bar der Preis im Inneren springt von min bis max), daher ist die Idee, die Kreuzung nur nach der Bar gebildet wird, dh Bar gebildet wird (wir sahen die Kreuzung) und dann den nächsten Markteintritt ist mit der Kreuzung gemacht.

Es ist seltsam, warum es im Tester in Ordnung ist - im Tester wird der Null-Balken auch nicht gebildet und es wird auch falsche Kreuzungen geben.

Achten Sie auf Überkreuzungen im 1. und 2. Takt. Wenn auf der zweiten МА1 <= МА2, während auf der ersten МА1 > МА2, bedeutet dies, dass МА1 МА2 von unten nach oben gekreuzt hat. Bei Top-Down ist es genau anders herum.

Führen Sie den Vergleich nur durch Subtraktion durch:

   double MA1=iMA(Symbol(),Period(),ma_period,ma_shift,ma_method,applied_price,1);
   double MA2=iMA(Symbol(),Period(),ma_period,ma_shift,ma_method,applied_price,2);
   if (NormalizeDouble(MA1-MA2,Digits)<=0)
   if (NormalizeDouble(MA1-MA2,Digits)>0) {
      // MA1 пересекла MA2 снизу-вверх
      }

Bei Top-Down ist es genau umgekehrt.

Sie können ihn nicht mit Null, sondern mit einem Mindestwert vergleichen, z. B. 0,1*Punkt

 
artmedia70:

Es ist seltsam, warum es im Tester in Ordnung ist - im Tester wird der Null-Balken auch nicht gebildet und es wird auch falsche Übergänge geben.

Achten Sie auf Überkreuzungen im 1. und 2. Takt. Wenn am zweiten MA1 <= MA2 und am ersten MA1 > MA2, dann hat MA1 MA2 von unten nach oben gekreuzt. Bei Top-Down ist es genau anders herum.

Führen Sie den Vergleich nur durch Subtraktion durch:

Bei Top-Down ist es genau umgekehrt.

Sie können ihn nicht mit Null, sondern mit einem Mindestwert vergleichen, z. B. 0,1*Punkt


Ich danke Ihnen vielmals!

Grund der Beschwerde: