tomekbuka:
make the EA to wait until the DI- goes over Di+ and trigger the trade again when Di+ goes above Di-.
Thanks William, I hope now I ll be able to cope with that!
Just one more thing
William, I tried by all means to understand that code, you posted in the
other article, but it is still quite vague for me, could you please
make it a bit more explicit?
int start(){ static int lastType=-1; if (BuyCondition && lastType != OP_BUY){ lastType=OP_BUY; orderSend(buy); } if (SellCondition && lastType != OP_SELL){
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
Hello! Im a total newbie, and I need a tip how to solve my (really easy) problem. I built a very simple EA in which, an open order is set, when in ADX indicator the Di+ crosses Di- from the bottom, and closes the order when either SL/TP is triggered, or Di- crosses the Di+ from above. The problem is that, once the SL or TP level is hit, and the Di+ curve is still above Di-, another trade is opened. What I want to do, is to make the EA to wait until the DI- goes over Di+ and trigger the trade again when Di+ goes above Di-. ( I thought about using the "while" to create a cycle). Can somebody give me a hint how can I solve this problem? I hope I was clear in explaining my problem, here is the code to my EA
int start()
{
double main; // main line
double plusDi; // line +DI
double minusDi; // line -DI
int ticket; // ticket number
main=iADX(0,0,14,PRICE_CLOSE,MODE_MAIN,0); // formula for the main line
plusDi=iADX(0,0,14,PRICE_CLOSE,MODE_PLUSDI,0); // fornmula for plus d
minusDi=iADX(0,0,14,PRICE_CLOSE,MODE_MINUSDI,0); // formula for minus d
if (main>20 && plusDi>minusDi && OrdersTotal() == 0) //condition
{ticket = OrderSend(Symbol(),OP_BUY,0.1, Ask,1, Bid-10*Point,
Bid+20*Point);}
if (plusDi<minusDi && OrdersTotal() == 1)// condition for closing the open trade
{OrderClose(ticket,0.1,Ask,1, Red);}
while(plusDi>minusDi)
Sleep(1000);
return(0);}