Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Tagestrader (http://www.expert-advisor.com/forum/showthread.php?t=1651)

Mast83 09.10.11 23:10

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

JoeDormann 10.10.11 15:18

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

Mast83 10.10.11 16:26

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 ;-)


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:11 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum