В чем логика ошибок которые допустила нейросеть в этом простом советнике?

 

Я попросил одного из клонов chatgpt написать мне простой советник на открытие сделки по пересечению двух МАшек. Он написал. Компилятор ругается. Вот мне и стало интересно, в чем ошибается нейронка и в чем логика совершения этих ошибок?

Задание сформулировано так:  Напиши мне советника для mt5. Пусть сигналом на покупку будет пересечение снизу вверх обычной скользящей средней с периодом 20 и обычной скользящей средней с периодом 50. А сигналом для закрытия сделки будет пересечение сверху вниз обычной скользящей средней с периодом 20 и обычной скользящей средней с периодом 50. И пусть единовременно будет открыто не больше одной сделки с лотом 1.0 .

//+------------------------------------------------------------------+
//|                                                     MA Cross EA |
//|                                    Copyright 2023, Little B.    |
//|                                              https://littleb.com |
//+------------------------------------------------------------------+

//--- периоды скользящих средних
input int MA_Period_fast = 20;
input int MA_Period_slow = 50;

//+------------------------------------------------------------------+
//| Переменные                                                         |
//+------------------------------------------------------------------+
int ticket;                             // номер ордера
double lots = 1.0;                      // количество лотов
bool is_trade_open = false;             // флаг открытой позиции

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   //--- инициализация
   Print("MA Cross EA started.");

   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   //--- деинициализация
   Print("MA Cross EA stopped.");
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   double ma_fast = iMA(_Symbol, _Period, MA_Period_fast, 0, MODE_SMA, PRICE_CLOSE, 0);
   double ma_slow = iMA(_Symbol, _Period, MA_Period_slow, 0, MODE_SMA, PRICE_CLOSE, 0);

   //--- если есть открытый ордер
   if(is_trade_open)
   {
      //--- проверяем условие закрытия ордера
      if(Crosses(ma_fast, ma_slow, CROSS_FROM_ABOVE))
      {
         //--- закрываем ордер
         if(OrderClose(ticket, lots, Bid, 10, Violet))
         {
            Print("Order closed with profit.");
            is_trade_open = false;
         }
         else
         {
            Print("Failed to close order.");
         }
      }
   }
   //--- если нет открытых ордеров
   else
   {
      //--- проверяем условие открытия ордера
      if(Crosses(ma_fast, ma_slow, CROSS_FROM_BELOW))
      {
         //--- открываем ордер на покупку
         ticket = OrderSend(_Symbol, OP_BUY, lots, Ask, 10, Ask - StopLoss * _Point, Ask + TakeProfit * _Point, "MA Cross EA", MagicNumber, 0, Green);
         if(ticket > 0)
         {
            Print("Order opened at ",Ask," with ticket #",ticket);
            is_trade_open = true;
         }
         else
         {
            Print("Failed to open order.");
         }
      }
   }
}

//+------------------------------------------------------------------+
//| Проверка пересечения скользящих средних                          |
//+------------------------------------------------------------------+
bool Crosses(double val1, double val2, int type)
{
   static double prev_val1 = 0.0;
   static double prev_val2 = 0.0;

   //--- обновляем значения предыдущей свечи
   prev_val1 = iMA(_Symbol, _Period, MA_Period_fast, 0, MODE_SMA, PRICE_CLOSE, 1);
   prev_val2 = iMA(_Symbol, _Period, MA_Period_slow, 0, MODE_SMA, PRICE_CLOSE, 1);

   //--- проверяем пересечение линий
   if(type == CROSS_FROM_BELOW)
   {
      return (prev_val1 < prev_val2 && val1 > val2);
   }
   else if(type == CROSS_FROM_ABOVE)
   {
      return (prev_val1 > prev_val2 && val1 < val2);
   }

   return false;
}

И компилятор выдает следующие ошибки:


'RBLEVELS.mq5' RBLEVELS.mq5                                                                                                          1 1

'iMA' - wrong parameters count                                                                                 RBLEVELS.mq5 43 21

   built-in: int iMA(const string,ENUM_TIMEFRAMES,int,int,ENUM_MA_METHOD,int) RBLEVELS.mq5 43 21

'iMA' - wrong parameters count                                                                                 RBLEVELS.mq5 44 21

   built-in: int iMA(const string,ENUM_TIMEFRAMES,int,int,ENUM_MA_METHOD,int) RBLEVELS.mq5 44 21

'CROSS_FROM_ABOVE' - undeclared identifier                                                         RBLEVELS.mq5 50 36

'OrderClose' - undeclared identifier                                                                         RBLEVELS.mq5 53 13

',' - unexpected token                                                                                         RBLEVELS.mq5 53 30

'ticket' - some operator expected                                                                         RBLEVELS.mq5 53 24

'(' - unbalanced left parenthesis                                                                                 RBLEVELS.mq5 53 12

',' - unexpected token                                                                                         RBLEVELS.mq5 53 36

expression has no effect                                                                                         RBLEVELS.mq5 53 32

'Bid' - undeclared identifier                                                                                 RBLEVELS.mq5 53 38

',' - unexpected token                                                                                         RBLEVELS.mq5 53 41

',' - unexpected token                                                                                         RBLEVELS.mq5 53 45

expression has no effect                                                                                         RBLEVELS.mq5 53 43

')' - unexpected token                                                                                         RBLEVELS.mq5 53 53

expression has no effect                                                                                         RBLEVELS.mq5 53 47

')' - unexpected token                                                                                         RBLEVELS.mq5 53 54

'else' - illegal 'else' without matching 'if' RBLEVELS.mq5 58 10

'iMA' - wrong parameters count                                                                                 RBLEVELS.mq5 94 16

   built-in: int iMA(const string,ENUM_TIMEFRAMES,int,int,ENUM_MA_METHOD,int) RBLEVELS.mq5 94 16

'iMA' - wrong parameters count                                                                                 RBLEVELS.mq5 95 16

   built-in: int iMA(const string,ENUM_TIMEFRAMES,int,int,ENUM_MA_METHOD,int) RBLEVELS.mq5 95 16

'CROSS_FROM_BELOW' - undeclared identifier                                                         RBLEVELS.mq5 98 15

'CROSS_FROM_ABOVE' - undeclared identifier                                                         RBLEVELS.mq5 102 20

18 errors, 3 warnings 19 4


В чем логика его ошибок? Старая версия языка мб? 
 

Александр Князев:

В чем логика его ошибок? Старая версия языка мб? 

это как минимум mql4

 

Начнем с того, что это код на MQL4, т. е. chatgpt ошибся уже в первом предложении.

Но и на MT4 не получится скомпилировать этот код, т. к. пропущено объявление перечисления (или именованных констант?) для  CROSS_FROM_BELOW и  CROSS_FROM_ABOVE.

 

ну вот, началось, будут генерить коды с помощью нейронок и бежать сюда, чтобы им этот код поправили до работоспособного :)

цели, конечно же, будут благие - разобраться в логике нейронки, ага :))

в mql4 простом разобраться не могут, но в логике нейронки они разберутся :)))

ответы хранятся в джобе
Торговые приложения для MetaTrader 5 на заказ
Торговые приложения для MetaTrader 5 на заказ
  • 2023.05.23
  • www.mql5.com
Самый большой фриланс c разработчиками программ на MQL5
 
Oleksandr Volotko #:

ну вот, началось, будут генерить коды с помощью нейронок и бежать сюда, чтобы им этот код поправили до работоспособного :)

цели, конечно же, будут благие - разобраться в логике нейронки, ага :))

в mql4 простом разобраться не могут, но в логике нейронки они разберутся :)))

ответы хранятся в джобе

Ага - похоже.... :-)

там также еще нет объявленных и инициализированных:

TakeProfit 

стоп лосс,   аск, бид

Violet
Причина обращения: