[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 1050

 

Wie schreibe ich die Bedingung if(ordershistorytotal()"um eine Bestellung aufgefüllt")?

 
Stasjan:

Wie schreibe ich die Bedingung if(ordershistorytotal()"um eine Bestellung aufgefüllt")?

Dazu muss der vorherige Wert von OrdersHistoryTotal() in einer statischen Variablen gespeichert werden, und die vorherigen und aktuellen Werte müssen in der Bedingung verglichen werden. Wenn es sich verändert hat, dann hat es sich aufgefüllt, da sich die Werte dort nicht in eine kleinere Richtung verändern.
 
Reshetov:
Dazu muss der vorherige Wert von OrdersHistoryTotal() in einer statischen Variablen gespeichert werden, und die vorherigen und aktuellen Werte müssen in der Bedingung verglichen werden. Wenn er sich verändert hat, dann hat er sich aufgefüllt, da sich die Werte dort nicht nach unten verändern.

Danke!!!
 
prom18:
Bitte, helfen Sie. Der Expert Advisor setzt zwei Anhänger BuyStop und SellStop an das Signal. Es gibt auch ein Signal zur Eröffnung eines schwebenden Kaufauftrags. Ich muss einen alten Kaufauftrag nach den Bedingungen des letzten Signals ändern. Ich habe es mit der Funktion OrderModify() gemacht. Es hat nicht geklappt. Es wird die Fehlermeldung 4051 ausgegeben. So wählen Sie die gewünschte Bestellung aus. Ich verstehe, dass wir das Ticket wählen sollten, aber wie kann man das Ticket der gewünschten Bestellung bestimmen (in diesem Fall handelt es sich um BuyStop). Erklären Sie zumindest die Logik des Handelns. Vielen Dank!

int ticket = -1;

...

OrderSelect(...);

if (OrderType() == OP_BuyStop) {

ticket = OrderTicket();

OrderModify(...);

zurück(0);

}

 
Reshetov:
Dazu muss der vorherige Wert von OrdersHistoryTotal() in einer statischen Variablen gespeichert werden, und die vorherigen und aktuellen Werte müssen in der Bedingung verglichen werden. Wenn er sich verändert hat, dann hat er sich aufgefüllt, da sich die Werte dort nicht nach unten verändern.

Haben Sie einen Ratschlag, wie man es gleich machen kann?
 
Roman.:

1 ist sicherlich nicht viel. Vieles hängt von der Geschwindigkeit ab, mit der der Broker Ihre Aufträge ausführt, von der Geschwindigkeit, mit der Sie (über das Internet) Ihre Aufträge an den Broker weitergeben, und wahrscheinlich auch von "etwas" auf dem realen Konto, das uns (mir) nicht bekannt ist. Slava schrieb, wie der Broker seinen Pipsaurus (mittels der sog. "individuellen Annäherung" an den Kunden), der den minimalen Abstand von 2,3 Punkten auf 18 - 20 Punkte erhöht, geschnitten hat, siehe den Zweig hier https://forum.mql4.com/ru/37451/page10...
Ich habe 2 Punkte auf "Puffer" gesetzt - alle Trades sind jetzt geöffnet ) Nochmals vielen Dank.
 
Stasjan:

Gibt es Tipps, wie man sie zurücksetzen kann?

static prevhitorytotal = 0;

...

if (OrderHistoryTotal() != prevhistorytotal) {

// aufgefüllt um einen Auftrag

}

prevhistorytotal = OrderHistoryTotal();

 
Reshetov:
Zu diesem Zweck muss der vorherige Wert von OrdersHistoryTotal() in einer statischen Variablen gespeichert werden, und die vorherigen und aktuellen Werte müssen in der Bedingung verglichen werden. Wenn es sich verändert hat, dann hat es sich aufgefüllt, da die Werte dort nicht nach unten verändert werden.


static int totalh=OrdersHistoryTotal();

if(OrdersHistoryTotal()>totalh)

Habe ich das richtig verstanden oder nicht?

 
Reshetov:

static prevhitorytotal = 0;

...

if (OrderHistoryTotal() != prevhistorytotal) {

// aufgefüllt um einen Auftrag

}

prevhistorytotal = OrderHistoryTotal();


Haben Sie es?

 
Stasjan:


static int totalh=OrdersHistoryTotal();

Falsch.

static int totalh=0; // statische Variablen werden vor den Aufrufen start(), init() und deinit() deklariert

...

int start() {

...

if (OrderHistoryTotal() != totalh) {

// aufgefüllt um einen Auftrag

}

totalh = OrderHistoryTotal();

...

}