[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 625

 
Ja, genau!!!
 

Hier ist, wie es nicht ändern bye - und es ist eine zirkuläre Bedingung, und es funktioniert auch nicht die ganze Zeit.

Dies ist der richtige Ort.

//***************************************   
 
 bool nahodka=false;
 
 for (i=0; i<=OrdersHistoryTotal(); i++) {
 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
 if (OrderSymbol()!=Symbol())continue; 
 if (OrderMagicNumber() != 450) continue; Print (" tacket ",tacket, "  OrderTicket() ",OrderTicket(),"    profit " , profit, "    OrderTakeProfit( ) ",OrderTakeProfit( ) );
 if (tacket==OrderTicket()) {Print ("tacket==OrderTicket()    " );
 if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;}}     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tucket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )<Bid-treylingstop*Point ){ Print ("втораямодифи    " );
 OrderModify(  tucket, OrderOpenPrice(), Bid-treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 if (BUY == 0) {perenos=false;srabotka=false;nahodka=false;} 
 
 
 //*************************************** 
 
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
 
Dimka-novitsek:

Guten Morgen!

Ich kann es kategorisch nicht herausfinden - die Bedingungen für den Trailing-Stop funktionieren nicht.

Die Bestellung wird also sofort weggenommen, wenn sie noch nicht in der Historie steht, was ich überhaupt nicht verstehe!

Und das ist die Situation ist besser! Mit diesem Trick wird der Auftrag zumindest dann korrigiert, wenn er bereits in der Historie steht.

Aber einmal in fünf oder zehn Fällen nimmt nahodka nicht den Werttrue an, und eine weitere Änderung findet nicht statt!


Haben Sie versucht if(OrderClosePrice()==OrderTakeProfit())nahodka=true;?
 
Dimka-novitsek:

Guten Morgen!

Ich kann es kategorisch nicht herausfinden - die Bedingungen für den Trailing-Stop funktionieren nicht.

Die Bestellung wird also sofort weggenommen, wenn sie noch nicht in der Historie steht, was ich überhaupt nicht verstehe!

Und das ist die Situation ist besser! Mit diesem Trick wird der Auftrag zumindest dann korrigiert, wenn er bereits in der Historie steht.

Aber einmal in fünf oder zehn Fällen nimmt nahodka nicht den Wert true an , und eine weitere Änderung findet nicht statt!

Bei der Auswahl einer Bestellung per Ticket wird der Pool nicht berücksichtigt. Daher ist es absolut nutzlos, MODE_HISTORY zu schreiben. Nachdem der Auftrag gemäß dem Ticket ausgewählt wurde, sollten Sie unbedingt auch seine Schlusszeit OrderCloseTime() überprüfen - wenn sie größer als Null ist, wird der Auftrag geschlossen und aus der Historie ausgewählt, wenn sie Null ist, ist der Auftrag noch im Markt und wird aus der Liste der Marktpositionen ausgewählt.

Diese Prüfung ist in Ihren Zeilen nicht vorhanden:

if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;     // Находим ордер, сработавший именно по тейкпрофиту 

Man muss klein anfangen:

if (OrderSelect(tacket, SELECT_BY_TICKET)) {
   if (OrderCloseTime()>0) {                         // Убедились, что ордер выбран из истории
      // Тут ищете далее то, что вам необходимо ... а закрылся ли он по тейку ...
      }
   }

und du wirst glücklich sein...

 
Dimka-novitsek:

Guten Morgen!

Ich kann es kategorisch nicht herausfinden - die Bedingungen für den Trailing-Stop funktionieren nicht.

Die Bestellung wird also sofort weggenommen, obwohl sie noch nicht in der Historie steht, was ich überhaupt nicht verstehe!

Und das ist die Situation ist besser! Mit diesem Trick wird der Auftrag zumindest dann korrigiert, wenn er bereits in der Historie steht.

Allerdings nimmt nahodka keinen Wertwahr einmal von fünf bis zehnund es gibt keine weitere Änderung!

! - Es ist Ihr Einfallsreichtum, das Ticket zu benennen: tecket, tocket, tucket, etc. etc. Sind Sie bei diesen Namen nicht selbst verwirrt?! Mein Rat an Sie: Um Verwirrung zu vermeiden, lassen Sie es bleiben. Darauf baut LochBranding auf, zum Beispiel: ADIDAS und ADITAS...

Es macht auch keinen Sinn, so viele Flaggen zu haben, z. B:

     if (OrderSelect (ticket, SELECT_BY_TICKET))
     {
         //---- Проверяем закрыт этот ордер или нет
         if (OrderCloseTime > 0)
         {
             //---- Находим ордер, сработавший именно по тейкпрофиту 
             if (NormalizeDouble (OrderTakeProfit()- OrderClosePrice()), Digits) == 0.0)
             {
                 if (OrderSelect (tucket, SELECT_BY_TICKET))
                 {
                     double ld_SL = NormalizeDouble (Bid - treylingstop * Point, Digits);
                     if (NormalizeDouble (ld_SL - OrderStopLoss(), Digits) > 0.0)
                     {
                         Print ("втораямодифи    " );
                         OrderModify (tucket, OrderOpenPrice(), ld_SL, OrderTakeProfit(), 0, CLR_NONE);
                     }
                 }
             }
         }
     }
Dies ist eine einfache Improvisation auf der Grundlage Ihres Codes.
 
Dankeschön!!!!!!!
 
Dimka-novitsek:
Ja, genau!!!
Dimka-novitsek:

Hier ist, wie es nicht ändern bye - und es ist eine zirkuläre Bedingung, und es funktioniert auch nicht die ganze Zeit.

Dies ist der richtige Ort.


Es sollte sich nicht ändern, da das letzte Geschäft und im Allgemeinen alle Geschäfte auf dem gegebenen Diagramm auf sl geschlossen sind.
 
lottamer:

es stellt sich heraus, dass die Funktion SecondsAfterOpenLastPos() aus Kims Bibliothek diese Zahlen 1355319542 zurückgibt, und die letzte Zahl ist wirklich Sekunden... Sie können sehen, wie sie sich ändern.....

Was ist das? Wenn es wirklich Sekunden sind, dann sind es 43 Jahre.... und ein halbes.... und die Funktion sollte Sekunden ab dem Zeitpunkt zurückgeben, an dem die letzte Transaktion geschlossen wurde...

Obwohl es sich herausstellte, dass auch OrderOpenTime gibt Zeit im gleichen Format ... wie es in umgekehrter Weise zu übersetzen? muss offenbar die aktuelle Zeit nehmen und subtrahieren OrderOpenTime. Wie erhalte ich die aktuelle Uhrzeit?


Wenn Sie die Zeit in einem Format sehen möchten, an das Sie mehr gewöhnt sind, verwenden Sie die Konvertierungsfunktionen, von denen es viele im Hilfebereich von Datum und Uhrzeit gibt, Sie können die Ausgabe in verschiedenen Formaten anzeigen lassen, z. B. Tage, Stunden, Minuten, Zeit...

Die letzte Serverzeit wird von der Funktion iClose für Nullbar zurückgegeben. Oder nurClose[0].

Diese Funktion gibt den letzten bekannten Preis zurück. Die Zeit wird zurückkehren

TimeCurrent( )
 
rigonich:


Es wurde Ihnen bereits gesagt, dass dies das Zeitformat ist, mit dem der Computer arbeitet, und es ist das einzige, mit dem er arbeiten kann. Wenn Sie die Zeit in einem vertrauterem Format sehen wollen, verwenden Sie die Übersetzungsfunktionen, es gibt viele davon im Hilfebereich für Datum und Uhrzeit, Sie können ausgeben, was immer Sie wollen, separate Tage, Stunden, Minuten, Zeit in verschiedenen Formaten...

Die letzte Serverzeit wird von der Funktion iClose für Nullbar zurückgegeben. Oder nurClose[0].

Diese Funktion gibt den letzten bekannten Preis zurück. Die Zeit wird zurückkehren

TimeCurrent( )


Ich habe es geschafft, den Beitrag zu erwischen :))), obwohl ich ihn gelöscht habe... ich habe herausgefunden, dass die Zeit durch einfaches Subtrahieren vonTimeCurrent()-OrderOpenTime() ermittelt wird
 
lottamer:

Ich habe es geschafft, den Beitrag zu erwischen :))), obwohl ich ihn gelöscht habe... nachdem ich herausgefunden habe, dass die Zeit einfach durch Subtraktion von TimeCurrent()-OrderOpenTime() ermittelt wird

Wenn Sie möchten, dass ich Ihre Fragen nicht beantworte, sagen Sie es einfach.