|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Zitat:
Aber ich experimentiere gerne mal nen bißchen rum. Hab ich das so richtig verstanden:Er soll, wenn Eine Order geschlossen wurde, noch mal in diese Richtung UND noch Eine Zweite in die Andere Richtung öffnen? So dass man dann z.B. zwei Long-Orders UND die alte Short-Order gleichzeitig offen hat? Das dürfte nix bringen... Der EA im Anhang hat theoretisch immer ein Long und ein Short offen. Wird Eine geschlossen, öffnet er gleich wieder in die Richtung. Ich glaub aber wie gesagt nicht, dass das irgendwann mal Profit bringt. Man kann aber einstellen, dass er erst wieder öffnet, wenn beide Richtungen geschlossen wurden, also weder Long noch Short offen ist. Jedenfalls wenn Alles richtig ist. Hab ihn noch nicht getestet und bin wie gesagt Alles andere als nen Profi. Verwendung auf Dein Risiko... |
|
|||
Abend.
SL und TP werden automatisch mit dem Spread berechnet. Hab das mal probiert.Meine Befürchtung hat sich bestätigt: Evtl. Gewinne werden immer wieder von den ständigen Verlusten und Spreads zunichte gemacht. Vielleicht hab ich auch nur blöde Werte. Wenn Jemand Welche weiß, mit denen man die ständigen Verluste und Spreads immer wieder rein bekommt + etwas Gewinn, dann immer her damit. |
|
|||
Abend.
Hatte vorhin beim Hedgen etwas über 50% Erfolgs-Trades. Wenn Jeder davon nur ein paar Cent mehr Gewinn als Verlust der Gegenseite macht... Nur weiß ich nicht so richtig, wie SL und TP setzen. Einerseits will man natürlich möglichst wenig Verlust. Andererseits muss man dem Kurs aber einen gewissen Spielraum geben, sich für eine Richtung zu entscheiden. A. Man setzt SL und TP möglichst eng. Natürlich aber so, dass man 2x Spread und den Verlust einer Richtung wieder rein bekommt. B. Man macht nen SL von mehreren 100 und den TP 2 oder 3 mal so groß. C. Man macht nen einigermaßen großzügigen SL und gar keinen TP. Und hofft, dass einer der Trailings-Stops für Gewinn sorgt, sobald der Kurs eine klare Richtung eingeschlagen hat. Die müssten dann aber wohl jeweils ein Vielfaches der Spreads sein, die man ja wieder rein bekommen muss. Hatte eben SL:300 (Alle 7 Punkte nach gezogen) TP:600 |
|
|||
Wenn man den Code einfach so hier rein kopiert, braucht man nicht so viel scrollen, aber gut.
Ich versuche zur Zeit, Stop-Orders da öffnen zu lassen, bzw. zu setzen, wo die Market-Order durch den SL gegangen ist. Wenn die Stop-Order dann gültig und zur Market-Order wurde, soll sie geschlossen werden. Bei einem kurzen Test vorhin war die sie die ganze Zeit offen und so wurden immer wieder Markt-Orders geöffnet... Funktioniert das so, die Stop-Order zu schließen, wenn entsprechend Buy/Sell geöffnet wurde? Orders zählen bzw. feststellen, ob überhaupt Welche offen sind: Code:
for(i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol())bool Buy_Mark_inv=true; if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())bool Buy_Stop_inv=true; if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol())bool Sel_Mark_inv=true; if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())bool Sel_Stop_inv=true;}} Code:
if(Buy_Mark_inv==false&&Buy_Stop_inv==false&&Sel_Mark_inv==false&&Sel_Stop_inv==false&&RT==true&&SPR_AL==true){ if(Buy_Market==true)OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,B_Mark_SL,B_Mark_TP,Name + " Buy(#" + Buy_Market_MN + ")",Buy_Market_MN,0,MediumBlue); if(Buy_Stop==true)OrderSend(Symbol(),OP_BUYSTOP,Lots,B_Stop_OOP,Slippage,B_Stop_SL,B_Stop_TP,Name + " Buy(#" + Buy_Stop_MN + ")",Buy_Stop_MN,0,MediumBlue); if(Sell_Market==true)OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,S_Mark_SL,S_Mark_TP,Name + " Sell(#" + Sell_Market_MN + ")",Sell_Market_MN,0,SteelBlue); if(Sell_Stop==true)OrderSend(Symbol(),OP_SELLSTOP,Lots,S_Stop_OOP,Slippage,S_Stop_SL,S_Stop_TP,Name + " Sell(#" + Sell_Stop_MN + ")",Sell_Stop_MN,0,SteelBlue);} Code:
for(i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol()){ if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue);} if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol()){ if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);} |
|
|||
Ich glaub so wär die OrderClose Funktion besser:
Code:
for(i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS)){ if(Buy_Mark_inv==true){ if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue);} if(Sel_Mark_inv==true){ if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);} if(Close_all_Orders_after_Time_O_Clock==true&&TC>CA){// ganz oben Bedingungen für OrderClose eintragen müsste reichen... if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_Market_MN&&OrderSymbol()==Symbol())OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,OrangeRed); if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Buy_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),SteelBlue); if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_Market_MN&&OrderSymbol()==Symbol())OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,SteelBlue); if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==Sell_Stop_MN&&OrderSymbol()==Symbol())OrderDelete(OrderTicket(),OrangeRed);}}} |
|
|||
Hallo.
Jemand Ahnung, wie man nen Stop-Order Open-Price zusammen mit dem Trailing-Stop, nach zieht? Ich seh einfach nicht mehr durch in diesem ganzen Computer-chinesisch. Mir fehlt einfach total der Überblick. |
|
|||
Sorry, aber das kommt daher, weil bei Dir die Grundlagen einfach fehlen oder ungenügend vorhanden sind. Ich sagte es schon einmal, man kann als Fahranfänger nicht einen Formel1-Wagen fahren.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Eigentlich müsste es doch reichen, die Stop-Order-Bedingungen zu "aktualisieren", bzw. erneut berechnen und senden, wenn der Trailing Stop nach gezogen wird. Müsste doch eigentlich Alles in einer Schleife erledigt werden können.
Buy-Stop nach ziehn if(OrderType()==OP_BUYSTOP&&OrderMagicNumber()==Bu y_Stop_MN&&OrderSymbol()==Symbol()){ OrderModify(OrderTicket(),B_Stop_OOP,B_Stop_SL,B_S top_TP,0,Maroon);} Sell-Stop nach ziehn if(OrderType()==OP_SELLSTOP&&OrderMagicNumber()==S ell_Stop_MN&&OrderSymbol()==Symbol()){ OrderModify(OrderTicket(),S_St_OOP,S_Stop_SL,S_Sto p_TP,0,Maroon);} Sorry, aber so brauch man nich so viel scrolln. |
|
|||
Hallo.
Diese Vers. scheint zu funktionieren. Aber SL und TP müssen wohl echt eng sein. Aber auch wieder nicht zu eng. |
|
|||
Neueste Version. Hab sie selber noch nicht getestet und kann für nix garantieren.
Beim Hedgen wärs vielleicht nicht schlecht, den TP nicht viel höher einzustellen als nötig. Sowas wie ne automatische TP-Berechnung, die anhand es aktuellen Spread und SL den TP selber kalkuliert, wär vielleicht nicht schlecht. Weiß aber nicht so richtig wie der berechnet werden sollte. |
Lesezeichen |
Stichworte |
buy, ea, expert advisor, mql4, programmierung, programmierung metatrader, programmierung mql4, sell/buy, simple expert advisor |
|
|