Ordersend() error 130 on IG broker for NAS100

 

For some reason I'm getting error 130 if SL or TP is below 80 points.  


                if(takeprofit != 0)
               {
                  TAKEPROFT = Bid - (takeprofit*_Point);
               }

               if(stoploss!=0 && UseSTOPLOSS) STOPLOSS = Bid + (stoploss*_Point);
               else STOPLOSS = iHigh(Symbol(),0,1)+_Point*1;
               
                  int ticket = OrderSend(Symbol(),OP_SELL,lot_size,Bid,3,STOPLOSS,TAKEPROFT,NULL,magic_number,0,clrRed);
                  if(ticket < 0)
                  {
                     Print("Sell Order Send Error: "+IntegerToString(GetLastError()));
                  }
               

   

Documentation on MQL5: Constants, Enumerations and Structures / Trade Constants / Trade Orders in DOM
Documentation on MQL5: Constants, Enumerations and Structures / Trade Constants / Trade Orders in DOM
  • www.mql5.com
For equity securities, the Depth of Market window is available, where you can see the current Buy and Sell orders. Desired direction of a trade operation, required amount and requested price are specified for each order. To obtain information...
 
xiqat:

For some reason I'm getting error 130 if SL or TP is below 80 points.  

Ordersend() error 130 on IG broker for NAS100
STOPLOSS = iHigh(Symbol(),0,1)+_Point*1;

  1. Please edit your (original) post and use the CODE button (Alt-S)! (For large amounts of code, attach it.)
              General rules and best pratices of the Forum. - General - MQL5 programming forum 2019.05.06
              Messages Editor

    1. Floating point has infinite number of decimals, it's your not understanding floating point and that some numbers can't be represented exactly. (like 1/10.)
                Double-precision floating-point format - Wikipedia, the free encyclopedia

      See also The == operand. - MQL4 programming forum

    2. Print out your values to the precision you want with DoubleToString - Conversion Functions - MQL4 Reference.

    3. SL/TP (stops) need to be normalized to tick size (not Point) — code fails on metals. (On 5Digit Broker Stops are only allowed to be placed on full pip values. How to find out in mql? - MQL4 programming forum) and abide by the limits Requirements and Limitations in Making Trades - Appendixes - MQL4 Tutorial and that requires understanding floating point equality Can price != price ? - MQL4 programming forum

    4. Open price for pending orders need to be adjusted. On Currencies, Point == TickSize, so you will get the same answer, but it won't work on Metals. So do it right: Trailing Bar Entry EA - MQL4 programming forum or Bid/Ask: (No Need) to use NormalizeDouble in OrderSend - MQL4 programming forum

    5. Lot size must also be adjusted to a multiple of LotStep and check against min and max. If that is not a power of 1/10 then NormalizeDouble is wrong. Do it right.

    6. MathRound() and NormalizeDouble() are rounding in a different way. Make it explicit.
                MT4:NormalizeDouble - MQL5 programming forum
                How to Normalize - Expert Advisors and Automated Trading - MQL5 programming forum

    7. Prices you get from the terminal are already normalized.

    8. PIP, Point, or Tick are all different in general.
                What is a TICK? - MQL4 programming forum 2014.08.03