Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 963

 

jaatztek, ich entschuldige mich für die ungenaue Beschreibung:

1. Denn vor dem Schnittpunkt mit dem MA handelte es sich um Kauf-Stopp-Aufträge, und Ur1, Ur2 und Ur3 werden erst identifiziert, nachdem der Kurs den MA überschritten hat.

2. bzw. die oben erwähnte Suche nach dem Zyklus unter allen Kaufaufträgen (da es 3 weitere Verkaufsstopp-Aufträge gibt und diese bei jeder Kerze auf einen anderen MA kriechen)

 
vadimvborisov:


jaatztek, ich entschuldige mich für die ungenaue Beschreibung:

1. Denn vor dem Schnittpunkt mit dem MA handelte es sich um Kauf-Stopp-Aufträge, und Ur1, Ur2 und Ur3 werden erst identifiziert, nachdem der Kurs den MA überschritten hat.

2. bzw. die oben erwähnte Suche nach dem Zyklus unter allen Kaufaufträgen (da es 3 weitere Verkaufsstopp-Aufträge gibt und diese bei jeder Kerze auf einen anderen MA kriechen)

1. Sie sagten:
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров

Stop-Aufträge werden in dem Moment handelbar, in dem sie vom Kurs durchkreuzt werden, MA hat damit nichts zu tun.
Ok, es liegt an Ihnen zu entscheiden, wie Ihr EA funktioniert.

2. Was ist der Zweck - ?
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);

D.h. für jeden Zyklus im "for" sehen Sie einen Auftrag und nicht alle drei auf einmal.
 

atztek: 1. Ich habe meinen ersten Beitrag bereits korrigiert.

2. Zuweisung vonbool mod_Buy1 = Order ändern (OrderTicket (die erste BUY-Order der vorherigen), Eröffnungskurs nicht ändern, StopLoss nicht ändern, TakeProfit wird von Ur1,0,clrNONE übernommen);

"Mit anderen Worten: In jeder Schleife des "for"-Programms sehen Sie eine Reihenfolge, aber nicht alle drei zur gleichen Zeit.

Die Sache ist die, dass ich nicht herausfinden kann, wie ich diese 3 Aufträge nach Tickets durchgehen und für jeden von ihnen(Ur1 Ur2 Ur3) die entsprechenden Take-Profit-Stufen festlegen kann.

 
vadimvborisov:

atztek, 1. ich habe meinen ersten Beitrag bereits korrigiert.

2. Zuweisung vonbool mod_Buy1 = Order ändern (OrderTicket (die erste BUY-Order der vorherigen), Eröffnungskurs nicht ändern, StopLoss nicht ändern, TakeProfit wird von Ur1,0,clrNONE übernommen);

"Mit anderen Worten: In jeder Schleife des "for"-Programms sehen Sie eine Reihenfolge, aber nicht alle drei zur gleichen Zeit.

Die Sache ist die, dass ich nicht herausfinden kann, wie ich diese 3 Aufträge nach Tickets durchgehen und für jeden von ihnen(Ur1 Ur2 Ur3) die entsprechenden Take-Profit-Stufen festlegen kann.


1) Entweder verstehe ich Sie nicht, oder Sie wissen nicht, was Sie tun wollen (oder wie es funktioniert).
Selbst nach der Korrektur sprechen Sie davon, dass Sie Stop-Aufträge hatten und diese dann "nach Überschreiten des MA" zu Marktaufträgen wurden.
- Sie eröffnen entweder sofort Marktaufträge (z. B. "nach Überschreiten des MA") oder Sie eröffnen Stop-Aufträge, die automatisch zu Marktaufträgen werden, sobald der Kurs sie überschreitet.

2. Ich sehe, dass dies keine Frage der Korrektur ist, sondern der Logik Ihres EA
(Es gibt viele Fragen, z. B. ob Sie zu diesem Zeitpunkt noch andere Aufträge offen haben, warum Aufträge anhand des Tickets und nicht anhand der Positionen ausgewählt werden usw.)
Beginnen Sie nicht mit 3 Aufträgen auf einmal, sondern mit einem einfachen Beispiel mit einem Auftrag, und stellen Sie sicher, dass der Expert Advisor fehlerfrei funktioniert. Dann verkomplizieren Sie es, indem Sie 3 Aufträge hinzufügen.
 

