For large amounts of code, attach itif (OrderSend(...)!=-1)
Why are you not printing out your errors? What are Function return values ? How do I use them ? - MQL4 forum- Not adjusting for ECN brokers. Not adjusting for 4/5 digit brokers (TP, SL, AND slippage)
//++++ 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(){ OptInitialization(); if (Digits % 2 == 1){ // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 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()); //}
NormalizeDouble(Ask - atrr * Point,Digits),
Bid/Ask: (No Need) to use NormalizeDouble in OrderSend - MQL4 forum- Learn to add print statements and find out what values you are using
Ask - atrr * Point
1.2345 - 0.0010 * 0.0001
1.2345 - 0.0000001
1.2345Ask - atrr * Point
1.23456 - 0.00100 * 0.00001
1.23456 - 0.00000001
1.23456
WHRoeder: Just what I thought. NormalizeDouble not needed for OrderSend. Also yes, I need to start using print statements more.
Thanks.
For large amounts of code, attach it
- Bid/Ask: (No Need) to use NormalizeDouble in OrderSend - MQL4 forum
- Learn to add print statements and find out what values you are using
Ask - atrr * Point
1.2345 - 0.0010 * 0.0001
1.2345 - 0.0000001
1.2345Ask - atrr * Point
1.23456 - 0.00100 * 0.00001
1.23456 - 0.00000001
1.23456
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
After putting on an external variable to put more control on Limit Orders, the backtest showed No change in
performance. This was after changing the ATR Multiplier from 1 to 4. This should reduce the number of Orders
filled and also change the performance and profits. Here is the code as is in the EA:
extern string MU ="Average True Range Multipler-Limit Order adjust";
extern int mul = 2; //Average True Range Multipler-Limit Order adjust
atr=iATR(NULL,0,5,0);
atrr=atr*mul;
if (OrderSend(Symbol(),OP_BUYLIMIT,Lot,NormalizeDouble(Ask - atrr * Point,Digits),slippage,SL,TP,"news",Magic,0,Green)!=-1) TimeBarB=TimeCurrent();