|
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 |
|
|||
Du musst dir schon die Mühe geben, meine Antworten zu lesen und den Code zu verstehen oder in deinen EA zu kopieren. Der Code macht genau das, was du willst.
|
|
|||
Hallo.
Danke für die Hilfe. Aber jetzt komm ich wirklich nicht mehr weiter. Hab ausserhalb des OrderSend-Blocks die Tickets mit Print ausgeben lassen. Da kommt immer nur 0! Nur wenn sie zwischen Ti... = OrderSend(...) und dem dazu gehörigen return ausgegeben werden sollen, nur dann funktioniert Print(tralala ticket)... Ist ja kein Wunder, dass er nie die geschlossenen Orders findet. Jedenfalls nicht so: Code:
for(int j=0;j<OrdersHistoryTotal();j++){ if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)){ if( OrderTicket()==TiBuy ){ ... Gibts noch nen anderen Weg, die zuletzt geschlossene Order mit Gewinn zu finden, ohne nach dem Ticket zu suchen? |
|
|||
Schau meinen Code an. Der speichert die Ticket-Nummer nach der Ordereröffnung in LastBuy und LastSel.
Wenn du einmal abgefragt hast, wird das gelöscht und gut ist. So, das wars. Mehr schreib ich nicht mehr zu dem Thema. Hier der ganze Code, der macht, was du willst. Ein paar Dinge könnte man noch weglassen und es würde trotzdem gehen. SL setzen und TP setzten geht so, wie du das codiert hast nicht immer. Ich mache immer erst die Order auf und setze danach SL und TP. Warum das so ist, habe ich nicht gesucht. Wenn du das nicht verstehst, und das ist wirklich einfach gehalten, dann kann ich dir nicht helfen. Aber was solls, deine Strategie macht nur Verluste: Code:
/*============================================================================================================= // N O T I Z E N U N D I N F O S //============================================================================================================= Öffnen der Orders dauert allgemein etwas lange. Er scheint immer erst zu Minuten-Beginn zu öffnen? Lag vielleicht an Dist? Mit SL und TP testen. Mit SL und TP scheints zu funktionieren. //------------------------------------------------------------------------------------------------------------- //============================================================================================================= // P R O P E R T Y //============================================================================================================*/ // #property strict // #property strict sorgt anscheinend dafür, dass Kommentare im Konfig-Fenster im MT4 sichtbar sind. #property copyright"LoSh_AlwInv_SLTP_LP.mq4" #property copyright"daniel-rudloff@web.de" #include <stderror.mqh> #include <stdlib.mqh> //============================================================================================================= // B E S C H R E I B U N G //============================================================================================================= extern string TOY="true = on / yes"; extern string FON="false = off / no"; //============================================================================================================= // E I N S T E L L U N G E N //============================================================================================================= extern string MN="Magic Numbers"; extern int Buy_MN=2; extern int Sell_MN=4; //-----------------------------------------------------------------------------------------------------------*/ extern string OOO1="Open Orders Only"; extern string OOO2="from/till?"; extern string OOO3="(Server Time)"; input bool Open_Only_From_Till=true; // extern int Open_From_Hour=7; extern int Open_From_Min=0; extern int Open_Till_Hour=17; extern int Open_Till_Min=26; // //-----------------------------------------------------------------------------------------------------------*/ extern string IOOFTF1="if"; extern string IOOFTF2="Open_Only_From_Till = false"; extern string IOOFTF3="Close_all_Orders_after"; extern string IOOFTF4="= false too"; extern string CAOTOC1="Close all Orders after"; extern string CAOTOC2="(Server Time)"; extern bool Close_all_Orders_after=true; extern int Close_after_Hour=17; extern int Close_after_Min=27; //-----------------------------------------------------------------------------------------------------------*/ extern int Slippage=99999999; //-----------------------------------------------------------------------------------------------------------*/ extern double LotsBuy=0.01; extern double LotsSel=0.01; extern string esLPOCP1="Lots Buy/Sell"; extern string esLPOCP2="+ LotsPlus"; extern string esLPOCP3="if Order close"; extern string esLPOCP4="with Profit"; extern double LotsPlus=0.01; extern string esOLLPOLP1="OrderLots of"; extern string esOLLPOLP2="last Profit Order"; extern string esOLLPOLP3="+ LotsPlus?"; extern bool OLPO_LP=false; // Zum Testen aus //-----------------------------------------------------------------------------------------------------------*/ extern int SL=10; // 1600 testen //-----------------------------------------------------------------------------------------------------------*/ extern int TP=20; // Zum Testen 50 //============================================================================================================= // D E K L A R A T I O N E N //============================================================================================================= bool OMbuy,OMsel,OCbuy,OCsel; double Buy_SL,Sel_SL,Buy_TP,Sel_TP; int i,j,TiBuy,TiSel; int LastBuy = 0; int LastSel = 0; int History_index = 0; int LastHistory_index = 0; int Fehlercode; string Fehlerbeschreibung; string Fehlerausgabe; //============================================================================================================= // I N I T / D E I N I T //============================================================================================================= int OnInit(){ return(0);} void OnDeinit(const int reason){ return;} //============================================================================================================= // E A F U N K T I O N E N S T A R T //============================================================================================================= void OnTick(){ //============================================================================================================= // O P E N T I M E //============================================================================================================= bool RT=false; // RT = Right Time if( (Open_Only_From_Till==false) || (Open_Only_From_Till==true&&Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min) )RT=true; RT = true; //============================================================================================================= // L O T S //============================================================================================================= double Min_L=MarketInfo(Symbol(),MODE_MINLOT); double Max_L=MarketInfo(Symbol(),MODE_MAXLOT); if(LotsBuy<Min_L)LotsBuy=Min_L; if(LotsSel<Min_L)LotsSel=Min_L; if(LotsBuy>Max_L)LotsBuy=Max_L; if(LotsSel>Max_L)LotsSel=Max_L; //============================================================================================================= // S T O P L O S S //============================================================================================================= //SL auf 0 stellen, wenn oben <1, //um irgendwelche Missverständnisse zu vermeiden. if(SL<1){ Buy_SL=0.0; Sel_SL=0.0;} else{ Buy_SL=NormalizeDouble(Ask-SL*_Point,_Digits); Sel_SL=NormalizeDouble(Bid+SL*_Point,_Digits);} //SL genauso groß wie Minstoplevels machen, wenn er kleiner ist: double MSL=MarketInfo(Symbol(),MODE_STOPLEVEL); if(Buy_SL<MSL)Buy_SL=MSL; if(Sel_SL<MSL)Sel_SL=MSL; //============================================================================================================= // T A K E P R O F I T //============================================================================================================= //TP auf 0 stellen, wenn oben <1, //um irgendwelche Missverständnisse zu vermeiden. if(TP<1){ Buy_TP=0.0; Sel_TP=0.0;} else{ Buy_TP=NormalizeDouble(Ask+TP*_Point,_Digits); Sel_TP=NormalizeDouble(Bid-TP*_Point,_Digits);} //============================================================================================================= // P R U E F E N O B O R D E R S G E O E F F N E T S I N D //============================================================================================================= bool BuyInv=false; bool SelInv=false; for(i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS)) { if(OrderType()==OP_BUY &&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol()) BuyInv=true; if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()) SelInv=true; } } //------------------------------ // OrderLots für Buy erhöhen //---------------------------- History_index = OrdersHistoryTotal(); if (LastHistory_index != History_index) { if (LastBuy > 0) { //Print ("Gewinn LastBuy fragen: ",LastBuy); for(i=History_index;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderTicket() == LastBuy) { Print ("OrderProfit LastBy: ",LastBuy," ",DoubleToString(OrderProfit(),2)); if (OrderProfit()>0.0) { if(OLPO_LP==false)LotsBuy = LotsBuy + LotsPlus; if(OLPO_LP==true)LotsBuy = OrderLots() + LotsPlus; } Print ("LotBuy: ",LotsBuy); LastBuy = 0; } } } } // -------------------------- // OrderLots für Sell erhöhen // -------------------------- if (LastSel > 0) { //Print ("Gewinn LastSeL fragen: ",LastSel); for(i=History_index;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderTicket() == LastSel) { Print ("OrderProfit LastSel: ",LastSel," ",DoubleToString(OrderProfit(),2)); if (OrderProfit()>0.0) { if(OLPO_LP==false)LotsSel = LotsSel + LotsPlus; if(OLPO_LP==true)LotsSel = OrderLots() + LotsPlus; } Print (" LotsSel: ",LotsSel); LastSel = 0; } } } } } LastHistory_index = History_index; //============================================================================================================= // O P E N O R D E R S //============================================================================================================= if( RT==true ) { if( BuyInv==false && IsTradeAllowed()==true ) { while(IsTradeContextBusy()) Sleep(10); TiBuy=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,0,Blue); // Print ("Open buy ",TiBuy," LotsBuy: ",LotsBuy); if(TiBuy == -1) { Fehlercode = GetLastError(); Fehlerbeschreibung = ErrorDescription(Fehlercode); Fehlerausgabe = StringConcatenate("Eröffnung Kauf-Order:",Fehlercode,": ",Fehlerbeschreibung); Print(Fehlerausgabe); } LastBuy = TiBuy; return(TiBuy); } if( SelInv==false && IsTradeAllowed()==true ) { while(IsTradeContextBusy()) Sleep(10); TiSel=OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,0,Red); // Print ("Open Sell ",TiSel," LotsSel: ",LotsSel); if(TiSel == -1) { Fehlercode = GetLastError(); Fehlerbeschreibung = ErrorDescription(Fehlercode); Fehlerausgabe = StringConcatenate("Eröffnung Kauf-Order:",Fehlercode,": ",Fehlerbeschreibung); Print(Fehlerausgabe); } LastSel = TiSel; return(TiSel); } } //============================================================================================================= // C L O S E O R D E R S //============================================================================================================= for(j=OrdersTotal()-1;j>=0;j--){ if(OrderSelect(j,SELECT_BY_POS)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){ if(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min){ if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black);}} if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){ if(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min){ if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Orange);}} }} //============================================================================================================= // E A F U N K T I O N E N B E E N D E N //============================================================================================================= return(0);} |
|
|||
Danke vielmals für die Hilfe. Werd ich mir wohl Alles noch mal anschaun müssen.
Das Problem war wohl, dass OrderSend nie das Ticket zurück geliefert hat. Kam immer bloß 0. Aber dann les ich die geschlossenen Orders eben nicht aus. Geht auch ohne. Die Lots werden jetzt erhöht, wenn ne entsprechende Order vom EA selber geschlossen wird. SL und TP sind nur noch zur Sicherheit drin, falls der PC kaputt geht oder der Server oder die Verbindung abbricht oder was auch immer schief geht. Jedenfalls scheint der EA allgemein etwas langsam zu arbeiten. Schien irgendwie schon mal schneller zu sein. Woran kann das liegen? Wie kann man allgemein dafür sorgen, dass MT4 und EA möglichst schnell und effizient funktionieren? #property copyright"LoSh_AlwInv_Dist_LP.mq4" #property copyright"daniel-rudloff@web.de" //================================================== ================================================== ========= // B E S C H R E I B U N G //================================================== ================================================== ========= extern string TOY="true = on / yes"; extern string FON="false = off / no"; //================================================== ================================================== ========= // E I N S T E L L U N G E N //================================================== ================================================== ========= //-----------------------------------------------------------------------------------------------------------*/ input ENUM_TIMEFRAMES Timeframe=1; //-----------------------------------------------------------------------------------------------------------*/ extern string OPORTY="Open Order Types"; input bool open_Buy=true; input bool open_Sell=true; //-----------------------------------------------------------------------------------------------------------*/ extern string MN="Magic Numbers"; extern int Buy_MN=2; extern int Sell_MN=4; //-----------------------------------------------------------------------------------------------------------*/ extern string OOO1="Open Orders Only"; extern string OOO2="from/till?"; extern string OOO3="(Server Time)"; input bool Open_Only_From_Till=true; // extern int Open_From_Hour=7; extern int Open_From_Min=0; extern int Open_Till_Hour=23; // Zum Testen extern int Open_Till_Min=26; // //-----------------------------------------------------------------------------------------------------------*/ extern string IOOFTF1="if"; extern string IOOFTF2="Open_Only_From_Till = false"; extern string IOOFTF3="Close_all_Orders_after"; extern string IOOFTF4="= false too"; extern string CAOTOC1="Close all Orders after"; extern string CAOTOC2="(Server Time)"; extern bool Close_all_Orders_after=true; extern int Close_after_Hour=23; // Zum Testen extern int Close_after_Min=27; //-----------------------------------------------------------------------------------------------------------*/ extern int Slippage=99999999; //-----------------------------------------------------------------------------------------------------------*/ extern double LotsBuy=0.01; extern double LotsSel=0.01; extern string esLPOCP1="Lots Buy/Lots Sell"; extern string esLPOCP2="+ LotsPlus"; extern string esLPOCP3="if Order close"; extern string esLPOCP4="with Profit"; extern double LotsPlus=0.01; //-----------------------------------------------------------------------------------------------------------*/ extern int SL=1600; // 1600 testen //-----------------------------------------------------------------------------------------------------------*/ extern int TP=1800; // Zum Testen 1800 //-----------------------------------------------------------------------------------------------------------*/ extern string esIITCBSMS1="if IsTradeContexBusy()"; extern string esIITCBSMS2="sleep Milli Seconds"; extern int Sl_MS=10; //-----------------------------------------------------------------------------------------------------------*/ extern string DOPtAB1="Distance to"; extern string DOPtAB2="Order Open Price"; extern string DOPtAB3="close Win-Order"; extern int Dist = 50; // Zum Testen 50 //-----------------------------------------------------------------------------------------------------------*/ //================================================== ================================================== ========= // I N I T / D E I N I T //================================================== ================================================== ========= int OnInit(){ ChartSetSymbolPeriod(0,Symbol(),Timeframe); return(0);} void OnDeinit(const int reason){ return;} //================================================== ================================================== ========= // E A F U N K T I O N E N S T A R T //================================================== ================================================== ========= int start(){ //================================================== ================================================== ========= // O P E N T I M E //================================================== ================================================== ========= bool RT=false; // RT = Right Time if( (Open_Only_From_Till==false) || (Open_Only_From_Till==true&&Hour()>=Open_From_Hour &&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour& &Minute()<=Open_Till_Min) )RT=true; //================================================== ================================================== ========= // L O T S ? //================================================== ================================================== ========= // double Min_L=MarketInfo(Symbol(),MODE_MINLOT); // double Max_L=MarketInfo(Symbol(),MODE_MAXLOT); //================================================== ================================================== ========= // S T O P L O S S //================================================== ================================================== ========= //SL auf 0 stellen, wenn oben <1, //um irgendwelche Missverständnisse zu vermeiden. if(SL<1){ double Buy_SL=0.0; double Sel_SL=0.0;} else{ Buy_SL=NormalizeDouble(Ask-SL*_Point,_Digits); Sel_SL=NormalizeDouble(Bid+SL*_Point,_Digits);} //SL genauso groß wie Minstoplevels machen, wenn er kleiner ist: double MSL=MarketInfo(Symbol(),MODE_STOPLEVEL); if(Buy_SL<MSL)Buy_SL=MSL; if(Sel_SL<MSL)Sel_SL=MSL; //================================================== ================================================== ========= // T A K E P R O F I T //================================================== ================================================== ========= //TP auf 0 stellen, wenn oben <1, //um irgendwelche Missverständnisse zu vermeiden. if(TP<1){ double Buy_TP=0.0; double Sel_TP=0.0;} else{ Buy_TP=NormalizeDouble(Ask+TP*_Point,_Digits); Sel_TP=NormalizeDouble(Bid-TP*_Point,_Digits);} //================================================== ================================================== ========= // C L O S E D I S T A N C E B E R E C H N U N G //================================================== ================================================== ========= double CLbuy_D = NormalizeDouble( Bid - Dist *_Point,_Digits); double CLsel_D = NormalizeDouble( Ask + Dist *_Point,_Digits); //================================================== ================================================== ========= // P R U E F E N O B O R D E R S G E O E F F N E T S I N D //================================================== ================================================== ========= bool BuyInv=false; for(int i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol())BuyInv=true;}} bool SelInv=false; for(int j=OrdersTotal()-1;j>=0;j--){ if(OrderSelect(j,SELECT_BY_POS)){ if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_ MN&&OrderSymbol()==Symbol())SelInv=true;}} //================================================== ================================================== ========= // O P E N O R D E R S //================================================== ================================================== ========= if(RT==true){ if(open_Buy==true){ if(BuyInv==false){ if(IsTradeAllowed()==true)int TiBuy=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippa ge,Buy_SL,Buy_TP,NULL,Buy_MN,NULL,Blue); if( IsTradeContextBusy()==true )Sleep(Sl_MS);}} if(open_Sell==true){ if(SelInv==false){ if(IsTradeAllowed()==true)int TiSel=OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slipp age,Sel_SL,Sel_TP,NULL,Sell_MN,NULL,Red); if( IsTradeContextBusy()==true )Sleep(Sl_MS);}} } //================================================== ================================================== ========= // C L O S E O R D E R S //================================================== ================================================== ========= for(i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol()){ if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_aft er_Hour&&Minute()>=Close_after_Min) ){ if(IsTradeAllowed()==true)bool OCbuy=OrderClose(OrderTicket(),OrderLots(),Bid,Sli ppage,Red); if( IsTradeContextBusy()==true )Sleep(Sl_MS); LotsBuy = OrderLots() + LotsPlus;}} if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_ MN&&OrderSymbol()==Symbol()){ if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_aft er_Hour&&Minute()>=Close_after_Min) ){ if(IsTradeAllowed()==true)bool OCsel=OrderClose(OrderTicket(),OrderLots(),Ask,Sli ppage,Red); if( IsTradeContextBusy()==true )Sleep(Sl_MS); LotsSel = OrderLots() + LotsPlus;}} }} //================================================== ================================================== ========= // E A F U N K T I O N E N B E E N D E N //================================================== ================================================== ========= return(0);} |
|
|||
Ich geb's auf. Wenn du das nicht kapierst, wärs besser, du suchst dir ein anderes Hobby.
|
|
|||
Die geschlossenen Orders auszulesen war eigentlich eh nicht nötig. Hab das bloß versucht, weil ich dachte, der EA würde mit SL/TP besser funktionieren. Scheint aber egal zu sein. In der Version im Anhang wird, wie in der Ursprungs-Version, ne Gewinn-Order geschlossen, wenn nen einstellbarer Abstand zum OrderOpenPrice über/unterschritten wurde. So scheint das Ganze auch zu funktionieren. Ausser dass er immer wieder lange braucht, um die nächste Order zu öffnen, wenn die davor mit Gewinn geschlossen wurde. Das kann doch eigentlich nur an irgendwelchen Einschränkungen bei ActivTrades liegen. Wär schön, wenn das Teil mal Jemand in nem Demo-Konto nen paar Stunden lang testen könnte.
|
|
|||
So wirklich aussichtslos scheints nicht zu sein. Würde natürlich bessser laufen, wenn er nicht immer wieder Pausen machen würde.
Zitat:
|
|
|||
Dann lass ihn doch auf einem Echtgeldkonto laufen. Viel Glück.
|
|
|||
Erst mal nicht, Danke.
Im Anhang sozusagen die Version 2.0. Hab versucht, Alles kompakter und eindeutiger zu schreiben. Bloß noch ein bool drin, der im Durchlauf nicht verändert wird. Mit bools hab ich so meine Geschichten erlebt. Nicht mehr void OnTick. Wenn der gesamte Code bei jedem Tick gestartet wird, dann weiß ich nicht, ob er so optimal läuft... Es wird immer gewarnt, weil ausser bei Start / return(NULL) keine return Werte zurück geliefert, bzw. erst gar keine deklariert werden. Sind doch aber eigentlich unnötig oder nicht? Hoffe mal, das ist nicht zu viel Zeugs im OrderSend Bereich... Code:
//============================================================================================================= // O P E N O R D E R S //============================================================================================================= if(Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min){ if( open_Buy==true ){ for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol())Print( "buy" , i ); else if(IsTradeAllowed())OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,NULL,Blue); if(IsTradeContextBusy())Sleep(Sl_MS);} if( open_Sell==true ){ for(int j=OrdersTotal()-1;j>=0;j--) if(OrderSelect(j,SELECT_BY_POS)) if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol())Print( "sell" , i ); else if(IsTradeAllowed())OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,NULL,Blue); if(IsTradeContextBusy())Sleep(Sl_MS);} } Code:
//============================================================================================================= // C L O S E O R D E R S //============================================================================================================= for(int k=OrdersTotal()-1;k>=0;k--){ if(OrderSelect(k,SELECT_BY_POS)){ if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){ if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){ if(IsTradeAllowed())OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red); if(IsTradeContextBusy())Sleep(Sl_MS); LotsBuy = OrderLots() + LotsPlus; } } } } for(int l=OrdersTotal()-1;l>=0;l--){ if(OrderSelect(l,SELECT_BY_POS)){ if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){ if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){ if(IsTradeAllowed())OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red); if(IsTradeContextBusy())Sleep(Sl_MS); LotsSel = OrderLots() + LotsPlus; } } } } |
|
|||
Ich habe das jetzt nochmals durch den Backtest geschickt mit EURUSD über den Monat April und dabei keine Einstellung gefunden, die auch nur annähernd dein Resultat gebracht hat. Alle Durchläufe haben den Monat mit Verlust abgeschlossen, selbst ohne Spread.
Dann habe ich noch eingebaut, dass Lotsize zurückgesetzt wird, sobald eine Order mit Verlust schliesst. Dann beginnt es wieder bei 0.01. Wenn du das nicht machst, wir Lotsize immer grösser und grösser (mit jedem Trade im Gewinn) und dein Konto ist nach 2 Tagen platt. Was hast du als SL und TP genommen? Geändert von TogoTiger (02.05.20 um 15:06 Uhr) |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|