Fragen Sie! - Seite 38

 

Ian,

Prüfen Sie Straddle&Trail expert. Sie finden es hier https://www.mql5.com/en/forum/general

 

Hallo zusammen,

Ich möchte alle meine Aufträge zur gleichen Zeit schließen, aber ich konnte es nicht.

Ich habe diesen Code versucht, aber es hat nicht funktioniert:

''''''''''''''''''''''''''''''''''''''''

total = OrdersTotal();

for(i=0;i < gesamt;i++)

{

if(OrderSelect(i, SELECT_BY_POS)==true)

{

OrderClose(OrderTicket(),OrderLots(),Ask,80,CLR_NONE);

OrderClose(OrderTicket(),OrderLots(),Bid,80,CLR_NONE);

}

}

''''''''''''''''''''''''''''''''''''''''

Kann mir jemand helfen?

Ich wäre Ihnen sehr dankbar, wenn Sie mir helfen könnten

 

Mehdi,

Fügen Sie diesen Code (Prozedur) außerhalb des Abschnitts start() ein, und wenn die Bedingung erfüllt ist, alle Geschäfte zu schließen, rufen Sie die Prozedur einfach so auf:

int start()

{ // Ihr Code hier .....

If (Ihre Bedingung hier) ShutDownAllTrades();

}

void ShutDownAllTrades

{ int Wiederholung;

While (OrdersTotal()>0)

{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderType()==OP_BUY)

{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }

RefreshRates();

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);

Sleep(1000);

}

else if (OrderType()==OP_SELL)

{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }

RefreshRates();

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);

Sleep(1000);

}

sonst

{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }

OrderDelete(OrderTicket());

Sleep(1000);

}

}

}

}

HTH

Yannis

 

Lieber Yannis,

vielen Dank für deine Hilfe.

Ich wünsche dir das Beste.

 
Yannis:
Mehdi,

Fügen Sie diesen Code (Prozedur) außerhalb des Abschnitts start() ein, und wenn die Bedingung erfüllt ist, alle Geschäfte zu schließen, rufen Sie die Prozedur einfach so auf:

int start()

{ // Ihr Code hier .....

If (Ihre Bedingung hier) ShutDownAllTrades();

}

void ShutDownAllTrades

{ int Wiederholung;

While (OrdersTotal()>0)

{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderType()==OP_BUY)

{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }

RefreshRates();

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);

Sleep(1000);

}

else if (OrderType()==OP_SELL)

{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }

RefreshRates();

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);

Sleep(1000);

}

sonst

{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }

OrderDelete(OrderTicket());

Sleep(1000);

}

}

}

}

HTH

Yannis

Lieber Yannis,

Ich habe deine Prozedur zwischen " int deinit() { } " (out of start) eingefügt, wie du gesagt hast, aber es gibt ein Problem beim Kompilieren nach void ShutDownAllTrades { : '{' Komma oder Semikolon erwartet.

Ich freue mich darauf, von Ihnen zu hören.

Herzlichen Dank!

 

Ups, Entschuldigung.

Was fehlt, ist das () nach void ShutDownAllTrades()

Achten Sie auch auf die Variable mit dem Namen 'Slippage' in der orderclose-Funktion.

Möglicherweise müssen Sie diese durch diejenige ersetzen, die Sie bei der Platzierung Ihrer Aufträge verwenden.

Yannis

 
Yannis:
Ups, Entschuldigung.

Was fehlt, ist das () nach void ShutDownAllTrades()

Achten Sie auch auf die Variable mit dem Namen 'Slippage' in der orderclose-Funktion.

Möglicherweise müssen Sie diese durch die Variable ersetzen, die Sie bei Ihren Aufträgen verwenden.

Yannis

Es funktioniert sehr gut !

Nochmals vielen Dank

 

Ich benutze MTF CCI Indikator ftom Multi Time Frame Indikatoren Thread, es ist ein gelber Schritt Linie, siehe Bild im Anhang.

Wenn die Linie über 100 Niveau (überkauft)- der Preis wird nach unten gehen und wenn seine unter -100 (überverkauft) - der Preis wird nach oben gehen.

Das einzige Problem dabei ist, dass es nicht immer aktualisiert wird. Ich muss es manuell machen, indem ich mit der rechten Maustaste auf das Diagramm klicke und "Refresh" wähle.

Eine Frage an die Programmierer: Gibt es eine Funktion in MQ4, die diese Art von Aktualisierung automatisch bei jedem Tick durchführt?

Wäre für einen Ratschlag dankbar.

euro pean

Dateien:
mtf_cci.jpg  37 kb
 

Versuchen Sie dies:

void ObjectsRedraw()

Zeichnet alle Objekte im Diagramm neu

Beispiel

ObjectsRedraw();

Möglicherweise müssen Sie zuerst ObjectCreate verwenden.

 
richx7:
Versuchen Sie dies:

void ObjectsRedraw()

Zeichnet alle Objekte im Diagramm neu

Beispiel

ObjectsRedraw();

Möglicherweise müssen Sie zuerst ObjectCreate verwenden.

Danke für die Antwort.

Soweit ich weiß, aktualisiert ObjectsRedraw() Objekte, die gerade 'erstellt' und 'gesetzt' wurden.

Ich muss einen Indikator aktualisieren, der sich nicht in der Objektliste befindet, also funktioniert ObjectsRedraw() nicht.

Oder wissen Sie vielleicht, wie man auf einen bestehenden Indikator verweist?