Lot Size Problem on Mt5 with (deriv broker)

 

hi guys i hope all are ok . i m unable to code lot size based of stop loss for deriv broker (Synthetic indexes).

my code that I have already written down for Forex and Indices it don't work for deriv can any one try to explain where  m doing mistake?

double MoneyManagement(string pSymbol, double pFixedVol, double pPercent, double pStopPoints)
  {
   double tradeSize;
if(last_lot_mode==0)return pPercent;

   if(pPercent > 0 && pStopPoints > 0)
     {
      double balance=0;
      balance =AccountInfoDouble(ACCOUNT_BALANCE);


      double margin = balance * (pPercent / 100);
      double tickSize = SymbolInfoDouble(pSymbol,SYMBOL_TRADE_TICK_VALUE);
      if(IsIndexSymbol(pSymbol))tickSize = SymbolInfoDouble(pSymbol,SYMBOL_TRADE_TICK_SIZE);
  
      display+="Margin : "+DoubleToString(margin,2)+" \n";
      display+="tickSize : "+DoubleToString(tickSize,5)+" \n";
      display+="digits "+IntegerToString(_Digits)+"\n";
      
       tradeSize = (margin / pStopPoints) / tickSize;
      display+="tradesize "+DoubleToString((margin / (pStopPoints)) / tickSize,3)+"\n";
     // display+="lotdigit "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_REAL),3)+"\n";
      tradeSize = VerifyVolume(pSymbol,tradeSize);
      
      return(tradeSize);
     }
   else
     {
      tradeSize = pFixedVol;
      tradeSize = VerifyVolume(pSymbol,tradeSize);

      return(tradeSize);
     }
     
     
     
     
  }



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double VerifyVolume(string pSymbol,double pVolume)
  {
//double minVolume = SymbolInfoDouble(pSymbol,SYMBOL_VOLUME_MIN);
//double maxVolume = SymbolInfoDouble(pSymbol,SYMBOL_VOLUME_MAX);
   double stepVolume = SymbolInfoDouble(pSymbol,SYMBOL_VOLUME_STEP);

   double tradeSize;
//if(pVolume < minVolume) tradeSize = minVolume;
//else if(pVolume > maxVolume) tradeSize = maxVolume;
   if(LotRoundSettings==ROUND_UP)tradeSize = MathCeil(pVolume / stepVolume) * stepVolume;
   if(LotRoundSettings==ROUND_DOWN)tradeSize = MathFloor(pVolume / stepVolume) * stepVolume;
   if(stepVolume >= 0.1)
      tradeSize = NormalizeDouble(tradeSize,1);
   else
      tradeSize = NormalizeDouble(tradeSize,2);

   return(tradeSize);
  }