Wie programmiert man? - Seite 289

 

Brauche Hilfe bei der Fertigstellung dieses EA

Ich versuche, einen EA zu programmieren (unter Verwendung einiger bereits erstellter Codes), der Folgendes tut:

  • Eröffnet zwei Pending Orders, einen Sell Stop und einen Buy Stop, zu einer bestimmten Zeit (in diesem Fall 23:00), beide mit einem SL und einem TP.
  • Die Pending-Order läuft zu einem bestimmten Zeitpunkt aus (z.B. um 10:00 Uhr) und eröffnet am Freitag um 23:00 Uhr keine Geschäfte mehr.
  • Wenn zwei Geschäfte eröffnet werden und eines den SL erreicht, wird der TP des anderen auf einen bestimmten Betrag erhöht (ich denke, eine OrderModify wird so etwas lösen).
  • Offene Trades werden automatisch um 23:00 Uhr am nächsten Tag geschlossen.
  • Der EA ist fast fertig und einige frühere Probleme, die ich hatte, wurden gelöst und macht das meiste der oben genannten, aber ich habe immer noch die folgenden Probleme und an diesem Punkt weiß ich nicht, wie weiter zu gehen, so dass, wenn jemand den Code erforderlich, die sehr hilfreich sein könnte.

  • Wenn zwei Trades offen sind und einer den Stoploss erreicht, muss der Take Profit des anderen Trades, der noch offen ist, um einen bestimmten Betrag erhöht werden.
  • Die Geschäfte werden immer noch am Freitag um 23:00 Uhr geöffnet, was ich nicht möchte.
  • Alle Geschäfte, die um 23:00 Uhr noch offen sind, sollten geschlossen werden, egal ob sie im Verlust oder im Gewinn sind.

Ich bin ein Neuling bei MQL und habe versucht, nach Lösungen für einige der oben genannten Probleme zu suchen, aber ich habe Schwierigkeiten, sie zu finden. Ich glaube, dass die Probleme ganz einfach gelöst werden können und nicht so viel komplizierte Codierung erforderlich ist. Wenn mir jemand eine Lösung oder Lösungen für eines der oben genannten Probleme anbieten könnte, wäre ich wieder einmal sehr dankbar dafür.

Vielen Dank!

madmax3

 

...

Versuchen Sie etwas wie dies:

if((CurrentPriceBuy>UpperPriceTrigger) && TakeAction==1)

{

int ticketBuy = OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,CLR_NONE);

if (ticketBuy>-1)

OrderModify(ticketBuy,OrderOpenPrice(),stopLossToUse,takeProfitToUse,0,CLR_NONE);

}

Ersetzen Sie einfach stopLossToUse und takeLossToUse mit den Werten, die Sie wünschen, dass diese sein

kasio:
Freunde,

Ich bin ein Neuling in der MQL4-Programmierung und brauche Hilfe beim Anhängen eines SL & TP an einen ORDERSEND mit einem ECN-Broker.

Zunächst konnte ich nicht verstehen, warum die SL & TPs meine Order zu einem Fehler führten, bis mich jemand darauf hinwies, dass man das Feld StopLoss & TakeProfit im ORDERSEND auf "0" setzen muss, da sonst ein ECN/STP-Broker die Order nicht ausführt.

Meine Frage lautet also: Wie kann ich eine Order zum Marktpreis ausführen und dann sofort (oder innerhalb von ein oder zwei Sekunden) einen SL/TP an dieses Ticket anhängen?

Hier ist ein Teil des Codes, der für meine Frage relevant ist:

if((CurrentPriceBuy>UpperPriceTrigger) && TakeAction==1)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Comm,0,0,0,CLR_NONE);

TakeAction=0;

}

Kann mir jemand dabei helfen, einen Code direkt nach dem OrderSend-Befehl einzufügen, so dass ich einen TP/SL von sagen wir willkürlich 25 Pips an dieses spezifische Ticket anhängen kann?

Für jede Hilfe wären wir Ihnen sehr dankbar. Vielen Dank im Voraus.

Mit freundlichen Grüßen,

Kasio
 

Hilfe!

Kann mir jemand helfen, diesen Indikator nicht neu zu malen, bitte?

Dateien:
pi_bg_v2.mq4  3 kb
 

...

Es ist ein dekompilierter Code, aber schauen Sie sich trotzdem diesen Thread an: https: //www.mql5.com/en/forum/179650

Es ist ein weiterer umbenannter Sonnenwind, also ...

phoenix:
kann mir jemand helfen, diesen Indikator zu machen, um nicht neu zu malen bitte?
 

Irgendwelche Ideen, wie man das, was ich gepostet habe, codieren kann? Ich bitte um Entschuldigung, wenn ich ungeduldig bin oder so, möchte nur wissen, ob es gelesen wurde.

Danke!

madmax3

 

...

Fügen Sie in Ihrem EA am Anfang der start()-Prozedur etwas wie das folgende ein:
if (TimeDayOfWeek(TimeCurrent())==5 && TimeCurrent()>=StrToTime("22:59")) { CloseAll(); return(0); } [/PHP]

Fügen Sie dies in den Code ein:

[PHP]void CloseAll()

{

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()!=MagicNumber) continue;

//

//

//

// //

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

for(int c=0; c<3; c++)

