Hello :)
I need your help for a trick in my EA.
How to place a BUY STOP at price when there is no BUY STOP at this price and while this level stay activ ?
I send buy stop order at level, order was executed and reaches his TP, price fall under the level, how can I send a new buy stop order with same conditions ?
Here is an exemple :
Thanks for your help :)
Just check all orders and told there is order with same price and same type do or not do ...
Hi,
I posted in the forum MQL5 but my problem is on mt4, sorry...
I give you the real code to be more precise
double supportLvl[10][2] = {0.0, 0.12345, 1.0, 0.23456, 1.0, 0.34567, ... } //{Activ, Price} for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUYSTOP) { for(int cnt2 = ArrayRange(supportLvl,0)-1; cnt2=>0; cnt2--) { if(supportLvl[cnt2][0] == 1.0 && supportLvl[cnt2][1] == OrderOpenPrice()) { //Order is already sent } else if(supportLvl[cnt2][0] == 0.0) { //Order does not need to be sent } else { //Order not sent at this time but it can be on the next loop... } } } } }
So, how can I be sure that the order was not placed for each level and only at the end of control, place it if necessary ?
Thanks for your help :)
Maybe like so?
double supportLvl[10][2]={0.0,0.1234,0.0,0.2345,0.0,0.3456,... } //{Activ, Price} for(int cnt2=ArrayRange(supportLvl,0)-1; cnt2=>0; cnt2--) { for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber && OrderType()==OP_BUYSTOP) { if(supportLvl[cnt2][0]==0.0 && supportLvl[cnt2][1]==NormalizeDouble(OrderOpenPrice(),4)) { //Order is already sent supportLvl[cnt2][0]=1.0; } else if(supportLvl[cnt2][0]==1.0 && supportLvl[cnt2][1]!=NormalizeDouble(OrderOpenPrice(),4)) { //Order does not need to be sent supportLvl[cnt2][0]=0.0; } else { //Order not sent at this time but it can be on the next loop... } } } } }
Maybe like so?
Thanks but I think my multi dimensional array makes example too complicated.
New (more simple) explanation:
I have supports levels, each time price fall under one of the levels and there is no OP_BUY and no OP_BUYSTOP at this price, place buy stop at this level.
levels are stored in a simple Array => levels[10] = {0.12345, 0.23456, 0.34567, ...}
Price is at 1.0000, goes at 0.9995, no OP_BUY and no OP_BUYSTOP at 1.0000 so sends OP_BUYSTOP at 1.0000, price goes up to 1.0000 and activates BUYSTOP, goes more up to 1.0100 and hits BUY Take profit, goes at 0.9993, no OP_BUY and no OP_BUYSTOP at 1.0000 so sends OP_BUYSTOP at 1.0000 .....
Sorry for my very poor english and thanks for your help.
double supportLvl[10]={ 0.12345,0.23456,0.34567,... } //{Activ, Price} for(int lvl=0;lvl<10;lvl++) { if(Ask+50*_Point<supportLvl[lvl]) { for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) || OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber || OrderType()!=OP_BUYSTOP) continue; //--- if(OrderOpenPrice()!=supportLvl[lvl]) OrderSend(OP_BUYSTOP...); } } }
Yeah the code isn't tested and only for suggestion. Maybe if you work with the ticket numbers?
double supportLvl[10]={ 0.12345,0.23456,0.34567,... } //{Activ, Price} int ticket[10]={0,0,0,...} for(int lvl=0;lvl<10;lvl++) { if(!ticket[lvl] && Ask+50*_Point<supportLvl[lvl]) ticket[lvl]=OrderSend(OP_BUYSTOP...); } //--- if(OrderClose(...) for(int i=0;i<10;i++) if(ticket[i]==OrderTicket() || supportLvl[i]==OrderOpenPrice()) ticket[i]=0;
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello :)
I need your help for a trick in my EA.
How to place a BUY STOP at price when there is no BUY STOP at this price and while this level stay activ ?
I send buy stop order at level, order was executed and reaches his TP, price fall under the level, how can I send a new buy stop order with same conditions ?
Here is an exemple :
Thanks for your help :)