|
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 |
|
|||
Break Even
Hallo,
ich habe folgenden EA als Break Even laufen. Nun ist es aber leider so, das er ständig überwacht und wenn der TS los läuft, dann stellt dieser EA immer wieder auf den Break Even Wert zurück. Kann mir jemand sagen was ich da ändern muss? Hier der Code: //+------------------------------------------------------------------+ //| Breakeven EA v1.mq4 | //| Copyright © 2011, tigpips | //| tigpips@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, tigpips" #property link "tigpips@gmail.com" extern int Break_Even_After_X_Pips = 15; extern bool useMagicNumber = false; extern int Magic = 1234567; int init() { if(Digits == 5) { Break_Even_After_X_Pips = Break_Even_After_X_Pips * 10; } return(0); } int deinit() { return(0); } int start() { AdjustStopLoss(); return(0); } //+------------------------------------------------------------------+ void AdjustStopLoss() { for(int cnt=OrdersTotal()-1;cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(useMagicNumber == true) { if (OrderMagicNumber()==Magic && OrderStopLoss() != OrderOpenPrice()) { if(( OrderProfit() - OrderCommission() ) / OrderLots() / MarketInfo( OrderSymbol(), MODE_TICKVALUE ) >= Break_Even_After_X_Pips) { if(OrderType()==OP_SELL){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),0,Red); } if(OrderType()==OP_BUY){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),0,Blue); } } } } else if(useMagicNumber == false) { if(OrderStopLoss() != OrderOpenPrice()) { if(( OrderProfit() - OrderCommission() ) / OrderLots() / MarketInfo( OrderSymbol(), MODE_TICKVALUE ) >= Break_Even_After_X_Pips) { if(OrderType()==OP_SELL){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),0,Red); } if(OrderType()==OP_BUY){ OrderModify(OrderTicket(),OrderOpenPrice(),OrderOp enPrice(),OrderTakeProfit(),0,Blue); } } } } } } |
|
|||
Moin, ich hab das mal wie folgt gemacht:
double Profit,OCP,OT,average,Lots; --> global void BreakEven() { for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); //----- if (OrderSymbol() == Symbol() && OrderType() == OP_BUY || OrderType() == OP_SELL) { Lots = Lots + OrderLots(); Profit = Profit + OrderProfit() + OrderCommission()+OrderSwap(); OCP = OrderClosePrice(); OT = OrderType(); } } if( Lots > 0 ) double pips = Profit/Lots/MarketInfo(Symbol(),MODE_TICKVALUE); if (OT == OP_BUY) { average = OCP - (pips*Point); } if (OT == OP_SELL) { average = OCP + (pips*Point); } Comment ("Lots = "+ Lots, "\n","Profit = ", Profit, "\n","pips = ", pips, "\n",DoubleToStr(OCP,5), "\n","BreakEven is: ", DoubleToStr(average,5), "\n"); //---- } |
|
|||
Danke!
Ich werds mal versuchen. |
|
|||
Läuft bei mir leider nicht, da er sagt das Variablen nicht definiert sind.
z.B. Lots Profit |
|
|||
Hoi,
die Variablen musst du global definieren double gProfit,gOCP,OT,gAverage,gLots; --> global Gruss, Hoschie |
|
|||
Danke
aber jetzt teste ich |
|
|||
Leider setzt er nicht automatisch den SL wenn der Breakeven erreicht wurde.
|
|
|||
Kann mir vllt jemand sagen, an welcher stelle im EA der eigentliche Satz für das setzen des SL auf das Einstiegsniveau ist?
|
|
|||
Zitat:
die Methode BreakEven() liefert dir den BreakEven Kurs. Entweder setzt den S/L schon in dieser Methode BreakEven, oder später, wenn average > 0 ist, dann setze S/L. if (OT == OP_BUY) { average = OCP - (pips*Point); OrderModify(OrderTicket(),OrderOpenPrice(),average ,... } if (OT == OP_SELL) { average = OCP + (pips*Point); OrderModify(OrderTicket(),OrderOpenPrice(),average ,... } Gruss, Hoschie |
Lesezeichen |
Stichworte |
break even, breakeven, mql4, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|