{

RefreshRates();

if (OrderType()==OP_BUY)

{ double cp = Bid;}

else { cp = Ask;}

OrderClose(OrderTicket(),OrderLots(),cp,0,Yellow);

int err=GetLastError();

if(err==4 || err==136 || err==137 || err==138 || err==146)

{

Sleep(5000); continue;

}

break;

}

break;

}

}

}

Das löst die Punkte 2 und 3 (offene Aufträge am Freitag)

Der erste Punkt ist ziemlich kompliziert zu codieren - Sie müssen diese Regel wahrscheinlich neu definieren

madmax3:
Haben Sie eine Idee, wie man das, was ich gepostet habe, codieren kann? Bitte entschuldigen Sie, wenn ich ungeduldig bin, ich möchte nur wissen, ob es gelesen wurde.

Danke!

madmax3
 

Bitte um Hilfe! Fehlernummer = 4103. pos = 10. FIle kann nicht geöffnet werden

Hallo!

Ich bin neu hier und auch neu in der MT-Programmierung. Kann mir jemand bei diesem Problem helfen?

Ich bekomme "Ein Fehler ist aufgetreten. Fehlernummer = 4103. pos = 10 (Datei kann nicht geöffnet werden)".

Die Datei ist korrekt als gif gespeichert, aber ich erhalte die obige Meldung. Wo liegt das Problem?

Der Code:

void Screenshot(int ticket, int cmd, datetime orderOpenTime, double orderOpenPrice)

{

RefreshRates();

if (cmd==OP_BUY) Comment (DateTimeInfo(),"\n", "Order Open Time: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," Buy: ",DoubleToStr(orderOpenPrice,Digits)) ;

if (cmd==OP_SELL) Comment (DateTimeInfo(),"\n", "Order Open Time: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," Sell: ",DoubleToStr(orderOpenPrice,Digits)) ;

string filename = Symbol()+"_"+"Demo "+"_"+Ticket+"_Open.gif";

int handle = FileOpen(filename,FILE_CSV|FILE_READ);

if(handle<1)

{

if (GlobalVariableGet("_MonitorScreen_ScreenShot") != 0 )

{

if(!WindowScreenShot(Dateiname,900,600)) Print("WindowScreenShot-Fehler: "+GetLastError());

}

}

sonst FileClose(handle);

}

Wir sind für jede Hilfe dankbar. Ich danke Ihnen.

 

...

Es funktioniert OK

Die Datei muss sich im Unterordner experts\files befinden, und ich habe als Beispiel die Ticketnummer 0 verwendet, so dass der vollständige Dateiname in meinem Beispiel "EURUSD_Demo_0_Open.gif" lautete, und sie wurde ohne Probleme geöffnet (es funktioniert sowohl mit FILE_CSV als auch mit FILE_BIN). Wenn es also im richtigen Ordner und unter dem richtigen Namen gespeichert ist, funktioniert Ihr Code einwandfrei.

Akkinmore:
Hallo,

Ich bin neu hier und auch neu in der MT-Programmierung. Kann mir jemand in dieser Sache helfen?

Ich bekomme "Ein Fehler ist aufgetreten. Fehlernummer = 4103. pos = 10 (Datei kann nicht geöffnet werden)".

Die Datei ist korrekt als gif gespeichert, aber ich erhalte die obige Meldung. Wo liegt das Problem?

Der Code:

void Screenshot(int ticket, int cmd, datetime orderOpenTime, double orderOpenPrice)

{

RefreshRates();

if (cmd==OP_BUY) Comment (DateTimeInfo(),"\n", "Order Open Time: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," Buy: ",DoubleToStr(orderOpenPrice,Digits)) ;

if (cmd==OP_SELL) Comment (DateTimeInfo(),"\n", "Order Open Time: ",TimeToStr(orderOpenTime,TIME_DATE|TIME_SECONDS)," Sell: ",DoubleToStr(orderOpenPrice,Digits)) ;

string filename = Symbol()+"_"+"Demo "+"_"+Ticket+"_Open.gif";

int handle = FileOpen(filename,FILE_CSV|FILE_READ);

if(handle<1)

{

if (GlobalVariableGet("_MonitorScreen_ScreenShot") != 0 )

{

if(!WindowScreenShot(Dateiname,900,600)) Print("WindowScreenShot-Fehler: "+GetLastError());

}

}

sonst FileClose(handle);

}

Für jede Hilfe sind wir dankbar. Ich danke Ihnen.
 
mladen:
Die Datei muss sich im Unterordner experts\files befinden, und ich habe als Beispiel die Ticketnummer 0 verwendet, so dass der vollständige Dateiname in meinem Beispiel "EURUSD_Demo_0_Open.gif" lautete, und die Datei wurde ohne Probleme geöffnet (es funktioniert sowohl mit FILE_CSV als auch mit FILE_BIN). Wenn die Datei also im richtigen Ordner und unter dem richtigen Namen gespeichert ist, funktioniert Ihr Code einwandfrei.

Danke. Ja, die Datei ist im richtigen Ordner und unter dem richtigen Namen gespeichert. Ich könnte versuchen, FILE_BIN anstelle von FILE_CSV zu verwenden, um zu prüfen, ob die Fehlermeldung erneut erscheint.

 

...

Wie bringe ich meinen Computer dazu, Wörter auf Russisch in den Indikatoren richtig anzuzeigen?

Grund der Beschwerde: