why this indicator when attach over chart immidiatly unttach ?

 

Hi guys i created this code   but  when attach over a chart not return me error  but immidiatly detach  anyone  have some ide_ thanks

//+------------------------------------------------------------------+
//|                                        MaxLeverageExposure.mq4  |
//|                        Copyright 2024, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // Stampa l'esposizione alla leva sulla chart
   Print("Esposizione alla leva: ", CalculateLeverage());
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // Pulisce la chart al termine
   ObjectsDeleteAll(0, OBJ_LABEL);
  }
//+------------------------------------------------------------------+
//| Calcola l'esposizione alla leva                                  |
//+------------------------------------------------------------------+
double CalculateLeverage()
  {
   double leverage = 0.0;
   double totalMargin = 0.0;
   double totalValue = 0.0;
   int totalOrders = OrdersTotal();
   
   // Itera attraverso tutte le trade aperte
   for(int i = 0; i < totalOrders; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         // Calcola il valore del contratto per ciascuna trade
         double contractValue = OrderLots() * MarketInfo(OrderSymbol(), MODE_MARGINREQUIRED);
         totalValue += contractValue;
         
         // Calcola il margine richiesto manualmente
         double marginRequired = OrderLots() * OrderOpenPrice() / MarketInfo(OrderSymbol(), MODE_MARGINREQUIRED);
         totalMargin += marginRequired;
         Print("Margine richiesto per la trade ", i, ": ", marginRequired);

        }
     }
   
   // Calcola la leva esposta
   if(totalMargin > 0.0)
      leverage = totalValue / totalMargin;
   
   return leverage;
  }
//+------------------------------------------------------------------+
 
faustf:

Hi guys i created this code   but  when attach over a chart not return me error  but immidiatly detach  anyone  have some ide_ thanks

Ricordo che questo è il forum italiano, perciò scrivete in Italiano. Avendo solo la funzione OnInit() tutto quello che deve fare lo fa in fase di avvio. A questo punto prova a lanciarlo come script ovvero utilizza la funzione OnStart() anziché OnInit() 
Motivazione: