Attached is a sample expert advisor created by AI which tends to fail on compilation can anyone help out AI to pass compilation shared just for learning purposes

 
//+------------------------------------------------------------------+
//|                                                      Session_EA.mq5 |
//|                                                                  |
//|   Copyright 2024, OpenAI Copilot                                 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, OpenAI Copilot"
#property version   "1.00"
#property link      ""

#include <Trade\Trade.mqh> // Include the Trade library

input double lotSize = 0.1; // Lot size for trading
input int slippage = 3;     // Maximum allowed slippage
input int sessionOpenMinutes = 5; // Minutes before session opens

int MagicNumber = 12345; // Unique identifier for this EA

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   Print("Session EA initialized.");
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   datetime sessionOpenTime = iTime(Symbol(), PERIOD_D1, 0);
   sessionOpenTime += sessionOpenMinutes * 60; // Add minutes
   
   double prevClose = iClose(Symbol(), PERIOD_D1, 1);
   double prevPrevClose = iClose(Symbol(), PERIOD_D1, 2);
   
   if (prevClose > prevPrevClose)
   {
      // Previous session closed higher, set sell limit order
      double sellLimitPrice = prevClose + MarketInfo(Symbol(), MODE_SPREAD);
      MqlTradeRequest request = {0};
      MqlTradeResult result = {0};
      request.action = TRADE_ACTION_PENDING;
      request.type = ORDER_SELL_LIMIT;
      request.volume = lotSize;
      request.price = sellLimitPrice;
      request.symbol = Symbol();
      request.magic = MagicNumber;
      OrderSend(request, result);
   }
   else
   {
      // Previous session closed lower, set buy limit order
      double buyLimitPrice = prevClose - MarketInfo(Symbol(), MODE_SPREAD);
      MqlTradeRequest request = {0};
      MqlTradeResult result = {0};
      request.action = TRADE_ACTION_PENDING;
      request.type = ORDER_BUY_LIMIT;
      request.volume = lotSize;
      request.price = buyLimitPrice;
      request.symbol = Symbol();
      request.magic = MagicNumber;
      OrderSend(request, result);
   }
}

 
For "learning purposes" it would help us if you to tell us where (mark the line) and why (message) it "tends to fail on compilation".
 
Amos Tsopotsa: sample expert advisor created by AI

Stop using ChatGPT.
          Help needed to debug and fix an AI EA - Trading Systems - MQL5 programming forum #2 (2023)

ChatGPT (the worst), “Bots Builder”, “EA builder”, “EA Builder Pro”, EATree, “Etasoft forex generator”, “Forex Strategy Builder”, ForexEAdvisor (aka. ForexEAdvisor STRATEGY BUILDER, and Online Forex Expert Advisor Generator), ForexRobotAcademy.com, forexsb, “FX EA Builder”, fxDreema, Forex Generator, FxPro, “LP-MOBI”, Molanis, “Octa-FX Meta Editor”, Strategy Builder FX, “Strategy Quant”, “Visual Trader Studio”, “MQL5 Wizard”, etc., are all the same. You will get something quick, but then you will spend a much longer time trying to get it right, than if you learned the language up front, and then just wrote it.

Since you haven't learned MQL4/5, therefor there is no common language for us to communicate. If we tell you what you need, you can't code it. If we give you the code, you don't know how to integrate it into yours.

We are willing to HELP you when you post your attempt (using Code button) and state the nature of your problem, but we are not going to debug your hundreds of lines of code. You are essentially going to be on your own.

ChatGPT
  1. Even it says do not use it for coding. * 
  2. Mixing MT4 and MT5 code together.
  3. Creating multiple OnCalculate/OnTick functions.
  4. OnCalculate returning a double.
  5. Filling buffers with zero in OnInit (they have no size yet). Setting buffer elements to zero but not setting Empty Value to correspond.
  6. Calling undefined functions.
  7. Calling MT4 functions in MT5 code.
  8. Sometimes, not using strict (MT4 code).
  9. Code that will not compile.
  10. Creating code outside of functions. * 
  11. Creating incomplete code. * 
  12. Initialization of Global variables with non-constants. * 
  13. Assigning a MT5 handle to a double or missing the buffer and bar indexes in a MT4 call. * 
  14. Useing MT4 Trade Functions without first selecting an order. * 
  15. Uses NULL in OrderSend. * 
