SL code line not working help Mql5

 

why is this code not working 

#include <Trade\Trade.mqh>
void OnTick()
  {
  //--Defining Variables for Information for Comment
   double myAccountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
   double myAccountProfit = AccountInfoDouble(ACCOUNT_PROFIT);
   double myAccountEquity = AccountInfoDouble(ACCOUNT_EQUITY);
 
 //Comment on and Retrieve Variables or Information
   Comment("Account Balance: ",myAccountBalance,"\n","Account Profit: ", myAccountProfit,"\n","Account Equity: ",myAccountEquity,"\n");
 
   //Declare an initialize the trade request and result of trade request
   MqlTradeRequest request;
   MqlTradeResult result;
   ZeroMemory(request);
   //Defining of the Trade request
   request.action    =TRADE_ACTION_DEAL;
   request.type      =ORDER_TYPE_BUY;
   request.symbol    =_Symbol;
   request.volume     =5;
   request.type_filling     =ORDER_FILLING_FOK;
   request.price      =SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   request.tp      =10;
   request.sl     =10;
   request.deviation     =50;
   
   //If variable action based on content
if (!PositionSelect(_Symbol)) // If open Position does not exist
      {
      OrderSend (request,result);
      }
   //If my account balance is low close all orders
if ((myAccountEquity - myAccountBalance) > 2)
   {
      CloseAllOrders();
   }
 }
void CloseAllOrders()
  {
  CTrade trade;
  int i=PositionsTotal()-1;
  while (i>=0)
   {
      if (trade.PositionClose(PositionGetSymbol(i)))  i--;
   }
}

When if I take out the request.sl line it does work? 

Like this one 

#include <Trade\Trade.mqh>
void OnTick()
  {
  //--Defining Variables for Information for Comment
   double myAccountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
   double myAccountProfit = AccountInfoDouble(ACCOUNT_PROFIT);
   double myAccountEquity = AccountInfoDouble(ACCOUNT_EQUITY);
 
 //Comment on and Retrieve Variables or Information
   Comment("Account Balance: ",myAccountBalance,"\n","Account Profit: ", myAccountProfit,"\n","Account Equity: ",myAccountEquity,"\n");
 
   //Declare an initialize the trade request and result of trade request
   MqlTradeRequest request;
   MqlTradeResult result;
   ZeroMemory(request);
   //Defining of the Trade request
   request.action    =TRADE_ACTION_DEAL;
   request.type      =ORDER_TYPE_BUY;
   request.symbol    =_Symbol;
   request.volume     =5;
   request.type_filling     =ORDER_FILLING_FOK;
   request.price      =SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   request.tp      =10;
   request.deviation     =50;
   
   //If variable action based on content
if (!PositionSelect(_Symbol)) // If open Position does not exist
      {
      OrderSend (request,result);
      }
   //If my account balance is low close all orders
if ((myAccountEquity - myAccountBalance) > 2)
   {
      CloseAllOrders();
   }
 }
void CloseAllOrders()
  {
  CTrade trade;
  int i=PositionsTotal()-1;
  while (i>=0)
   {
      if (trade.PositionClose(PositionGetSymbol(i)))  i--;
   }
}

The second one works despite nothing changing other than removing the sl line of code

 
   request.tp      =SymbolInfoDouble(_Symbol,SYMBOL_ASK)+10*_Point;
   request.sl     =SymbolInfoDouble(_Symbol,SYMBOL_ASK)-10*_Point;
Reason: