|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Ich bin Anfänger (wie man wahrscheinlich erkennen kann).
Ich will hier auch Niemandem nen Auftrag weg schnappen... Kannst Du Deine Idee nicht erst mal per Hand testen? |
|
|||
ja könnte ich schon manuel testen habe aber leider keine 24 stunden zeit pro Tag um am pc zu sitzen
|
|
|||
Dann beschreib mal ganz genau, was das Gerät machen soll.
Irgend Jemand wirds schon hin bekommen. Ich bin wie gesagt nicht wirklich Fachmann... |
|
|||
Moin.
Im Großen und Ganzen scheinen SL und TP zu funktionieren. Allerdings kommt bei EURNZD im Journal immer die Meldung invalid S/L or T/P "2018.06.05 11:03:15.674 '1694254': order sell 0.01 EURNZD opening at market sl: 1.66283 tp: 1.66220 failed [Invalid S/L or T/P]" "2018.06.05 11:03:15.565 '1694254': order sell market 0.01 EURNZD sl: 1.66283 tp: 1.66220" "2018.06.05 11:03:15.565 '1694254': order buy 0.01 EURNZD opening at market sl: 1.66261 tp: 1.66324 failed [Invalid S/L or T/P]" "2018.06.05 11:03:15.455 '1694254': order buy market 0.01 EURNZD sl: 1.66261 tp: 1.66324" Wenn ich hier auch nach _Point normen will kommt irgendwie immer "wrong parameters count" oder so. Code:
double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits); double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits); Code:
double SPR=NormalizeDouble(M_CA-M_CB*_Point,_Digits); Code:
//Max Spread Bedingungen if(Only_MS_Allowed==false)bool SPR_AL=true;//bool SPR_AL = Spread Allowed if(Only_MS_Allowed==true){ double M_SPR=NormalizeDouble(Max_Spread*_Point,_Digits);//Max Spread if(SPR<=NormalizeDouble(Max_Spread*_Point,_Digits))SPR_AL=true;} Code:
//Normaler SL if(Stoploss>0&&Auto_Stoploss==false)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll. if(Stoploss>0&&Auto_Stoploss==false)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll. //Normaler TP if(Takeprofit>0&&Auto_Takeprofit==false)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll. if(Takeprofit>0&&Auto_Takeprofit==false)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll. Hab wirklich keine Ahnung warum er nicht richtig funktioniert. |
|
|||
Lebt hier noch Jemand?
Der SL wird anscheinend richtig berechnet und gesetzt. Der TP allerdings ist im Backtest und im Demo immer genau wie der Einstiegskurs. Manchmal mit 2 o. 3 Pips Abstand. Aber allgemein ist TP immer gleich Einstiegskurs. Eingestellt ist er auf 150. Hab eben 99 versucht, selbes Problem. Code:
extern int Stoploss=30; extern int Takeprofit=150; Code:
double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits); double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits); Code:
//Normaler SL if(Stoploss>0&&Auto_Stoploss==false)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll. if(Stoploss>0&&Auto_Stoploss==false)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll. //Normaler TP if(Takeprofit>0&&Auto_Takeprofit==false)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll. if(Takeprofit>0&&Auto_Takeprofit==false)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Sell gesendet werden soll. Code:
if(!IsInv&&SPR_AL==true&&RT==true){ OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,B_SL,B_TP,Name + " Buy(#" + Buy_MagicNumber + ")",Buy_MagicNumber,0,Blue); OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,S_SL,S_TP,Name + " Sell(#" + Sell_MagicNumber + ")",Sell_MagicNumber,0,Red);} |
|
|||
Hallo.
Ich versuche nen automatischen SL. Der soll durch Multiplizieren des Spread berechnet werden. Man müsste also irgendwie rausfinden, was da genau von ASK abgezogen / zum BID dazu gerechnet wurde. Ein Weg ist wohl, erst mal gar keinen SL zu senden. Dann Order auslesen und den Abstand zwischen OpenPrice() und StopLoss() auszurechnen. Damit dann den Auto-SL berechnen und dann OrderModify. Aber da ja der SL immer wieder nach gezogen wird, ist das vielleicht keine so gute Idee. Kann man irgendwie Ergebnisse von Berechnungen dauerhaft speichern? Bzw. so lange, bis die nächste Order geöffnet wird. Was ist mit diesen Arrays? |
|
|||
Hier fehlt eindeutig das entsprechende Grundwissen.
Bitte zuerst einmal den Unterschied zwischen "Trailing Stop" und "Trailing Profit" aufnehmen! |
|
|||
Trailing Profit? Der TakeProfit soll fest sein. Soll vielleicht gelöscht werden, wenn die Order/s ein gutes Stück überm Break Even ist.
Ist wohl das Einfachste, Auto-SL und Auto-TP in extra Funktionen noch mal komplett neu zu berechnen. |
|
|||
Abend.
Gratis Hedge EA für MT4 im Anhang. Ist eigentlich ne Art Martin Gale. Allerdings bleiben die Einsätze immer gleich. Es wird erst wieder geöffnet, wenn beide Richtungen geschlossen wurden. Müsste eigentlich Alles funktionieren... |
|
|||
@ Martin
Inzwischen was gefunden? Ich könnts vielleicht die nächsten Tage versuchen. Kann aber für nix garantieren. Bin, wie gesagt, eher noch als Anfänger einzustufen. Wie sollen SL / TP / Max Spread sein? Aber was soll das Ganze eigentlich bringen? |
Lesezeichen |
Stichworte |
buy, ea, expert advisor, mql4, programmierung, programmierung metatrader, programmierung mql4, sell/buy, simple expert advisor |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|