bot builder Creating two OnInit() functions. * 
EA builder
  1. Counting up while closing multiple orders.
  2. Not useing time in new bar detection.
  3. Not adjusting for 4/5 digit brokers, TP/SL and slippage. * 
  4. Not checking return codes.
EATree Uses objects on chart to save values — not persistent storage (files or GV+Flush.) No recovery (crash/power failure.)
ForexEAdvisor
  1. Non-updateing global variables.
  2. Compilation errors.
  3. Not checking return codes.
  4. Not reporting errors.
FX EA Builder
  1. Not checking return codes.
  2. Loosing open tickets on terminal restart. No recovery (crash/power failure.)
  3. Not adjusting stops for the spread. * 
  4. Using OrdersTotal directly.
  5. Using the old event handlers.
 
Amos Tsopotsa:

You will NEVER succeed using online generators or chat GPT. Learn to code, and do it yourself, its really not that difficult. Within 2 yrs from now you can do it yourself if you start today. There are other languages besides MQL that you can learn like C++, which is close to Mql, just syntax is a bit different, but you can use Python as well, which is a very easy language, i grasped it in a few weeks, and learnt it within a year. You can create excellent Ea's with Python. Go for it, there is a lot of places you can start.

 
Amos Tsopotsa #:

I checked the code and I noticed that Copilot made some mistakes it was unnecessary to say i cant code but Here the mistakes i found and i am willing to be corrected as i said its for educational purposes only.

  • Copilot used the MQL4 language, but the file name was Session_EA.mq5. This was confusing and inconsistent. Copilot should either rename the file to Session_EA.mq4 or change the code to use the MQL4 language.
  • Copilot forgot a semicolon at the end of the #property link statement. This caused a syntax error. Copilot should add a semicolon after the empty string.
  • Copilot used the iTime function, which is an MQL4 function, not an MQL5 function. In MQL5, you should use the CopyTime function instead, which returns the time of the specified bar in the datetime array. You should also specify the start and count parameters for the CopyTime function, which indicate the index of the first element and the number of elements to copy, respectively. For example, to get the time of the current daily bar, you should use:

datetime timeArray[1]; CopyTime(Symbol(), PERIOD_D1, 0, 1, timeArray); datetime sessionOpenTime = timeArray[0];

  • Copilot used the iClose function, which is also an MQL4 function, not an MQL5 function. In MQL5, you should use the CopyClose function instead, which returns the close price of the specified bar in the double array. You should also specify the start and count parameters for the CopyClose function, as explained above. For example, to get the close price of the previous daily bar, you should use:
  • Copilot used the MarketInfo function, which is deprecated in MQL5. In MQL5, you should use the SymbolInfoDouble function instead, which returns the value of a double property of the specified symbol. For example, to get the spread of the current symbol, you should use:

double spread = SymbolInfoDouble(Symbol(), SYMBOL_SPREAD);

  • Copilot missed the symbol, price, and magic parameters in your MqlTradeRequest structure. These parameters are required for opening a trade request. You should add them to your structure with the appropriate values.

This is MQL5, you should know that, and there are professionals on here like myself that will tell you the hard truth, some of us have been in the game for over 10 years, myself 14, William up there has been in this for many years as well, and so with most moderators. When you come to us, and give us an AI generated code, we will not help you, if you wanted to post it for educational purposes, you should have stated where the errors are, and how to fix it, it does not benefit anyone not knowing whats wrong, but you stated there are errors, there are many mistakes in your code, and if we read through it, we can immediately differentiate if it was coded by hand or AI. If you had the knowledge, you would have coded it yourself or pointed out the errors and explained why it does not work.

I am now referring to your comment that said "  it was unnecessary to say i cant code", so why did you give us a piece of code generated by AI that has mistakes? But you can code? And these "solutions" you posted also comes from Chat GPT. These solutions are AI generated as well. Because what you did, is you went to chat GPT, and pasted your errors from meta editor into it, and now chat GPT told you, Oh" sorry for the oversight" here is the corrected code blah blah blah, right? 

Please don't ever think we have not been around the block, all of the tricks up your sleeve, are books we have written that you learnt from,  and dont try taking professionals for fools, we are not that kind of people. We are here to help people like you, but we can only do that if you are being honest, not only with us, but to yourself.

Learn to code, and do it yourself...

Reason: