Hilfe bei der Codierung - Seite 237

 

Hallo zusammen,

ich habe ein paar kurze Fragen zum Coding, mein MT4 scheint auf MQL5 umgestiegen zu sein.

Bestimmte Löschcodeblöcke funktionieren nicht mehr:

Darunter bekomme ich die Fehlermeldung:

'(' Object Pointer expected.

//+----------------------------------------------------------------------------+//| Schließen und löschen |

//+----------------------------------------------------------------------------+

if(sell)if(oppositeclose)close(OP_BUY);

if(buy)if(oppositeclose)close(OP_SELL);

if(hidetp || hidesl){hideclose(OP_BUY);hideclose(OP_SELL);}

if(usetimeout && onetime){closetime(OP_BUY);closetime(OP_SELL);}

if(onecancelother){if(totalsell>0){delete(OP_BUYSTOP);delete(OP_BUYLIMIT);}if(totalbuy>0){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}}

Darunter erhalte ich die Fehlermeldungen: 'delete' - Name erwartet und

'}' - Ausdrücke sind in einem globalen Bereich nicht erlaubt

void delete(int type){

if(AufträgeGesamt()>0){

for(i=OrdersTotal();i>=0;i--){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(Typ!=6){

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==type){

OrderDelete(OrderTicket());

}

}

if(type==6){

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP

|| OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT){

OrderDelete(OrderTicket());

}

}

}

}

}

Kann mir bitte jemand helfen?

Ich danke Ihnen im Voraus!

 

Hallo liebe Händler/Coder!

Ich hoffe, jemand kann mir hier weiterhelfen.

Beim Suchen und Ausprobieren der wenigen EA's, die es gibt, habe ich immer noch nicht gefunden, wonach ich gesucht habe.

Vielleicht suche ich nach etwas, das schwer zu finden ist oder ich gebe mir nicht die größte Mühe :-)

Ich handele auch mit einem SR-System, indem ich meine Linien zeichne und temporäre Kanäle erstelle. Gibt es etwas, das Positionen ausführen kann, wenn der Preis die Linien erreicht? Die Sache ist, dass es in der Lage sein muss, Positionen jedes Mal zu eröffnen, wenn der Preis die Linien erreicht. Rote Linien für Verkauf, blaue für Kauf, gelbe für SL und die grünen für TP. Also nicht nur einmalige Geschäfte oder OCO.

Vielen Dank im Voraus!!

Dateien:
sr.png  34 kb
 
daytrade:
Hallo liebe Trader/Coder!

Ich hoffe, jemand kann mir hier helfen.

Beim Suchen und Ausprobieren der wenigen EA's, die es gibt, habe ich immer noch nicht gefunden, wonach ich gesucht habe.

Vielleicht bin ich auf der Suche nach etwas, das schwer zu finden ist oder ich gebe mir nicht die größte Mühe :-)

Ich handele auch mit einem SR-System, indem ich meine Linien zeichne und temporäre Kanäle erstelle. Gibt es etwas, das Positionen ausführen kann, wenn der Preis die Linien erreicht? Die Sache ist, dass es in der Lage sein muss, Positionen jedes Mal zu eröffnen, wenn der Preis die Linien erreicht. Rote Linien für Verkauf, blaue für Kauf, gelbe für SL und die grünen für TP. Also keine einmaligen Geschäfte oder OCO.

Vielen Dank im Voraus!!

Haben Sie den EA aus diesem Thread geprüft: https: //www.mql5.com/en/forum/176382?

 

Stop Loss ändern

Hallo zusammen,

weiß jemand, warum meine Modify Stop Loss Order nicht richtig funktioniert?

Der Stop Loss schwankt sehr schnell zwischen DonchianLowM5 und OrderOpenPrice, wenn der DonchianLowM5 über den OrderOpenPrice steigt.

Dies ist der Code (sorry, ich weiß nicht, wie ich ihn richtig einfügen kann).

//--- Bewegung des Stop Loss

if (OrdersTotal() > 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderType() == OP_BUY)

{

if (OrderStopLoss() < OrderOpenPrice())

{

wenn (DonchianLowM5 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green);

}

}

if (OrderStopLoss() > OrderOpenPrice())

{

if (DonchianLowH4 <= OrderOpenPrice())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

}

}

if (OrderStopLoss() >= OrderOpenPrice())

{

wenn (DonchianLowH4 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green);

}

}

}

Etwas verwirrend.

Der Zweck des Codes ist es,:

1. Den Stop Loss so zu ändern, dass er dem unteren Donchian Channel auf dem M5 Chart bis zum OrderOpenPrice folgt. Der Stop Loss soll nicht dem Donchian Channel auf dem M5 Chart über den OrderOpenPrice hinaus folgen. Er bewegt sich bis zum Break-Even.

2. Manchmal schließt eine große Kerze jenseits des OrderOpenPrice, so dass der zweite Teil des Codes nur dazu dient, den Break-Even zu erreichen.

3. Der Stop Loss soll das Donchian Low auf dem H4-Chart verfolgen, sobald der Donchian Channel auf dem H4-Chart den OrderOpenPrice überschreitet.

Die Donchian-Kanäle sind wie folgt kodiert:

DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1));

DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1));

Ich habe das Journal überprüft, und der Stop-Loss ändert sich genau auf den OrderOpenPrice (er liegt nicht darunter, auch nicht um einen Bruchteil eines Pips, was dazu führen würde, dass er das Donchian Low auf dem M5-Chart verfolgt).

Weiß jemand, warum das so ist?

 
crsnape@btinternet.com:
Hallo zusammen,

Weiß jemand, warum mein modifizierter Stop-Loss-Auftrag nicht richtig funktioniert?

Der Stop-Loss springt sehr schnell zwischen dem DonchianLowM5 und dem OrderOpenPrice hin und her, wenn der DonchianLowM5 über den OrderOpenPrice steigt.

Dies ist der Code (sorry, ich weiß nicht, wie ich ihn richtig einfügen kann).

//--- Bewegung des Stop Loss

if (OrdersTotal() > 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderType() == OP_BUY)

{

if (OrderStopLoss() < OrderOpenPrice())

{

wenn (DonchianLowM5 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green);

}

}

if (OrderStopLoss() > OrderOpenPrice())

{

if (DonchianLowH4 <= OrderOpenPrice())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

}

}

if (OrderStopLoss() >= OrderOpenPrice())

{

wenn (DonchianLowH4 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green);

}

}

}

Etwas verwirrend.

Der Zweck des Codes ist es,:

1. Den Stop Loss so zu ändern, dass er dem unteren Donchian Channel auf dem M5 Chart bis zum OrderOpenPrice folgt. Der Stop Loss soll nicht dem Donchian Channel auf dem M5 Chart über den OrderOpenPrice hinaus folgen. Er bewegt sich bis zum Break-Even.

2. Manchmal schließt eine große Kerze jenseits des OrderOpenPrice, so dass der zweite Teil des Codes nur dazu dient, den Break-Even zu erreichen.

3. Der Stop Loss soll das Donchian Low auf dem H4-Chart verfolgen, sobald der Donchian Channel auf dem H4-Chart den OrderOpenPrice überschreitet.

Die Donchian-Kanäle sind wie folgt kodiert:

DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1));

DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1));

Ich habe das Journal überprüft, und der Stop-Loss ändert sich genau auf den OrderOpenPrice (er liegt nicht darunter, auch nicht um einen Bruchteil eines Pips, was dazu führen würde, dass er dem Donchian Low auf dem M5-Chart folgt).

Weiß jemand, warum das so ist?

Sie verwenden DonchianLowM5 und DonchianLowH4 (ich gehe davon aus, dass dies unterschiedliche Werte sind). Das könnte ein Problem darstellen

 

Hallo Mladen,

danke für deine Antwort.

DonchianLowM5 und DonchianLowH4 sind unterschiedliche Werte, die aber beide ihren eigenen Zweck haben. Der DonchianLowM5 wird verwendet, um den SL so anzupassen, dass er in der Anfangsphase eines Trades die Gewinnschwelle erreicht. Der DonchianLowH4 passt den SL als Trailing-Stop-Mechanismus an. Dieser sollte erst in Kraft treten, wenn der DonchianLowH4 den OrderOpenPrice übersteigt.

