Erreur pour un script qui envoie des message sur Telegram

 

Bonjour, J'ai écrit un programme qui doit envoyer des messages quand les conditions de l'indicateur sont réunis, hors j'ai une erreur et je n'arrive pas à la résoudre.

Voila pourquoi je me tourne vers vous voici l'erreur 

Image chargée

Et le code :

// Paramètres Telegram
string telegram_bot_token = "VOTRE_BOT_TOKEN";
string chat_id = "VOTRE_CHAT_ID";

// Variables d'état pour éviter les alertes multiples
bool alertBuySent = false;
bool alertSellSent = false;

// Fonction pour envoyer un message Telegram
void SendTelegramMessage(string message) {
   string url = "https://api.telegram.org/bot" + telegram_bot_token + "/sendMessage?chat_id=" + chat_id + "&text=" + message;
   char result[];
   string result_headers;
   int timeout = 10000;
   ResetLastError();
   int res = WebRequest("GET", url, "", timeout, result, result_headers);

   if(res == -1) {
      Print("Erreur d'envoi de message Telegram: ", GetLastError());
   } else {
      Print("Message Telegram envoyé: ", message);
   }
}

// Fonction pour vérifier les conditions Ichimoku pour achat ou vente
bool CheckIchimokuConditions(ENUM_TIMEFRAMES timeframe, bool isBuy) {
   double ichimoku[5];
   
   if (CopyBuffer(iIchimoku(_Symbol, timeframe, 9, 26, 52), 0, 0, 1, ichimoku) <= 0) {
      Print("Erreur de chargement des données Ichimoku: ", GetLastError());
      return false;
   }

   double tenkan = ichimoku[0];
   double kijun = ichimoku[1];
   double senkouSpanA = ichimoku[2];
   double senkouSpanB = ichimoku[3];
   double closePrice = iClose(_Symbol, timeframe, 0);

   // Condition BUY : prix au-dessus de Tenkan, Kijun, et Kumo
   if(isBuy) {
      return closePrice > tenkan && closePrice > kijun && closePrice > senkouSpanA && closePrice > senkouSpanB;
   }
   // Condition SELL : prix en-dessous de Tenkan, Kijun, et Kumo
   else {
      return closePrice < tenkan && closePrice < kijun && closePrice < senkouSpanA && closePrice < senkouSpanB;
   }
}

// Fonction pour vérifier si le prix est dans le Kumo
bool IsPriceInKumo(ENUM_TIMEFRAMES timeframe) {
   double ichimoku[5];
   
   if (CopyBuffer(iIchimoku(_Symbol, timeframe, 9, 26, 52), 0, 0, 1, ichimoku) <= 0) {
      Print("Erreur de chargement des données Ichimoku: ", GetLastError());
      return false;
   }

   double senkouSpanA = ichimoku[2];
   double senkouSpanB = ichimoku[3];
   double closePrice = iClose(_Symbol, timeframe, 0);

   // Vérifie si le prix est entre les limites du Kumo
   return (closePrice >= MathMin(senkouSpanA, senkouSpanB) && closePrice <= MathMax(senkouSpanA, senkouSpanB));
}

// Fonction principale pour surveiller les conditions et envoyer les alertes
void CheckConditionsAndAlert() {
   bool buyH4 = CheckIchimokuConditions(PERIOD_H4, true);
   bool buyD1 = CheckIchimokuConditions(PERIOD_D1, true);

   bool sellH4 = CheckIchimokuConditions(PERIOD_H4, false);
   bool sellD1 = CheckIchimokuConditions(PERIOD_D1, false);

   // Alerte BUY si conditions H4 et D1 sont remplies, et pas encore alerté
   if (buyH4 && buyD1 && !alertBuySent) {
      SendTelegramMessage("BUY (" + _Symbol + ")");
      alertBuySent = true;
      alertSellSent = false; // réinitialiser l'alerte de vente si une nouvelle condition d'achat apparaît
   }
   // Alerte SELL si conditions H4 et D1 sont remplies, et pas encore alerté
   else if (sellH4 && sellD1 && !alertSellSent) {
      SendTelegramMessage("SELL (" + _Symbol + ")");
      alertSellSent = true;
      alertBuySent = false; // réinitialiser l'alerte d'achat si une nouvelle condition de vente apparaît
   }

   // Réinitialiser les alertes si le prix entre dans le Kumo en Daily
   if (IsPriceInKumo(PERIOD_D1)) {
      alertBuySent = false;
      alertSellSent = false;
   }
}

// Exécution sur chaque tick
void OnTick() {
   CheckConditionsAndAlert();
}

Merci d'avance pour votre aide !!!