|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Tagestrader
HAllo Zusammen,
die Tage habe ich ein wenig mit den Daten aus MT gespielt und mir einfach mal was herunter geladen...Daily EUR/USD Daten im Zeitraum von 5 Jahren. Da habe ich festgestellt, dass in diesem Zeitraum der MIttwoch der beste Tradingtag war..gemessen am Open und Close (long Positions). Daraus wollte ich mir nun was zusammen bsateln...ein EA der um 0:00 kauft und23:59:59 verkauft...und das halt nur Mittwochs... Nun habe ihch folgendes Zusammen gebaut, aber es scheint noch nicht so recht zu klappen. Vll hat jemand von euch eine Idee was falsch sein könnte? extern double dLots=0.025; extern int iStopLoss=250; extern int iTakeProfit=250; extern int iSlippage=30; extern int iMaxTrades=1; extern int iMagicNumber=28061983; extern double MaximumRisk=0.02; extern int DecreaseFactor=3; extern double GMTOffset = 0; extern bool Monday = true; extern bool Tuesday = true; extern bool Wednesday = true; extern bool Thursday = true; extern bool Friday = true; int iTotalTrades; int iOrderOpenStatus; int iErrorNumber; string strErrorMessage; //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double LotsOptimized() { double lot=dLots; int orders=HistoryTotal(); // history orders total int losses=0; // number of losses orders without a break //---- select lot size lot=NormalizeDouble(AccountFreeMargin()*MaximumRis k/1000.0,1); //---- calculate number of losses orders without a break if(DecreaseFactor>0) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==fals e) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) break; if(OrderProfit()<0) losses++; } if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1); } //---- return lot size if(lot<0.025) lot=0.025; return(lot); } void WeekdayFilter() { double GMT_Hour; int servertime = TimeCurrent(); int GMT_time = servertime - 3600.0 * GMTOffset; if (((Monday && DayOfWeek() == 1) || (Tuesday && DayOfWeek() == 2) || (Wednesday && DayOfWeek() == 3) || (Thursday && DayOfWeek() == 4) || (Friday && DayOfWeek() == 5) } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int res; res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Open ,0,Bid-iStopLoss*Point,Bid+iTakeProfit*Point,"KAUF",iMagi cNumber,0,Blue); return; } Vielen Dank für eure Hilfe
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
Hallo,
hättest ja schreiben können was er macht. Dann wärest Du drauf gekommen, da der EA ja permanent kauft, das Du weder eine Funktion für den zeitlich korrekten Einkauf, noch für den Verkauf hast, bzw benutzt Du mußt in start() den Tages und Zeitfilter für den Einkauf nutzen und davon abhängig ordersend() aufrufen. Orderclose brauchst Du dann wenn eine Position offen ist um 23:59, um diese zu schliessen. Gruß Joe |
|
|||
Also der EA soll nur kaufen und nicht verkaufen...wenn von 100 Trades 70 long sind, dann ist das Verhältnis kauf zu verkauf schon eindeutig ;-) Also soll der EA Mittwochs nur kaufen ;-)
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
Lesezeichen |
Stichworte |
mql4, programmierng expert advisor, programmierung ea, programmierung metatrader |
|
|