# Calculation of Stop Level when Broker has floating Stop Level?

Hi,

my broker Blueberry Markets has floating StopLevel, so I can't check it.

If I check:       StopLevel = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) * _Point;
the result of this function is every time = 0.

In my indicator I calculate:

```input  int                iSLPoints                     = 0;                             // Stop Loss Points
input  int                iTPPoints                     = 0;                             // Take Profit Points

StopLevel = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) * _Point;
if(StopLevel == 0)

Bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);

SLSellStopLevel   = Bid + StopLevel;
TPSellStopLevel   = Bid - StopLevel;

StopLossSell[i]   = NormalizeDouble(MathMax(Bid + iSLPoints * _Point, SLSellStopLevel), _Digits);
TakeProfitSell[i] = NormalizeDouble(MathMin(Bid - iTPPoints * _Point, TPSellStopLevel), _Digits);

```

Is this okay or wrong? And if wrong, how can I calculate it the right way?

Al

Is StopLevel variable maybe of type int?

Don't you get compiler warnings, maybe?

The MathMax call you are doing will always give you the value from the spread array, it's useless.

You are mixing integers and doubles here.

That's the source of your issue. Clean it up and make sure you are comparing the correct values with each other. Then you will get correct results.

You can't move stops (or pending prices) closer to the market than the minimum: MODE_STOPLEVEL * _Point or SymbolInfoInteger(SYMBOL_TRADE_STOPS_LEVEL).
Requirements and Limitations in Making Trades - Appendixes - MQL4 Tutorial

On some ECN type brokers the value might be zero (the broker doesn't know). Use a minimum of two (2) PIPs.

2. `StopLossBuy[i]    = NormalizeDouble(MathMin(Ask - iSLPoints * _Point,`

You buy at the Ask and sell at the Bid. Pending Buy Stop orders become market orders when hit and open at the Ask.

1. Your buy order's TP/SL (or Sell Stop's/Sell Limit's entry) are triggered when the Bid / OrderClosePrice reaches it. Using Ask±n, makes your SL shorter and your TP longer, by the spread. Don't you want the specified amount used in either direction?