Edit Your Comment
MT4 EA drawdown per day
Jan 25, 2017 zamanından beri üye
12 iletiler
Feb 02, 2017 at 09:09
Jan 25, 2017 zamanından beri üye
12 iletiler
Lets say I have an EA applied to an H1 chart.
How would I calculate the drawdown for that day?
Eg.
On Tick:
If (Today is a New Day) then
dailyDrawdown is 100.0
thisMorningsWorth = netAssetValue()
Else
dailyDrawdown = netAssetValue() / thisMorningsWorth
End
If (dailyDrawdown < 0.95) then
chillForToday()
Else
MakeThoseTrades()
End
What's the best way to set this sort of thing up?
How would I calculate the drawdown for that day?
Eg.
On Tick:
If (Today is a New Day) then
dailyDrawdown is 100.0
thisMorningsWorth = netAssetValue()
Else
dailyDrawdown = netAssetValue() / thisMorningsWorth
End
If (dailyDrawdown < 0.95) then
chillForToday()
Else
MakeThoseTrades()
End
What's the best way to set this sort of thing up?
Nov 21, 2011 zamanından beri üye
1601 iletiler
Feb 02, 2017 at 17:01
Nov 21, 2011 zamanından beri üye
1601 iletiler
Hi,
I calculate Daily_Profit.
Then
Make it %:
Daily_Profit / (Daily_Profit-AccountBalance() * 100
if Daily_Profit_Pourcentage > - x%... then trade.
I calculate Daily_Profit.
Then
Make it %:
Daily_Profit / (Daily_Profit-AccountBalance() * 100
if Daily_Profit_Pourcentage > - x%... then trade.
Jan 25, 2017 zamanından beri üye
12 iletiler
Feb 03, 2017 at 07:51
Jan 25, 2017 zamanından beri üye
12 iletiler
Sketching this out, maybe something like:
--------------------
extern int defaultMaxOrders = 1;
extern double dailyLossLimit = 0.95;
extern double dailyProfitLimit = 1.05;
int today;
double dailyEquity;
double dailyProfit;
bool chillMode = false;
void newDay() {
today = TimeDayOfWeek(TimeCurrent());
dailyEquity = AccountEquity();
chillMode = false;
}
void OnInit() {
today = TimeDayOfWeek(TimeCurrent());
dailyProfit = 1.0;
dailyEquity = AccountEquity();
}
void OnTick() {
if (today != TimeDayOfWeek(TimeCurrent())) {
newDay();
} else {
if (AccountEquity() / dailyEquity > dailyProfitLimit || AccountEquity() / dailyEquity < dailyLossLimit) {
chillMode = true;
closeAll();
}
}
if (openOrders(Symbol()) < defaultMaxOrders && chillMode == false) {
if (isNewCandle()) { makeSomeGoodTrades(); }
}
}
--------------------
?
--------------------
extern int defaultMaxOrders = 1;
extern double dailyLossLimit = 0.95;
extern double dailyProfitLimit = 1.05;
int today;
double dailyEquity;
double dailyProfit;
bool chillMode = false;
void newDay() {
today = TimeDayOfWeek(TimeCurrent());
dailyEquity = AccountEquity();
chillMode = false;
}
void OnInit() {
today = TimeDayOfWeek(TimeCurrent());
dailyProfit = 1.0;
dailyEquity = AccountEquity();
}
void OnTick() {
if (today != TimeDayOfWeek(TimeCurrent())) {
newDay();
} else {
if (AccountEquity() / dailyEquity > dailyProfitLimit || AccountEquity() / dailyEquity < dailyLossLimit) {
chillMode = true;
closeAll();
}
}
if (openOrders(Symbol()) < defaultMaxOrders && chillMode == false) {
if (isNewCandle()) { makeSomeGoodTrades(); }
}
}
--------------------
?
Nov 21, 2011 zamanından beri üye
1601 iletiler
Feb 03, 2017 at 09:45
Nov 21, 2011 zamanından beri üye
1601 iletiler
You can handle it.
Make backtest to check the behaviour is correct.
You can also print when Chillmode is true."No more trading... Loss <-5 or Profit >5"
Make backtest to check the behaviour is correct.
You can also print when Chillmode is true."No more trading... Loss <-5 or Profit >5"

*Ticari kullanım ve istenmeyen e-postalara müsamaha gösterilmez ve hesabın feshedilmesine neden olabilir.
İpucu: Bir resim/youtube urlsi yayınlamak, onu otomatik olarak gönderinize gömer!
İpucu: Bu tartışmaya katılan bir kullanıcı adını otomatik olarak tamamlamak için @ işaretini yazın.