if(TimeCurrent()-OrderOpenTime()==0) //When price enters buy stop
No need for this test. OrderType==OP_BUY tells you it has open. The test fails because the order opens, time passes, next tick occurs, you get called - so TimeCurrent() can be different than OrderOpenTime(). They will be equal only if you receive multiple ticks per second (broker and network dependent.)if(Bars!=ThisBarTrade)
Bars is unreliable (max bars on chart) volume is unreliable (miss ticks) Always use time. New candle - MQL4 forum
WHRoeder:
- No need for this test. OrderType==OP_BUY tells you it has open. The test fails because the order opens, time passes, next tick occurs, you get called - so TimeCurrent() can be different than OrderOpenTime(). They will be equal only if you receive multiple ticks per second (broker and network dependent.)
Hey WHRoeder,
Always appreciate your responses. I used this:
if(TimeCurrent()-OrderOpenTime()==0)
Such that it only trades once the stop order opens, if I remove it, it trades every new candle. Is there any other filter I can use...?
Could I not use something like this:
if(TimeCurrent()-OrderOpenTime()<=60)
DeanDeV: I used this: Such that it only trades once the stop order opens, if I remove it, it trades every new candle.
That's not what it does. It tests if the order was opened the same second: TimeCurrent() == OrderOpenTime()
The
if(Bars!=ThisBarTrade){ ThisBarTrade=Bars;should prevent a second open.
WHRoeder:
That's not what it does. It tests if the order was opened the same second: TimeCurrent() == OrderOpenTime()
The
should prevent a second open.Isn't the ThisBarTrade equivalent to isNewBar as a filter?
It is still sending every candle after entering..
for(int u=OrdersTotal()-1; u>=0; u--) { if(!OrderSelect(u,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()==Symbol()) if(OrderMagicNumber()==MagicNumber1) { if(OrderType()==OP_BUY) { if(isNewBar) { if(Bars!=ThisBarTrade) { ThisBarTrade=Bars; int SellStopOrder=OrderSend(Symbol(),OP_SELLSTOP,LotSize,Price,3,StopLoss,TakeProfit,"sell stop order",MagicNumber2,0,clrRed); if(SellStopOrder<0) Print("Failed to place sell stop order, error#",GetLastError()); } } } }
I also need it to send the sell stop on the same candle the buy stop gets hit so isNewBar does not help?
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
Hey guys,
I need some help please. I send a buy stop, when price hits the buy stop it opens a buy order. When this happens I would like my EA to send a corresponding sell stop when price enters the buy stop. Now; this for loop works most of the time, however, there are a few occasions it does not. Any reason why it would not sometimes?
Also note that it does not return any error values so I don't think it even makes it to the OrderSend().