u should find in the history if a trade as been closed
for (int x = 0; x <= OrdersHistoryTotal(); x++) { if (you found a closed order) { ................ } }
if(OrdersTotal()==0)
This makes the EA incompatable with every other including itself on other charts.int count = 0; else for(int iPos = OrdersTotal()-1; iPos >= 0; iPos--) if( // Open orders OrderSelect(iPos, SELECT_BY_POS) // Only my orders w/ && OrderMagicNumber() == Magic.Number // my magic number && OrderSymbol() == chart.symbol // and my pair. ){ count++; } if (count ...
for (int i = 1; i<max_count_of_all_gridLines; i++) { if (Ask == BasicGridLine - grid_separation*i) { enter_trade_SELL=1 ; } if (Bid == BasicGridLine + grid_separation*i) { enter_trade_SELL=1 ; Print(i); } }
Doubles will rairly compare equal. so your IFs will usually fail. There is one grid, you should be comparing Bid for both directions. No enter_trade_BUY. Try:for (int i = max_count_of_all_gridLines; i >= 1; i++){ if (Bid <= BasicGridLine - grid_separation*i){ enter_trade_SELL=1; break; } if (Bid >= BasicGridLine + grid_separation*i){ enter_trade_BUY=1; break; } }
double Ticket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, slip, 0, Ask+TP*Point, "Buy(#" + 1 + ")", 1, 0, DodgerBlue) ; // Trade oeffnen
TP=11. EA will fail on a 5 digit broker. Fails on a ECN broker. Always test return codes.//++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.015 0.0150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init(){ if (Digits % 2 == 1){ // DE30=1/JPY=3/EURUSD=5 https://www.mql5.com/en/forum/135345 pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- These are adjusted for 5 digit brokers. /* On ECN brokers you must open first and THEN set stops int ticket = OrderSend(..., 0,0,...) if (ticket < 0) Alert("OrderSend failed: ", GetLastError()); else if (!OrderSelect(ticket, SELECT_BY_TICKET)) Alert("OrderSelect failed: ", GetLastError()); else if (!OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0) Alert("OrderModify failed: ", GetLastError()); */
- Check out snowballs and the anti-grid - 7bit
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,
I am trying to code a very simple EA.
The EA should do the follwing:
The variable BasicGridLine is the Basic Grid line ;)
Variable grid_separation is the distance to the next grid line, again and again....
If the ask price match a grid line, a tradeshould be open with X Pips Take Profit of the Variable TP. No SL will be set.
I tried already a Grid EA, but this one opens not always a trade. Sometimes it opens, a trade, sometimes not.
For example, if the prioce is 1.0000 and evey 10 pips distance it shopuld open a trade. So 1.0010 1.0020 1.0030 it should open a new trade. If at 1.0030 it opens a trade and it goes back to 1.0020 is should take profit and if the proice turn again, at 1.0030 should be a new trade with take profit 1.0020. And if at 1.0030 it opens a trade with tp 1.0020 but the price goes only to 1.0025 and then to 1.0030 again, it should not open again a 2nd trade on that price. So it should be be only one trade at a specific price be open.
I attached an EA which is doing what I like, but if a trade is closed, it will not open again. I wonder why?
If I trade this EA by Hand, it is very successfull. But there is no time to even to drink a coffee, because you will miss the next entry.