Questions from Beginners MQL5 MT5 MetaTrader 5 - page 1403

 
Marco Nicholas Comment() in switch() instead of the same Print.

Is it really that difficult to try it yourself?

 
Vitaly Muzichenko #:

Would it really be so hard to try it yourself?

I tried it, it works.

Because of the internal F1 help about "switch", such a question arose, because only Print is specified there. And I noticed earlier thatComment() in void OnTick() slows down code execution greatly.

 
I bought an indicator but when I install it I get the MQL5 community dialog box and it tells me that my login and password are not valid, but nevertheless I am entering the credentials sent to my email, I already changed the password, but nothing and I am registered.
 
Can anyone help me on how I can do this?
 
kduarte #:
Can anyone help me on how I can do this?

Make sure you are using your kduarte login and that your MQL5 account password is no longer than 10 characters.

 
Vladimir Karputov #:

You do not control the ORDERS in any way, you check the number and type of the POSITION in the code. Besides - you incorrectly work with POSITIONS (error to use 'PositionSelect(_Symbol)' if your account type is hedging). Your algorithm has serious design errors.

What You Should Do:

1. Work EXCLUSIVELY at the time of the birth of a new bar. If there is no new bar - do nothing, do not make unnecessary movements.

2. This item will be disclosed after item 1 is completed.

Hello Vladimir,

Again thanks alot for the hints dropped. It took me awhile to figure things out. 

What I changed based on your tips:

- Changed the logic for opening and closing to a hedging version. 

- I work now with the birth of a new bar for some calculations/order placement. 


Since these changes are applied, orders are now only opened and closed only once. But now I have a problem with backtesting. I get an error that the array in line 121 is out of range. Can you point me in the right direction? I tried using an array of the double type for closing prices and copyClose, but still get the error then. 

Also excited for item 2 :)


Code so far:

In yellow I highlighted line 121.

void OnTick()

{ 
        MqlTradeRequest request;
        MqlTradeResult Result;
        ZeroMemory(request);
        
//Setting newBar event handler
bool newBar = true;
int barShift =0;

newBar = NewBar.CheckNewBar(_Symbol,_Period);
barShift = 1;
        
// Get current market orders
        ulong buyTicket = 0, sellTicket = 0;
        for(int i = 0; i < PositionsTotal(); i++)
        {
           ulong ticket = PositionGetTicket(i);
           PositionSelectByTicket(ticket);
           
           if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
           {
              buyTicket = ticket;
              Buy_openend = true;
           }
           else if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
           {
              sellTicket = ticket;
              Sell_openend = true;
           }
        }
   



if(newBar == true)
  {
      double closingprice[];
      datetime date_time[];
      MqlRates bar[];
      ArraySetAsSeries(bar,true);
      ArrayResize(bar,80);
      CopyRates(_Symbol,_Period,0,56,bar);
      
      
      double close = bar[1].close;
      datetime time = bar[1].time;

datetime startTime = CreateDateTime(OpentimeHH,OpentimeMM);
datetime endTime = CreateDateTime(EndtimeHH,EndtimeMM);

if(OpentimeHH <= EndtimeHH)
          {
          endTime -= TIME_ADD_DAY;
          }
      
Comment(close,time, "start time:", startTime, "endtime:", endTime);

int bar_index = iBarShift(_Symbol, PERIOD_CURRENT, endTime,true);
double closeprev = bar[bar_index].close; //line 121


// Check for trade conditions
bool BuyCondition = (close >= closeprev) && (bar[1].time == startTime) && (Buy_openend == false);
bool SellCondition = (close <= closeprev) && (bar[1].time == startTime) && (Sell_openend == false);


// Open Market buy order
if(BuyCondition)
  {
   //Close Posible Sell Order
   if(sellTicket > 0)
     {
      PositionSelectByTicket(sellTicket);
      request.action = TRADE_ACTION_DEAL;
      request.type   = ORDER_TYPE_BUY;
      request.symbol = _Symbol;
      request.position = sellTicket;
      request.volume = PositionGetDouble(POSITION_VOLUME);
      request.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
      request.type_filling = ORDER_FILLING_IOC;
      request.deviation = 50;
      
      bool sent = OrderSend(request,Result);
     }
     
     request.action = TRADE_ACTION_DEAL;
                request.type = ORDER_TYPE_BUY;
                request.symbol = _Symbol;
                request.position = 0;
                request.volume = TradeVolume;
                request.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
                request.type_filling = ORDER_FILLING_IOC;
                request.sl = 0;
                request.tp = 0;
                request.deviation = 50;
                
                bool sent = OrderSend(request,Result);
  }

//Open Market Sell Order
if(SellCondition)
  {
     //Close posible buy orders
     if(buyTicket > 0)
       {
      PositionSelectByTicket(buyTicket);
      request.action = TRADE_ACTION_DEAL;
      request.type   = ORDER_TYPE_SELL;
      request.symbol = _Symbol;
      request.position = buyTicket;
      request.volume = PositionGetDouble(POSITION_VOLUME);
      request.price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
      request.type_filling = ORDER_FILLING_IOC;
      request.deviation = 50;
      
      bool sent = OrderSend(request,Result);
     }
  request.action = TRADE_ACTION_DEAL;
                request.type = ORDER_TYPE_SELL;
                request.symbol = _Symbol;
                request.position = 0;
                request.volume = TradeVolume;
                request.price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
                request.type_filling = ORDER_FILLING_IOC;
                request.sl = 0;
                request.tp = 0;
                request.deviation = 50;
                
                bool sent = OrderSend(request,Result);
  }
}
  }
 
Divania111 # :


Check the result of the operation:

int bar_index = iBarShift ( _Symbol , PERIOD_CURRENT , endTime, true );
 
Vladimir Karputov #:

Check the result of the operation:

Omg! Thanks alot! 
 
Hello Traders... Please Help 

How to change Risk in percent to Lot size or fix lot in EA breakdown Experts: breakdown. 

//+------------------------------------------------------------------+
//|                           breakdown(barabashkakvn's edition).mq5 |
//|                                                           Arist0 |
//|                                              arist0.rr@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Arist0"
#property link      "arist0.rr@gmail.com"
#property version   "1.001"
//---
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>
#include <Trade\OrderInfo.mqh>
#include <Expert\Money\MoneyFixedMargin.mqh>
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                      // trading object
CSymbolInfo    m_symbol;                     // symbol info object
CAccountInfo   m_account;                    // account info wrapper
COrderInfo     m_order;                      // pending orders object
CMoneyFixedMargin *m_money;
//--- input parameters
input ushort   InpStopLoss       = 50;       // Stop Loss (in pips)
input ushort   InpTakeProfit     = 50;       // Take Profit (in pips)
input ushort   InpTrailingStop   = 5;        // Trailing Stop (in pips)
input ushort   InpTrailingStep   = 5;        // Trailing Step (in pips)
input ushort   InpMinDistance    = 25;       // Minimum distance
input double   Risk              = 5;        // Risk in percent for a deal from a free margin
input ulong    m_magic           = 585000550;// magic number
//---
ulong          m_slippage=10;                // slippage

double         ExtStopLoss=0.0;
double         ExtTakeProfit=0.0;
double         ExtTrailingStop=0.0;
double         ExtTrailingStep=0.0;
double         ExtMinDistance=0.0;

double         m_adjusted_point;             // point value adjusted for 3 or 5 points