Ich habe mich mit diesem Thema etwas eingehender beschäftigt und möglicherweise das Problem gefunden. Ich wollte herausfinden, ob die Funktion OrderModify den SL genau wie OrderOpenPrice neu positioniert. Aber das tut sie nicht. Der OrderOpenPrice in meinem Journal ist mit 1,12224 angegeben, also mit 5-stelliger Genauigkeit, und dennoch gibt die Print-Funktion unten an, dass der OrderOpenPrice nur 4-stellig ist. Der SL verwendet also diese 4-stellige Zahl und nicht die 5-stellige. Ich möchte, dass er die 5-stellige Zahl verwendet.

Wie kann ich erreichen, dass der SL den OrderOpenPrice EXAKT auf 5 Ziffern anpasst?

Dies ist mein Code:

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

Print("SL geändert auf OrderOpenPrice ", OrderOpenPrice());

}

Ich habe dies versucht, aber es funktioniert nicht:

OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green);

Print("SL geändert auf OrderOpenPrice ", OrderOpenPrice());

Mein Broker hat 5 Ziffern, weil das Journal den Preis bestätigt, zu dem er die Order bei 1,12224 eröffnet hat.

Ich hoffe, meine Erklärung macht Sinn. Irgendwelche Ideen?

 
crsnape@btinternet.com:
Hallo Mladen,

Vielen Dank für Ihre Antwort.

DonchianLowM5 und DonchianLowH4 sind unterschiedliche Werte, die aber jeweils ihren eigenen Zweck erfüllen. Der DonchianLowM5 wird verwendet, um den SL so anzupassen, dass er in der Anfangsphase eines Handels die Gewinnschwelle erreicht. Der DonchianLowH4 passt den SL als Trailing-Stop-Mechanismus an. Dieser sollte erst in Kraft treten, wenn der DonchianLowH4 den OrderOpenPrice übersteigt.

Ich habe mich mit diesem Thema etwas eingehender beschäftigt und möglicherweise das Problem gefunden. Ich wollte herausfinden, ob die Funktion OrderModify den SL genau wie OrderOpenPrice neu positioniert. Aber das tut sie nicht. Der OrderOpenPrice in meinem Journal ist mit 1,12224 angegeben, also mit 5-stelliger Genauigkeit, und dennoch gibt die Print-Funktion unten an, dass der OrderOpenPrice nur 4-stellig ist. Der SL verwendet also diese 4-stellige Zahl und nicht die 5-stellige. Ich möchte, dass er die 5-stellige Zahl verwendet.

Wie kann ich erreichen, dass der SL den OrderOpenPrice EXAKT auf 5 Ziffern anpasst?

Dies ist mein Code:

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

Print("SL geändert auf OrderOpenPrice ", OrderOpenPrice());

}

Ich habe dies versucht, aber es funktioniert nicht:

OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green);

Print("SL geändert auf OrderOpenPrice ", OrderOpenPrice());

Mein Broker hat 5 Ziffern, weil das Journal den Preis bestätigt, zu dem er die Order bei 1,12224 eröffnet hat.

Ich hoffe, meine Erklärung macht Sinn. Irgendwelche Ideen?

Die Tatsache, dass Sie den Preis mit einer Genauigkeit von 4 Stellen gedruckt bekommen, ist nicht das Problem: Verwenden Sie einfach Print(DoubleToStr(OrderOpenPrice(),Digits)); und Sie erhalten einen korrekten Ausdruck. Das Problem ist etwas anderes, und ich dachte, wenn Sie mit zwei völlig unterschiedlichen Preisen vergleichen, könnten Sie diese Probleme bekommen

 

Ach ja, richtig.

Wie meinen Sie das? Habe ich meine Klammerstruktur falsch verstanden?

Der Code soll je nach Situation entweder den DonchianLowM5 oder den DonchianLowH4 wählen.

Vielleicht ist mein Klammeraufbau und -abbau für jedes Codeelement falsch.

 

Versuchen Sie, den Code zu vereinfachen. Etwa so wie der beigefügte

PS: Prüfen Sie, ob das die Logik ist, die Sie im Sinn hatten

Dateien:
 

Hallo, hier bin ich zwei Indikatoren, eine auf dem RSI und der andere auf der Stärke-Index basiert, aber das Problem fragt mich rsi suchen Kurven, zeigt es nicht, dass ich will, wenn Sie die Lösung haben, kann ich natürlich senden Sie die Datei, wenn nötig danke für Ihre Hilfe ... sorry für die englische "google traductor"

Grund der Beschwerde: