Ваши вопросы по языку MQL4

Ugar

Гуру форума
Код:
Зачем делить на Digits?

Потому что при разности получается размер тела тела 0,0568, а деление нужно чтобы получить целое число.
Так надо делить на размер пункта Point, а не на количество знаков после запятой Digits.
 

star603

Новичок форума
Получиться так сделать что:
Первый ряд macd сдвиг лия индикатора
Второй ряд macd свиг сигнальна линия
Третий ряд их разность между ними

Массив - К[3][20];

я конечно могу сделать в разные массивы. Просто есть возможность воплощения этой идеи или нет?
 

star603

Новичок форума
Код:
void ko(double &ml[3][20])
  {
   for(int i = 0; i < ArrayRange(ml, 0)-2;i++)
     for(int j = 0; j < ArrayRange(ml, 1);j++)
       ml[i][j]= iMACD(NULL,PERIOD_CURRENT,36,18,9,PRICE_CLOSE,MODE_MAIN,j);
       ml[i+1][j]= iMACD(NULL,PERIOD_CURRENT,36,18,9,PRICE_CLOSE,MODE_SIGNAL,j);
       ml[2][j]=ml[i+1][j]-ml[i][j];
  };

Другого способа не вижу. Направьте если не втом направлении
 

AlexeyVik

Программист mql4 mql5
Получиться так сделать что:
Первый ряд macd сдвиг лия индикатора
Второй ряд macd свиг сигнальна линия
Третий ряд их разность между ними

Массив - К[3][20];

я конечно могу сделать в разные массивы. Просто есть возможность воплощения этой идеи или нет?
Что-то мне подсказывает ты поменял местами размерность массива. Тем самым сбил с толку и Влада.
Вероятно надо К[20][3]
 

vladradon

Программист
Почему мой вариант ошибочный?
Потому, что цикла по i нет - i принимает только значение 0 и создает 1 проход. Какой смысл задавать цикл, если его нет? И во втором цикле обрабатываются 3 строки и их нужно поместить в фигурные скобки. Иначе будет обработана только 1 строка, а 2 другие будут выдавать ошибку индексации, т.к. они не относятся к циклу и индексные переменные цикла в них не работают.
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
График дневной. Значение 20 дней.
Так вот именно в таком случае должно быть 20 в первом измерении.
Первый день, индекс 0 — 3 значения
Второй день, индекс 1 — 3 значения
………………………………
Двадцатый день, индекс 19 — 3 значения.
 

Ugar

Гуру форума
Так вот именно в таком случае должно быть 20 в первом измерении.
Первый день, индекс 0 — 3 значения
Второй день, индекс 1 — 3 значения
………………………………
Двадцатый день, индекс 19 — 3 значения.
На самом деле без разницы как юзать измерения пока не понадобится менять размер. А это скорее всего понадобится если вместо 20 дней захочется задавать сколько. И вот тогда и выяснится что K[20][3] надо делать.
 

AlexeyVik

Программист mql4 mql5
На самом деле без разницы как юзать измерения пока не понадобится менять размер. А это скорее всего понадобится если вместо 20 дней захочется задавать сколько. И вот тогда и выяснится что K[20][3] надо делать.
А ну-ка распиши как это будет выглядеть. Что-то моей фантазии не хватает.
 

Ugar

Гуру форума
А ну-ка распиши как это будет выглядеть. Что-то моей фантазии не хватает.
Как то так
Код:
//--- input parameters
input uint     CalculateBars=20;

double K[][3];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ArrayResize(K,CalculateBars);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   for(int i = 0; i < ArrayRange(K, 0);i++)
      {
       K[i][0]= iMACD(NULL,PERIOD_CURRENT,36,18,9,PRICE_CLOSE,MODE_MAIN,i);
       K[i][1]= iMACD(NULL,PERIOD_CURRENT,36,18,9,PRICE_CLOSE,MODE_SIGNAL,i);
       K[i][2]=K[i][0]-K[i][1];
      }
  }
 
Последнее редактирование:

AlexeyVik

Программист mql4 mql5
Как то так
Код:
//--- input parameters
input uint     CalculateBars=20;

double K[][3];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ArrayResize(K,CalculateBars);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   for(int i = 0; i < ArrayRange(K, 0);i++)
      {
       K[i][0]= iMACD(NULL,PERIOD_CURRENT,36,18,9,PRICE_CLOSE,MODE_MAIN,i);
       K[i][1]= iMACD(NULL,PERIOD_CURRENT,36,18,9,PRICE_CLOSE,MODE_SIGNAL,i);
       K[i][2]=K[i][0]-K[i][1];
      }
  }
Ой, ой. Так и я могу. Ты сделай массив K[3][20] так чтобы в него можно было всунуть по 3 значения на 20 дней… И не надо менять размерность. Ведь именно об этом ты сказал
На самом деле без разницы как юзать измерения пока не понадобится менять размер. А это скорее всего понадобится если вместо 20 дней захочется задавать сколько. И вот тогда и выяснится что K[20][3] надо делать.
 
  • Like
Реакции: Ugar

Ugar

Гуру форума
Ой, ой. Так и я могу. Ты сделай массив K[3][20] так чтобы в него можно было всунуть по 3 значения на 20 дней… И не надо менять размерность. Ведь именно об этом ты сказал
Смешно.
 
Последнее редактирование:

vladradon

Программист
Ты сделай массив K[3][20] так чтобы в него можно было всунуть по 3 значения на 20 дней…
А в чем проблема? Что K[3][20], что K[20][3] - одно и то же 60 ячеек в сумме и по-барабану какой индекс стоит первым и какой вторым, если количество дней менять не нужно.
 

star603

Новичок форума
На самом деле без разницы как юзать измерения пока не понадобится менять размер. А это скорее всего понадобится если вместо 20 дней захочется задавать сколько. И вот тогда и выяснится что K[20][3] надо делать.
Для меня имеет значения только как юзать массив.
Ведь K[3][20] то есть 3 показателя за 20 дней
******************** MA значения за 20 дней
******************** SAR значения за 20 дней
********************RSI значения за 20 дней
А K[20][3] 20 показателей за 3 дня

*** MA значения за 3 дня
***SAR значения за 3 дня
***RSI значения за 3 дня
***
***
***
***
***
и так далее далее
 

star603

Новичок форума
А в чем проблема? Что K[3][20], что K[20][3] - одно и то же 60 ячеек в сумме и по-барабану какой индекс стоит первым и какой вторым, если количество дней менять не нужно.
Не переживай ты как надо сделал для меня.) Спасибо.
 
Верх