Группа "Стол заказов MQL"

Рейтинг 2089



РЕКОМЕНДУЮ



Исправить код от Chat GPT

Здравствуйте, ребята.

Сделал модель ARIMA в MQL5 при помощи искусственного интеллекта ChatGPT. Но выдает ошибки в коде. Прошу Андрея исправить эти ошибки.
ARIMA III.mq5 (4 Kb)
  • +2
  • Просмотров: 1797
  • 4 февраля 2023, 00:19
  • Shtenco
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Прошу написать советник
Следующая запись в группе  
Советник zoloto2 (добавить 2 функции)
03 февраля 2023
04 февраля 2023

Комментарии (19)

+
+1
ыыы… вангую, что такое вряд ли пройдет через бесплатный стол
Но в целом, момент исторический :)  Вот и мы часть всеобщего хайпа по ChatGPT
avatar

  45  Bishop Сообщений: 5720 - АЛЬФАХАМЕЦ-Машковод

  • 4 февраля 2023, 15:21
+
0
:) 
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 15:44
+
0
что это? откуда это?
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 4 февраля 2023, 15:42
+
0
Этот код сделанный искусственным интеллектом)))
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 15:43
+
0
ChatGPT)
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 15:44
+
0
Очень хочу реализовать прогнозирующую модель Арима в МТ 5.:) 
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 15:45
+
0
У меня в Экселе есть надстройка с ней, 75% винрейта выдает, но блин, неудобно, котировки каждый раз грузить нужно
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 15:46
+
+1
ошибок нет:


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2018, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2023 OpenAI"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 LightSeaGreen
double ARIMA_Buffer[];
double clos[];
int ARIMA_Handle;

// ARIMA calculation function
int iARIMA(const int handle,
           const int start,
           const int length,
           const double &data[],
           const int order_diff,
           const int order_MA,
           const int order_AR,
           const int lag)
  {
   int i, j;
   double a, b;
   static double arr_MA[], arr_AR[];
   if(handle == 0)
     {
      ArrayResize(arr_MA, length + 1);
      ArrayResize(arr_AR, length + 1);
     }
   for(i = start; i < length; i++)
     {
      a = data[i];
      for(j = 1; j <= order_diff; j++)
        {
         a -= data[i - j];
        }
      arr_MA[0] = a / (1 + order_diff);
      for(j = 1; j <= order_MA; j++)
        {
         b = (a - arr_AR[j - 1]) / (1 + order_diff) + arr_MA[j - 1] * (1 - lag);
         arr_MA[j] = b;
        }
      for(j = 0; j < order_AR; j++)
        {
         arr_AR[j] = arr_AR[j + 1];
        }
      arr_AR[order_AR] = arr_MA[order_MA];
      ARIMA_Buffer[i - start] = arr_MA[0];
     }
   return handle;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   ArrayResize(clos, Bars(NULL,0));
   for(int i = 0; i < Bars(NULL,0); i++)
     {
      clos[i] = iClose(Symbol(), PERIOD_CURRENT, i);
     }

   ARIMA_Handle = iARIMA(NULL, 0, 0, clos, ArraySize(clos), 1, 1, 5);

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit;
   if(prev_calculated == 0)
      limit = rates_total - 5;
   else
      limit = rates_total - prev_calculated;
   ARIMA_Handle = iARIMA(ARIMA_Handle, prev_calculated, limit, close, 1, 1, 1, 5);
   return limit;
  }

avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 4 февраля 2023, 15:46
+
0
Ух ты)Спасибо!)Но он теперь выдает в 38 строке ошибку выхода за пределы массива(((*wall* 
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 16:12
+
0
вы же вырвали что то из контекста и не дали мне целиком код.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 4 февраля 2023, 16:16
+
0
Это целиком код который дал ИИ(Он делал еще одну версию с библиотекой arima.h, но он написал что эта библиотека — для разработчиков MetaQuotes, и я попросил версию без библиотеки, и вот это он мне выдал)
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 16:18
+
0
у меня нет такой ошибки:

avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 4 февраля 2023, 16:38
+
0
Она при добавлении на график появляется(
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 17:03
+
0
А если я скину другую версию, в которой нужно просто сделать чтобы расчет шел на 1 бар в будущем — сможете исправить? Я не пойму как сделать экстраполяцию модели в будущее(
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 17:05
+
0
Она при добавлении на график появляется(


можно узнать что вы сделали чтобы устранить эту ошибку?
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 4 февраля 2023, 17:26
+
0
Я просто нашел другую версию модели, хоть там и не Арима а авторегрессия второго порядка. А в этой которую ИИ делал, выходит ошибка и я не знаю как ее исправить)
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 19:26
+
0
в этой строке нужно знать что означают все параметры, тогда ошибка исчезает:


 ARIMA_Handle = iARIMA(0, 0, ArraySize(clos), clos, 1, 1, 5, 0);
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 4 февраля 2023, 21:53
+
0
В строке ARIMA_Handle = iARIMA(NULL, 0, RatesTotal(), Close, 1, 1, 1, 5); параметры означают следующее:

NULL: Указатель на идентификатор текущего графика, к которому применяется модель ARIMA.
0: Идентификатор символа, который применяется для модели ARIMA.
RatesTotal(): Общее число баров, используемых в модели ARIMA.
Close: Массив, содержащий цены закрытия для каждого бара, используемых в модели ARIMA.
1: Параметр d, указывающий количество интегрирования (операций дифференцирования) необходимых для стационарности временного ряда.
1: Параметр p, указывающий количество авторегрессионных элементов в модели.
1: Параметр q, указывающий количество скользящих средних в модели.
5: Длина прогноза, т.е. количество баров, на которые делается прогноз.
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 22:37
+
0
Rates Total это он мне с другой версии вшил)Не знаю что за функция даже…
avatar

  9  Shtenco Автор Сообщений: 231

  • 4 февраля 2023, 22:37

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари