bool _previousOrderMadeProfit = false;
bool DidPreviousOrderMadeProfit()
{
bool result = false;
if(_previousOrderMadeProfit == true)
result = previousOrderMadeProfit;
return(result);
}
Greets JB
Hi Guys,
First of all, I want to thank you all for contributing on this fine forum.
I'm writing my own EA, but I still haven't mastered mql4... this problem is very easy to solve for a beginner coder :) :
The idea of this function is not to trade, when last trade was closed with a loss: so a()=0 - don't trade, a()=1 -trade.
bool a()
{
if (OrdersHistoryTotal()==0)
return(1); //coz you have to trade if there are no trades ;)
else
if (OrdersHistoryTotal()>0)
{
OrderSelect(OrdersHistoryTotal(), SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit()<0)
return (0);
else
if (OrderProfit()>0)
return (1);
}
}
With this code the EA opens only one trade and thats all, so I'm making some sort of syntax error in the " if (OrdersHistoryTotal()>0)" block.
I would be grateful for help,
happy pip'n :)
Tom
Can't remember how the history is indexed off the top of my head. Let's assume it is unordered for now. So you should store the last order ticket in the LastTicket variable and access it that way.
Your check for profit is up the creek as you've omitted the case where profit equals zero. Assuming you only wish to trade if you've made a tangible profit, the function should indicate a profit if greater than zero and no profit in all other cases.
And you are making life hard for yourself by unnecessarily complicating the logic in the if, else statements.
You've also got spaces where they shouldn't be - in the return statements - does this compile cleanly?
Tom, sorry mate, but there's really not much right with this particular chunk of code.
Here's how simple it could be:
bool a()
{
if (OrdersHistoryTotal()==0)
return(1);
OrderSelect(LastTicket, SELECT_BY_TICKET, MODE_HISTORY);
if (OrderProfit()>0)
return(1);
return(0);
}
Thanks guys, that was quick.
I still have to learn a lot.
Thanks again!
Tom
Thanks guys, that was quick.
I still have to learn a lot.
Thanks again!
Tom
No problem. Happy enough to help someone who wants to make the effort. Remember to let us know which (if any) of the solutions work for you.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi Guys,
First of all, I want to thank you all for contributing on this fine forum.
I'm writing my own EA, but I still haven't mastered mql4... this problem is very easy to solve for a beginner coder :) :
The idea of this function is not to trade, when last trade was closed with a loss: so a()=0 - don't trade, a()=1 -trade.
bool a()
{
if (OrdersHistoryTotal()==0)
return(1); //coz you have to trade if there are no trades ;)
else
if (OrdersHistoryTotal()>0)
{
OrderSelect(OrdersHistoryTotal(), SELECT_BY_POS, MODE_HISTORY);
if(OrderProfit()<0)
return (0);
else
if (OrderProfit()>0)
return (1);
}
}
With this code the EA opens only one trade and thats all, so I'm making some sort of syntax error in the " if (OrdersHistoryTotal()>0)" block.
I would be grateful for help,
happy pip'n :)
Tom