bool           bln_delete_all=false;
datetime       dt_last_delete=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(InpTrailingStop!=0 && InpTrailingStep==0)
     {
      string text=(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian")?
                  "Трейлинг невозможен: параметр \"Trailing Step\" равен нулю!":
                  "Trailing is not possible: parameter \"Trailing Step\" is zero!";
      Alert(__FUNCTION__," ERROR! ",text);
      return(INIT_PARAMETERS_INCORRECT);
     }
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();
//---
   m_trade.SetExpertMagicNumber(m_magic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
   m_trade.SetDeviationInPoints(m_slippage);
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(m_symbol.Digits()==3 || m_symbol.Digits()==5)
      digits_adjust=10;
   m_adjusted_point=m_symbol.Point()*digits_adjust;

   ExtStopLoss    = InpStopLoss     * m_adjusted_point;
   ExtTakeProfit  = InpTakeProfit   * m_adjusted_point;
   ExtTrailingStop= InpTrailingStop * m_adjusted_point;
   ExtTrailingStep= InpTrailingStep * m_adjusted_point;
   ExtMinDistance = InpMinDistance  * m_adjusted_point;
//---
   if(m_money!=NULL)
      delete m_money;
   m_money=new CMoneyFixedMargin;
   if(m_money!=NULL)
     {
      if(!m_money.Init(GetPointer(m_symbol),Period(),m_symbol.Point()*digits_adjust))
         return(INIT_FAILED);
      m_money.Percent(Risk);
     }
   else
     {
      Print(__FUNCTION__,", ERROR: Object CMoneyFixedMargin is NULL");
      return(INIT_FAILED);
     }
//---
   bln_delete_all=false;
   dt_last_delete=0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   if(m_money!=NULL)
      delete m_money;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(bln_delete_all)
     {
      if(IsPendingOrdersExists())
        {
         DeleteAllPendingOrders();
         //dt_last_delete=iTime(m_symbol.Name(),Period(),0);
         return;
        }
      else
        {
         bln_delete_all=false;
         dt_last_delete=iTime(m_symbol.Name(),PERIOD_D1,0);
        }
     }
//---
   if(IsPendingOrdersExists() && dt_last_delete<iTime(m_symbol.Name(),PERIOD_D1,0))
     {
      bln_delete_all=true;
      return;
     }
//---
   if(!IsPendingOrdersExists())
     {
      if(!RefreshRates())
         return;
      //---
      double price=iHigh(m_symbol.Name(),PERIOD_D1,1)+ExtMinDistance;
      double sl=(InpStopLoss==0)?0.0:price-ExtStopLoss;
      double tp=(InpTakeProfit==0)?0.0:price+ExtTakeProfit;
      PendingBuyStop(price,sl,tp);
      //---
      price=iLow(m_symbol.Name(),PERIOD_D1,1)-ExtMinDistance;
      sl=(InpStopLoss==0)?0.0:price+ExtStopLoss;
      tp=(InpTakeProfit==0)?0.0:price-ExtTakeProfit;
      PendingSellStop(price,sl,tp);

      dt_last_delete=iTime(m_symbol.Name(),PERIOD_D1,0);
      return;
     }
//---
   Trailing();
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//---
   double res=0.0;
   int losses=0.0;
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);

         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_IN)
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
               DeleteAllPendingOrders();
     }
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
//| Pending order of Buy Stop                                        |
//+------------------------------------------------------------------+
void PendingBuyStop(double price,double sl,double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double check_open_long_lot=m_money.CheckOpenLong(m_symbol.Ask(),sl);
   Print("sl=",DoubleToString(sl,m_symbol.Digits()),
         ", CheckOpenLong: ",DoubleToString(check_open_long_lot,2),
         ", Balance: ",    DoubleToString(m_account.Balance(),2),
         ", Equity: ",     DoubleToString(m_account.Equity(),2),
         ", FreeMargin: ", DoubleToString(m_account.FreeMargin(),2));
   if(check_open_long_lot==0.0)
     {
      Print(__FUNCTION__,", ERROR: method CheckOpenLong returned the value of \"0.0\"");
      return;
     }
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),check_open_long_lot,m_symbol.Ask(),ORDER_TYPE_BUY);
   if(check_volume_lot!=0.0)
     {
      if(check_volume_lot>=check_open_long_lot)
        {
         if(m_trade.BuyStop(check_open_long_lot,m_symbol.NormalizePrice(price),
            m_symbol.Name(),m_symbol.NormalizePrice(sl),m_symbol.NormalizePrice(tp)))
           {
            if(m_trade.ResultOrder()==0)
              {
               Print("#1 Buy Stop -> false. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
               PrintResultTrade(m_trade,m_symbol);
              }
            else
              {
               Print("#2 Buy Stop -> true. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
               PrintResultTrade(m_trade,m_symbol);
              }
           }
         else
           {
            Print("#3 Buy Stop -> false. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
        }
      else
        {
         Print(__FUNCTION__,", ERROR: method CheckVolume (",DoubleToString(check_volume_lot,2),") ",
               "< method CheckOpenLong ("+DoubleToString(check_open_long_lot,2)+")");
         return;
        }
     }
   else
     {
      Print(__FUNCTION__,", ERROR: method CheckVolume returned the value of \"0.0\"");
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Pending order of Sell Stop                                       |
//+------------------------------------------------------------------+
void PendingSellStop(double price,double sl,double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double check_open_short_lot=m_money.CheckOpenShort(m_symbol.Bid(),sl);
   Print("sl=",DoubleToString(sl,m_symbol.Digits()),
         ", CheckOpenLong: ",DoubleToString(check_open_short_lot,2),
         ", Balance: ",    DoubleToString(m_account.Balance(),2),
         ", Equity: ",     DoubleToString(m_account.Equity(),2),
         ", FreeMargin: ", DoubleToString(m_account.FreeMargin(),2));
   if(check_open_short_lot==0.0)
     {
      Print(__FUNCTION__,", ERROR: method CheckOpenShort returned the value of \"0.0\"");
      return;
     }
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),check_open_short_lot,m_symbol.Bid(),ORDER_TYPE_SELL);
   if(check_volume_lot!=0.0)
     {
      if(check_volume_lot>=check_open_short_lot)
        {
         if(m_trade.SellStop(check_open_short_lot,m_symbol.NormalizePrice(price),
            m_symbol.Name(),m_symbol.NormalizePrice(sl),m_symbol.NormalizePrice(tp)))
           {
            if(m_trade.ResultOrder()==0)
              {
               Print("#1 Sell Stop -> false. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
               PrintResultTrade(m_trade,m_symbol);
              }
            else
              {
               Print("#2 Sell Stop -> true. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
               PrintResultTrade(m_trade,m_symbol);
              }
           }
         else
           {
            Print("#3 Sell Stop -> false. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
        }
      else
        {
         Print(__FUNCTION__,", ERROR: method CheckVolume (",DoubleToString(check_volume_lot,2),") ",
               "< method CheckOpenShort ("+DoubleToString(check_open_short_lot,2)+")");
         return;
        }
     }
   else
     {
      Print(__FUNCTION__,", ERROR: method CheckVolume returned the value of \"0.0\"");
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Print CTrade result                                              |
//+------------------------------------------------------------------+
void PrintResultTrade(CTrade &trade,CSymbolInfo &symbol)
  {
   Print("Code of request result: "+IntegerToString(trade.ResultRetcode()));
   Print("code of request result as a string: "+trade.ResultRetcodeDescription());
   Print("Deal ticket: "+IntegerToString(trade.ResultDeal()));
   Print("Order ticket: "+IntegerToString(trade.ResultOrder()));
   Print("Volume of deal or order: "+DoubleToString(trade.ResultVolume(),2));
   Print("Price, confirmed by broker: "+DoubleToString(trade.ResultPrice(),symbol.Digits()));
   Print("Current bid price: "+DoubleToString(symbol.Bid(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultBid(),symbol.Digits()));
   Print("Current ask price: "+DoubleToString(symbol.Ask(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultAsk(),symbol.Digits()));
   Print("Broker comment: "+trade.ResultComment());
  }
//+------------------------------------------------------------------+
//| Is pendinf orders exists                                         |
//+------------------------------------------------------------------+
bool IsPendingOrdersExists(void)
  {
   for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
            return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Delete all pending orders                                        |
//+------------------------------------------------------------------+
void DeleteAllPendingOrders(void)
  {
   for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
            m_trade.OrderDelete(m_order.Ticket());
  }
//+------------------------------------------------------------------+
//| Trailing                                                         |
//+------------------------------------------------------------------+
void Trailing()
  {
   if(InpTrailingStop==0)
      return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingStop+ExtTrailingStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingStop+ExtTrailingStep))
                    {
                     if(!m_trade.PositionModify(m_position.Ticket(),
                        m_symbol.NormalizePrice(m_position.PriceCurrent()-ExtTrailingStop),
                        m_position.TakeProfit()))
                        Print("Modify ",m_position.Ticket(),
                              " Position -> false. Result Retcode: ",m_trade.ResultRetcode(),
                              ", description of result: ",m_trade.ResultRetcodeDescription());
                     RefreshRates();
                     m_position.SelectByIndex(i);
                     PrintResultModify(m_trade,m_symbol,m_position);
                     continue;
                    }
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingStop+ExtTrailingStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingStop+ExtTrailingStep))) ||
                     (m_position.StopLoss()==0))
                    {
                     if(!m_trade.PositionModify(m_position.Ticket(),
                        m_symbol.NormalizePrice(m_position.PriceCurrent()+ExtTrailingStop),
                        m_position.TakeProfit()))
                        Print("Modify ",m_position.Ticket(),
                              " Position -> false. Result Retcode: ",m_trade.ResultRetcode(),
                              ", description of result: ",m_trade.ResultRetcodeDescription());
                     RefreshRates();
                     m_position.SelectByIndex(i);
                     PrintResultModify(m_trade,m_symbol,m_position);
                    }
              }

           }
  }
//+------------------------------------------------------------------+
//| Print CTrade result                                              |
//+------------------------------------------------------------------+
void PrintResultModify(CTrade &trade,CSymbolInfo &symbol,CPositionInfo &position)
  {
   Print("Code of request result: "+IntegerToString(trade.ResultRetcode()));
   Print("code of request result as a string: "+trade.ResultRetcodeDescription());
   Print("Deal ticket: "+IntegerToString(trade.ResultDeal()));
   Print("Order ticket: "+IntegerToString(trade.ResultOrder()));
   Print("Volume of deal or order: "+DoubleToString(trade.ResultVolume(),2));
   Print("Price, confirmed by broker: "+DoubleToString(trade.ResultPrice(),symbol.Digits()));
   Print("Current bid price: "+DoubleToString(symbol.Bid(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultBid(),symbol.Digits()));
   Print("Current ask price: "+DoubleToString(symbol.Ask(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultAsk(),symbol.Digits()));
   Print("Broker comment: "+trade.ResultComment());
   Print("Price of position opening: "+DoubleToString(position.PriceOpen(),symbol.Digits()));
   Print("Price of position's Stop Loss: "+DoubleToString(position.StopLoss(),symbol.Digits()));
   Print("Price of position's Take Profit: "+DoubleToString(position.TakeProfit(),symbol.Digits()));
   Print("Current price by position: "+DoubleToString(position.PriceCurrent(),symbol.Digits()));
  }
//+------------------------------------------------------------------+


 

Good afternoon, experts, please help me to understand what the error is. Connected the indicator from trading view via pinconnector to mt5 demo account. I am not getting any signals. I attached a screenshot of the log screen

Reason: