Einzelnen Beitrag anzeigen
  #32 (permalink)  
Alt 02.09.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Michael_ Beitrag anzeigen
  1. Wenn ein LONG-Signal gegeben ist, dann werden 2 Long-Orders aufgegeben.
  2. Sagen wir mal, der Kurs pendelt und es ergibt sich später nochmal ein LONG-Signal, es werden wieder 2 Long-Orders eröffnet. Dann sind derzeit 4 Orders offen.
  3. Angenommen, der Kurs steigt und aufgrund dessen soll mit einem Trailing Stop nachgezogen werden. Nachdem aber beim 1. LONG-Signal ein anderer Eröffnungspreis UND SL gesetzt wurde als beim 2. LONG-Signal, ist der Trailing Stop bei den ersten beiden Orders anders als bei den zweiten zwei Orders.
  4. Ich berechne den Trailing Stop daher mit dem ursprünglich gesetzten SL der Order. Wenn aber schon nachgezogen wurde, dann passt meine Berechnung nicht mehr.
0. EAname ist ein string, der eindeutig beschreibt, auf was sich dieser EA bezieht (darf nicht mit einer Zahl beginnen), also z.B.
EAname="EA"+IntegerToString(MagicNummer)+_Symbol;
Das ergibt dann sowas wie EA1234EURUSD

1. wenn LongOder1 erfolgreich abgesetzt wurde
a. GlobalVariableSet(EAname+"-Long1Ticket",TicketNummer);
b. GlobalVariableSet(EAname+"-Long1SL",ursprünglicherLongOrder1SLwert);
Dasselbe für LongOrder2, 3 und 4.
Dasselbe wenn ShortOrders rausgehen.

2. Beim Trailen prüfen, ob das noch dieselbe TicketNummer ist
a. wenn OrderTicket()==(int)GlobalVariableGet(EAname+"-Long1Ticket")
b. dann ursprünglichen SL holen SL=GlobalVariableGet(EAname+"-Long1SL")
c. mit dem geholten SL den Trailwert ermitteln und trailen

Wenn Du keine Teilverkäufe machst, mußt Du nur überwachen, ob die LongOrder1 geschlossen wurde (dann findest Du die TicketNummer in der HISTORY), dann kannst Du die beiden Globalvariaben zu dieser LongOrder löschen.
Außerdem mußt Du die HISTORY überwachen, um zu sehen, ob die Orders in den TP oder SL gelaufen sind (dann enthält der OrderComment() zusätzlich [sl] oder [tp]) - auch dann können die Globalvariablen entfernt werden.
Wenn Du den EA am Tagesende schließt, alle Orders schließen - wenn geschlossen, die Globalvariablen zu dieser Order löschen.

Das wäre der Weg. AVT
p.s. Bei Teilverkäufen ist das noch mal ein bißchen mehr zu rechnen.