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

 
FOReignEXchange:


Wer mag, was er mag. Die Handschrift ist bei jedem Menschen anders. Vielleicht haben Sie es richtig verstanden, aber ich denke, es ist schlampig.

So würde ich es nicht machen.

Erstens bin ich mir nicht ganz sicher, warum ich dort eine Variable deklarieren sollte und was der Sinn darin ist, ich verstehe es auch nicht.

Zweitens befindet sich die Zeile PriceBuy = Ask; direkt nach der Funktion OrderSend. Und soweit ich das verstanden habe, werden die Berechnungen sofort an die nächste Zeile weitergegeben, sobald diese Funktion ihre Ausführung beendet hat. Ich glaube nicht, dass sich der Ask-Preis ändern kann. Ich versuche, alles so einfach wie möglich zu schreiben und die Anzahl der Zeichen zu reduzieren, wenn es den normalen Betrieb des Programms nicht beeinträchtigt. Ich kann einen Wert auf dieselbe Weise zuweisen wie Sie, ich sehe hier kein Problem. Ich habe das geschrieben, was mir als erstes und am einfachsten in den Sinn kam.

Ich habe einmal einen Pips Expert Advisor geschrieben und an einem Wettbewerb teilgenommen, bei dem der zu berücksichtigende Mindestgewinn 5 Pips beträgt. Ich setzte TP=5, SL=10 in meinem EA und ging spazieren. Als ich am Abend nach Hause kam und in den Terminal schaute, war ich enttäuscht. Mein Pips Expert Advisor schloss die meisten meiner Trades mit Gewinn ab, aber der Gewinn einiger von ihnen war 4 Punkte und sogar 3, und nicht 5, die ich brauchte. Übrigens, SL war manchmal nicht 10, sondern 11 oder 12 Punkte...

Und warum? Ich bin sicher, Sie kennen die Antwort! :D

Hier ist eine reale Situation, in der ich aufgehört habe, Ask- und Bid-Preise als Eröffnungskurse von Aufträgen zu zählen. Wenn 1-2 Punkte für Sie nicht von Bedeutung sind, ist das in Ordnung. Für mich sind es die kleinen Dinge, die wichtig sind.

 
MaxZ:

Warum nicht? Ich bin sicher, Sie kennen die Antwort! :D

Nein. Ich dachte zuerst, es läge daran, dass die Streuung nicht gezählt wurde.

Gab es Trades, bei denen der Gewinn 6-7 Pips betrug?

 
FOReignEXchange:
Nein. Ich dachte zunächst, es läge daran, dass die Spanne nicht berechnet wurde.

Verdammt... Um mich selbst zu zitieren:

MaxZ:

Drittens: Wenn in der OrderSend-Handelsfunktion Slippage angegeben ist und wir eine Kauforder eröffnen wollen, wird die Order nicht unbedingt genau zum Briefkurs eröffnet, da die Ausführung einer Handelsorder, die von der OrderSend-Funktion vorgegeben wird, eine gewisse Zeit in Anspruch nimmt und sich der Kurs von diesem Wert entfernen kann.

Und an welchen Preiswert binden wir TP und SL? Zu fragen... Der Preis hat sich geändert, aber TP und SL haben sich nicht bewegt.

 
MaxZ:

Auf welchen Preiswert werden wir TP und SL festlegen? Zu fragen... Der Preis hat sich geändert, aber TP und SL haben sich nicht bewegt.

Ich kann nicht garantieren, dass meine Rechtschreibung absolut korrekt ist. Aber ich mache das immer so, wenn ich es brauche. Ich habe nichts bemerkt, was damit nicht in Ordnung wäre.

Ich kann nichts über Ihren Fall sagen, in dem Sie eine Gewinnfixierung von weniger als 5 Pips hatten, da ich den Code nicht gesehen habe.

 

War:

if (Opn_B)
{
   Alert("Попытка открыть ордер Buy...");
   RefreshRates();
   SL =  Ask-StopLoss*Point;
   TP =  Ask+TakeProfit*Point;
   Ticket = OrderSend(Symb, OP_BUY , Lots, Ask, Slippage, SL, TP, NULL, MAGIC, 0, Blue);
   if (Ticket > 0)
   {
      Alert("Открыт ордер Buy ", Ticket, ".");
      Opn_B = False;
   }
   else
      Alert("Ошибка: ", GetLastError());
}

Wurde:

if (Opn_B)
{
   Alert("Попытка открыть ордер Buy...");
   RefreshRates();
   SL = Ask-StopLoss*Point;
   TP = Ask+TakeProfit*Point;
   Ticket = OrderSend(Symb, OP_BUY , Lots, Ask, Slippage, SL, TP, NULL, MAGIC, 0, Blue);
   if (Ticket > 0)
   {
      if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))
      if (OrderCloseTime() == 0)
      {
         Alert("Открыт ордер Buy ", Ticket, ".");
         Opn_B = False;
         
         if (NormalizeDouble(OrderOpenPrice()-OrderStopLoss(), Digits) != NormalizeDouble(StopLoss*Point, Digits))
         {
            SL = OrderOpenPrice()-StopLoss*Point;
            TP = OrderOpenPrice()+TakeProfit*Point;
            
            Alert("Попытка модифицировать ордер Buy ", Ticket, "...");
            if (OrderModify(Ticket, OrderOpenPrice(), SL, TP, 0, Blue))
               Alert("Ордер Buy ", Ticket, " модифицирован.");
            else
               Alert("Ошибка: ", GetLastError());
         }
      }
      else
         Alert("Да ну нафиг!?");
   }
   else
      Alert("Ошибка: ", GetLastError());
}

Der Grundsatz lautet wie folgt. Aber es ist ein bisschen komplizierter als das...

Wie viele Zeilen? Wirklich? :)))

 
MaxZ:

War:

Wurde:

Der Grundsatz lautet wie folgt. Aber es ist ein bisschen komplizierter als das...

Wie viele Zeilen? Wirklich? :)))


??? Das verstehe ich nicht. Wo sind der SL und der TP im ersten Beispiel?
 
FOReignEXchange:

??? Das verstehe ich nicht. Wo sind der SL und der TP im ersten Beispiel?

Ich habe nur das Prinzip gezeigt. Also gut. Hinzugefügt.

MaxZ:

Der Grundsatz lautet wie folgt. Aber es ist ein bisschen komplizierter als das...

Wenn der Auftrag nicht zum angegebenen Preis eröffnet wird, kann es zu einem Fehler bei der Änderung des Auftrags kommen, und wir stoßen auf den gleichen Rake... Deshalb versuchen wir auch, die Bestellung mehr als einmal zu ändern, wenn sie ein positives Ticket hat... Wir wollen nur nicht den ganzen Code kopieren. Es ist umständlich. Aber das Prinzip ist klar.
 
Ah, ich verstehe. SL und TP stehen vor der OrderSend-Funktion. Vielleicht war das das Problem?
 
FOReignEXchange:
Ah, ich verstehe. SL und TP stehen vor der OrderSend-Funktion. Vielleicht war das das Problem?
Was könnte das Problem sein? Zu dem Zeitpunkt, an dem SL und TP berechnet werden, hat der Preis Zeit, sich zu ändern? ;)))
 
MaxZ:
Worin könnte das Problem bestehen? Wenn SL und TP berechnet werden, hat der Preis Zeit, sich zu ändern? ;)))

Ich habe Ihnen gesagt, dass sich der Preis ändern kann, während die Funktion OrderSend ausgeführt wird. Wir müssen sie also nachträglich zuweisen, wenn sie sich bereits geändert hat.
Grund der Beschwerde: