|
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 |
|
|||
simpel buy sell ea
hallo leute ich brauche mal bitte eure hilfen
und zwar suche ich ein ea der gleichzeitig eine buy und sell positon öffnet und wen eine von beiden geschlossen wird soll er wider eine buy und sell position öfnen kann mir bitte da jemand weiter helfen habe irgendwie nichs in der richtung gefunden was funktioniert danke Gruss Martin |
|
|||
Arbeite derzeit an Einem.
Allerdings stimmt beim Trailing Stop was nicht. Im MT4 leuchtet SL zwar immer wieder mal auf, aber er ändert sich nicht. Wahrscheinlich irgendwo ein logischer Fehler drin. Aber er öffnet erst wieder, wenn beide Richtungen geschlossen wurden. Oder soll er zumindest. Nachtrag: Ich glaube so müsste es richtig sein Code:
//SL TP Deklarationen und Berechnungen //ASK & BID double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);//Mode Current ASK double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);//Mode Current BID //------------------------------------------------------------------------------------------------------------- //Normaler SL if(Stoploss>0)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll. if(Stoploss>0)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll. //Normaler TP if(Takeprofit>0)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll. if(Takeprofit>0)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll. //------------------------------------------------------------------------------------------------------------- Code:
if(Trailing_Stop=true&&Stoploss>0){ double M_CA_SL_TSS=NormalizeDouble(M_CA_SL-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask double M_CB_SL_TSS=NormalizeDouble(M_CB_SL+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid //Trailing Stop Bedingungen für neuen TS // ? if(B_SL<M_CA_SL_TSS)B_TS=NormalizeDouble(M_CA-Stoploss*_Point,_Digits); if(S_SL>M_CB_SL_TSS)S_TS=NormalizeDouble(M_CB+Stoploss*_Point,_Digits); // ? } Geändert von MA-EA (01.06.18 um 21:17 Uhr) |
|
|||
Waren ein paar Fehler drin. Müsste jetzt funktionieren.
|
|
|||
Sorry, musste was ergänzen. Mach schließlich nicht jeden Tag nen automatischen Takeprofit.
Vergesst die beiden Vers. vor diesem Post. Leider kann ich die nicht mehr entfernen... Meine größte Sorge ist der Trailing Stop. Weiß nicht, ob das so funktioniert: Code:
extern bool Trailing_Stop=true; extern int Trailing_Stop_Step=5; Code:
//SL TP Deklarationen und Berechnungen //ASK & BID double M_CA=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);//Mode Current ASK double M_CB=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);//Mode Current BID //------------------------------------------------------------------------------------------------------------- //Normaler SL if(Stoploss>0)double B_SL=NormalizeDouble(M_CA-Stoploss*_Point,_Digits);//einfacher Buy SL, der bei Open Buy gesendet werden soll. if(Stoploss>0)double S_SL=NormalizeDouble(M_CB+Stoploss*_Point,_Digits);//einfacher Sell SL, der bei Open Sell gesendet werden soll. //Normaler TP if(Takeprofit>0)double B_TP=NormalizeDouble(M_CA+Takeprofit*_Point,_Digits);//einfacher Buy TP, der bei Open Buy gesendet werden soll. if(Takeprofit>0)double S_TP=NormalizeDouble(M_CB-Takeprofit*_Point,_Digits);//einfacher Sell TP, der bei Open Buy gesendet werden soll. Code:
if(Trailing_Stop=true&&Stoploss>0){ double M_CA_SL_TSS=NormalizeDouble(M_CA-Stoploss-Trailing_Stop_Step*_Point,_Digits);//M_CA = Mode Current Ask double M_CB_SL_TSS=NormalizeDouble(M_CB+Stoploss+Trailing_Stop_Step*_Point,_Digits);//M_CB = Mode Current Bid //Trailing Stop Bedingungen für neuen TS // ? if(B_SL<M_CA_SL_TSS)double B_TS=NormalizeDouble(M_CA-Stoploss*_Point,_Digits); if(S_SL>M_CB_SL_TSS)double S_TS=NormalizeDouble(M_CB+Stoploss*_Point,_Digits); // ? } Code:
//Modify Orders (Trailing Stop nach ziehen) if(Trailing_Stop==true&&Stoploss>0){// ganz oben Bedingungen für OrderModify eintragen müsste reichen... for(i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MagicNumber&&OrderSymbol()==Symbol()){//modify Buy if(B_SL<M_CA_SL_TSS)OrderModify(OrderTicket(),price,B_TS,OrderTakeProfit(),0,Blue);}// ? if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MagicNumber&&OrderSymbol()==Symbol()){//modify Sell if(S_SL>M_CB_SL_TSS)OrderModify(OrderTicket(),price,S_TS,OrderTakeProfit(),0,Red);}}}}// ? |
|
|||
Moin.
Im Anhang der Versuch einer Art Hedge EA. Öffnet und schließt Buy und Sell entsprechend der Einstellungen. Hab versucht den SL automatisch über den Spread zu berechnen. Der Trailing Stop müsste in 5er Schritten die SLs nach ziehen. Jedenfalls wenn ichs richtig geproggt habe. Der TP sollte automatisch über die Spreads und vorrausichtlichen Verlust einer Richtung berechnet werden. Wär dankbar, wenn Jemand damit ein paar (Back)Tests machen könnte. Bei mir heißt es immer nur "Order Close Error". Viel Spass. |
|
|||
danke für die antwort werd mal teste ob er das kann was ich möchte
|
|
|||
Er öffnet nur, wenn gar keine Order offen ist.
Warum soll er gleich wieder Eine öffnen, wenn eine geschlossen wurde? Falls Du Deinem Nick entsprechend Martin Gale versuchen willst, lass es. So ein System kann eigentlich nur früher oder später schief gehn. https://de.wikipedia.org/wiki/Martingalespiel Hat mal Jemand getestet, ob der SL alle (ich glaube) 5 Pips nach gezogen wird? |
|
|||
Moin.
Jetzt brauch wirklich mal die Hilfe von ein paar Proggern die sich richtig auskennen. Ich will für winzige Spreads auch einen winzigen, alternativen Trailing Stop Schritt einrichten. Find aber nix zum Normalize. So soll das werden: Code:
extern bool Trailing_Stop=true; extern int Trailing_Stop_Step=5; extern string ATSS1="If Spread <"; extern string ATSS2="Trailing Stop Step"; extern int Alternative_TSS=3; extern string ATSS3="If Spread <"; extern string ATSS4="Alternative Trailing"; extern string ATSS5="Stop Step"; extern string ATSS6="TSS = 0"; Code:
//Falls Spread kleiner als Trailing Stop Step (5) ist, soll TSS = Alternative_TSS (3) sein if(NormalizeDouble(C_SPR<Trailing_Stop_Step*_Point,_Digits))Trailing_Stop_Step=NormalizeDouble(Alternative_TSS*_Point,_Digits); //Falls Spread auch kleiner als Altervativer Trailing Stop Step (3) ist, soll TSS = 0 sein if(NormalizeDouble(C_SPR<Alternative_TSS*_Point,_Digits))Trailing_Stop_Step=NormalizeDouble(0*_Point,_Digits); |
|
|||
Funktioniert das so ordnungsgemäß?
//Falls Spread kleiner als Trailing Stop Step (5) ist, soll TSS = Alternative_TSS (3) sein if(NormalizeDouble(C_SPR<Trailing_Stop_Step*_Point ,_Digits))NormalizeDouble(Trailing_Stop_Step=Alter native_TSS*_Point,_Digits); //Falls Spread auch kleiner als Altervativer Trailing Stop Step (3) ist, soll TSS = 0 sein if(NormalizeDouble(C_SPR<Alternative_TSS*_Point,_D igits))NormalizeDouble(Trailing_Stop_Step=0*_Point ,_Digits); |
|
|||
nein kein marginal die lot grösse soll immer die selbe sein ich hab da eine idee die ich gerne mal testen möchte
wäre es den viel arbeit für dich den ea so zu endern wie ich das beschriben habe? also das er gleich wider zwei neue aufmacht wen einer geschlossen ist ? Zitat:
|
Lesezeichen |
Stichworte |
buy, ea, expert advisor, mql4, programmierung, programmierung metatrader, programmierung mql4, sell/buy, simple expert advisor |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|