You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
It is simple :
Place something like this at the beginning of the start() procedure of your EA and it will prevent it from working if the loss (or profit) already made that day exceeds some ammount :
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]Dear Sir MLADEN....
THANKSSSSS A LOT for the above codes.... IOU 2 credits.....
[PHP]
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...
Dear Sir MLADEN....
THANKSSSSS A LOT for the above codes.... IOU 2 credits.....
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...Yes
It will prevent further code processing if the accumulated profit of closed orders is less than some amount. You can replace the last line with this :
[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);To make sure that it is done only in cases when the cumulated "profit" is negative (when there were loses)
Yes
It will prevent further code processing if the accumulated profit of closed orders is less than some amount. You can replace the last line with this :
Dear Sir MLADEN...
So Sorry Sir... I think I didn't make it clear enough for you.....
My intention is that a code for keeping tabs on the ACCUMULATED LOSS only for a specific currency pair and MagicNumber.... Not including the profit that it is makings... ONLY LOSS counts...
SORRY FOR THE CONFUSION..
Best regards..
AZRUL...
Dear Sir MLADEN...
So Sorry Sir... I think I didn't make it clear enough for you.....
My intention is that a code for keeping tabs on the ACCUMULATED LOSS only for a specific currency pair and MagicNumber.... Not including the profit that it is makings... ONLY LOSS counts...
SORRY FOR THE CONFUSION..
Best regards..
AZRUL...AZRUL
Profit can be negative (==loss) In closed otrders list there is a filed called Order() profit that keep the "profit" : positive for wining orders and negative for losing trades. That peace of code does exactly what you need
Dear Sir MLADEN,
The Theory is this.... if today happens to be a SIDEWAY market, I will end up losing some of the profit (if any) that has been made and X$ RISK on my capital.... That is not a protection against a very BAD DAY of trading.....
The reason for this is that I am willing to RISK at X$ per day from today's trading....
The above codes will eat up all the profits (if any) for the day plus it will also eat up my RISK (capital)...
THANKS
Best regards...
AZRUL...
AZRUL Profit can be negative (==loss) In closed otrders list there is a filed called Order() profit that keep the "profit" : positive for wining orders and negative for losing trades. That peace of code does exactly what you need
Dear Sir MLADEN...
Thanks for enlighten me on the above suggestion...
I will try and search for any result....
best regards
AZRUL...
Dear Sir MLADEN,
Will the following codes do the trick...
Keeping tabs on the ACCUMULATED LOSS only for a specific currency pair and MagicNumber.... Not including the profit that it is makings... ONLY LOSS counts...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Your Knowledge is highly appreciated...
yours truly
AZRUL....
Dear Sir MLADEN,
Will the following codes do the trick...
Keeping tabs on the ACCUMULATED LOSS only for a specific currency pair and MagicNumber.... Not including the profit that it is makings... ONLY LOSS counts...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
[/PHP]
Your Knowledge is highly appreciated...
yours truly
AZRUL....No it will not
If you want to add up only loses you have to add
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
So the function will look like this :
[PHP]void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Dear Sir MLADEN....
I am currently using this codes in my EA which is running on a M15 timeframe...
It will open a new order after M15 timeframe...
bool AddP()
{int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++)
{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))
{
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();
}
}
if(_num==0) return(true);
if(_num>0 && ((Time[0]-_ot))>0)
return(true);
else return(false);
}
Could you alter this code to make an order for every 5 minute past the previous order....
although I am on a M15 timeframe....
HOPE YOU ARE NOT OFFENDED BY SENDING SO MANY QUESTION....
best regards
AZRUL...
No it will not
If you want to add up only loses you have to add
&& (OrderProfit()+OrderCommission()+OrderSwap()<0)
So the function will look like this :
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Dear Sir MLADEN,
You do know your ways to get things done around here....
I am VERY-VERY GLAD to get some reply from you SIR....
PM me if there is anything that I could do in return... except for codings....
Thanks
Best regards
AZRUL...