1) Ja, genau -"Sie eröffnen Stop-Aufträge, die automatisch zu Marktaufträgen werden, sobald der Kurs sie überschreitet. "

2) In dem Moment, in dem Limitaufträge in Marktaufträge umgewandelt werden, gibt es keine anderen (Markt-)Aufträge, sondern nur Limitaufträge. Vielleicht können Sie auch nach Position und nicht nach Ticket auswählen - mir macht das nichts aus. Ok. Betrachten wir die Situation mit zwei Aufträgen. denn ich kann mit einem selbst umgehen....

 
vadimvborisov:

1) Ja, genau -"Sie eröffnen Stop-Aufträge, die automatisch zu Marktaufträgen werden, sobald der Kurs sie überschreitet. "

2) In dem Moment, in dem Limitaufträge in Marktaufträge umgewandelt werden, gibt es keine anderen (Markt-)Aufträge, sondern nur Limitaufträge. Vielleicht können Sie auch nach Position und nicht nach Ticket auswählen - mir macht das nichts aus. Ok. Betrachten wir die Situation mit zwei Aufträgen. denn ich kann mit einem selbst umgehen....

Sind die Grenzwerte schon eingetroffen?
Also gut, los geht's. Wenn Sie eine haben, wird der Rest klar.
 
vadimvborisov:

1) Ja, genau -"Sie eröffnen Stop-Aufträge, die automatisch zu Marktaufträgen werden, sobald der Kurs sie überschreitet. "

2) In dem Moment, in dem Limitaufträge in Marktaufträge umgewandelt werden, gibt es keine anderen (Markt-)Aufträge, sondern nur Limitaufträge. Vielleicht können Sie auch nach Position und nicht nach Ticket auswählen - mir macht das nichts aus. Ok. Betrachten wir die Situation mit zwei Aufträgen. denn ich kann mit einem selbst umgehen....

Das ist genau das, was wir brauchen.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 

1. Entschuldigung, ich meinte Stop-Aufträge.

2. mit 1 funktioniert alles. aber mit zwei oder mehr kann ich nicht herausfinden....

 

Grüße,AlexeyVik

bool mod_Buy1 = Modify Order ( OrderTicket(das i-te BUY der abgeholten )

und für die anderen beiden BUY's wie? Auf dieselbe Art und Weise?

////////////////////////////
 int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy2 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy3 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 
vadimvborisov:

Grüße,AlexeyVik

bool mod_Buy1 = Modify Order ( OrderTicket(das i-te BUY der abgeholten )

und für die anderen beiden BUY's wie? Auf dieselbe Art und Weise?

Beachten Sie die Schleife in meinem Beispiel. In der Schleife werden alle Orders nach Typ geprüft, auch nach Symbolen und Magie, und es wäre schön, OrderStopLoss == 0 oder OrderTakeProfit == 0 zu prüfen, je nachdem, was wichtig ist, ob die Order ohne Stop oder ohne Take-Away-Order, um nicht zu versuchen, die Order unnötig zu ändern und nicht den Fehler 1 zu bekommen.

In dieser Schleife wird ein Auftrag nach dem anderen ausgewählt, und wenn alle Bedingungen erfüllt sind, wird er zur Bearbeitung weitergeleitet. Dadurch werden alle erforderlichen Aufträge geändert.

Die zweite Variante: Wenn nur 3 Aufträge vorgesehen sind, können wir z.B. int tick_buy_1, tick_buy_2, tick_buy_3 auf der Ebene von globalen Variablen deklarieren und die Ticks beim Öffnen des Auftrags in diese Variablen eintragen. Dann können wir den Auftrag nach Ticket auswählen, seine Art prüfen, ob der Auftrag abgeschlossen ist oder nicht, und erst dann, ohne die Schleife.

   bool mod_Buy1 = Модифицировать ордер ( tick_buy_1 );
   bool mod_Buy2 = Модифицировать ордер ( tick_buy_2 );
   bool mod_Buy3 = Модифицировать ордер ( tick_buy_3 );