Системный индикатор Султонова - страница 25

 
Maxim Kuznetsov:

Трейдеры работают с экселем. Это как "лакмусовая бумага". Если не знаком с таблицами, то какой он к чертям трейдер ? Как он бюджеты и деньги считает ??

А если прграммист не способен переложить лист эксель в программу на MQL, то ему стоит ещё потренироваться :-)

Юсуф пытается изложить свои соображения (даже с обоснованиями которых я в принципе не согласен), но вы делаете ещё худшую вещь -  вместо элементарной помощи принуждаете учить ненужное. И при этом все отлично понимают, что программировать он не начнёт и свои формулы на mql не переложит. Просто издеваетесь и отнимаете у человека месяцы, а не то и годы.

Хм, да, я не представляю, как писать сразу по листу экселя - это сидеть самому и распутывать клубок - таблицы бывают очень хитро переплетены - поэтому надо будет потратить время, что б разобраться, да и оценить работу нужно так же по ТЗ.

Кроме того, опять же из своего опыта, когда я переписывал алгоритм из экселя, то находил логические ошибки, так как дополнительно думал о том, что пишу - часто удобно фантазировать в экселе.

И, кроме того, я рекомендую приложить сам файл.

Поэтому Ваши доводы о принуждении обучения ненужному считаю беспочвенными и необоснованными.

Если обладаете навыками, то почему не возьмете и не поможете человеку, телепатически считав ТЗ из его головы на расстоянии?

 

Мне надоело ребусы разгадывать. Сделайте, как у меня скриншот на первой странице с пояснениями https://www.mql5.com/ru/forum/305148. Чтобы информация была более удобоварима расчет делайте на не глубокой истории, чем меньше тем лучше(так будет гораздо легче понять Вас). Если хотите, чтобы Вам помогли сжимайте свои рулоны текста, большой текст никто читать не будет и тем более в него вникать.

Расчет коэффициентов
Расчет коэффициентов
  • 2019.02.28
  • www.mql5.com
Нужно погонать коэффициенты к 1-7 следующим образом: A1*k1+B1*k2=I1 A2*k1+B2*k2=I2 A3*k1+B3*k2+C3*k3=I3 A4*k1+B4*k2+C4*k3+D4*k4=I4 и так далее...
 

Первые значения сдвинутого ряда такие:

1,1376 1,1377 1,1375 1,1361 1,1358

как у Вас получилось:

x1 x2 x3 x4 y

1,1376 1,1376 1,1377 1,1375 1,1361

Получается x1 и x2 одинаковые ряды? Куда подевался тогда Ц 5 который начинается с 1,1358?
 
Yousufkhodja Sultonov:

Исправил

Сделайте скриншот всей рассчитанной таблицы.

 
forexman77:

Сделайте скриншот всей рассчитанной таблицы.

Лучше сразу zip ексель файла, и уже по нему вопросы. Иначе это будет продолжаться вечно. Вы Юсуфа в итоге замучаете. Ну, не может он этого.
 
Yuriy Asaulenko:
Лучше сразу zip ексель файла, и уже по нему вопросы. Иначе это будет продолжаться вечно. Вы Юсуфа в итоге замучаете. Ну, не может он этого.

Хорошо уговорили, сами разместите скриншот, внесите вклад в развитие. Завтра посмотрю.

Какой ответ такой будет и привет. Не будет четкой информации, не будет и результата. 

 
forexman77:

Сделайте скриншот всей рассчитанной таблицы.

Не волнуйтесь,  на данный момент программа полностью исправлена. 

 
Yuriy Asaulenko:
Лучше сразу zip ексель файла, и уже по нему вопросы. Иначе это будет продолжаться вечно. Вы Юсуфа в итоге замучаете. Ну, не может он этого.

Юрий, Вы тоже следите он-лайн?

 
Yousufkhodja Sultonov:

Юрий, Вы тоже следите он-лайн?

Да, эпизодически.  Но по прежнему уверен, что это пустышка, а всплески на пустом месте - неустойчивость самой системы.
 
Yousufkhodja Sultonov:

Итак, вот болванка индикатора.

В данной болванке реализован простой индикатор простой МА для примера, но заточенный под Ваш случай с некоторыми упрощениями, которые не оптимальны с точки зрения быстродействия, но менее стрессовые для обучения.

Вам, чтобы написать Ваш индикатор, достаточно написать расчетный код в теле функции 

void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos

в данный момент там находится расчет МА с периодом 13 в виде 3 строчек. 

Почему 13 я взял по умолчанию? Потому что Вы сами говорили, что для расчете в данный момент используете 13 значений цены.

Эти 13 значений находятся в массиве X (от X[0] до X[12])

Вам достаточно сделать расчет из этих 13 значений в теле данной функции и записать значение в индикаторный буфер SoltonovBuffer[pos]. Весь индикатор сформируется автоматически.

//+------------------------------------------------------------------+
//|                                                     Soltunov.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com/ru/users/yosuf"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Soltonov
#property indicator_label1  "Soltonov"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrMagenta
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

//--- indicator buffers
double         SoltonovBuffer[]; // это буфер линии индикатора
double         X[];              // это вспомогательный массив для значений цены
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,SoltonovBuffer,INDICATOR_DATA);  
   ArrayResize(X,13);                      // задаем размер динамического массива X - 13
   ArraySetAsSeries(X,true);               // для удобства обучения устанавливаем индексацию массива как в таймсерии
   ArraySetAsSeries(SoltonovBuffer,true);  // для удобства обучения устанавливаем индексацию массива как в таймсерии
   ArrayInitialize(SoltonovBuffer,EMPTY_VALUE); // инициализируем буфер индикатора пустыми значениями

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   int N=rates_total-prev_calculated;
   if(N>1 && rates_total>12) // если осуществляем первый вход или была задержка больше времени одного бара, выполняем инициализацию всех баров
     {
      for(int i=rates_total-1; i>11; i--)
        {
         ArrayCopy(X,price,0,i-12,13);
         Soltonov(rates_total-1-i);
        }
      ArrayCopy(X,price,0,rates_total-13,13);
      return(rates_total);
     }
   else if(N==1) ArrayCopy(X,price,0,rates_total-13,13);     // если новый бар
   else  X[0]=price[rates_total-1];                          // если новый тик без образования нового бара
   Soltonov(0);
   return(rates_total);
  }
//+------------------------------------------------------------------+
// Писать код в этой функции!
//+------------------------------------------------------------------+
void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos
                       // X[0]- значение цены бара с номером pos
                       // X[1]- значение цены бара с номером pos+1
                       // ....
                       // X[12]- значение цены бара с номером pos+12
  {
   double Sum=0;                         // создаем переменную для подсчета суммы баров
   for(int i=0;i<13;i++) Sum = Sum+X[i]; // суммируем 13 баров
   SoltonovBuffer[pos]=Sum/13;           // помещаем в значение индикаторного буфера среднее арифметическое 13 цен
  }
//+------------------------------------------------------------------+

Из МТ5 нажимаете F4 и попадаете в ME (MetaEditor). В нем создаете пользовательский индикатор (Ctrl+N), укажите имя при создании, например "Soltunov" (у меня по умолчанию). Когда сгенерируется код, то весь этот код замените моей болванкой.

И приступайте к освоению программирования.

Советую предварительно в настройках MT5 установить максимальное баров в окне не очень большое (5000 вполне достаточно).

Для освоения языка MQL5 не нужно читать никаких книг. Достаточно пользоваться справкой с помощью клавиши F1, предварительно щелкнув мышкой на интересующую функции или слово. Также пользуйтесь поиском в справке.

посмотрите анимированную гифку (необходимо нажать на картинку):  

 


Так же настоятельно рекомендую сразу же освоить встроенный в ME отладчик с установками точек прерывания для прохождения программы в пошаговое режиме с возможностью наблюдения за изменениями переменных. 

Тоже посмотрите анинированную гифку


Успехов, Юсуф!
Будут вопросы, если не поможет метод научного тыка -  не стесняйтесь - задавайте. 

Думаю поможем всем миром.

Файлы:
Soltonov.mq5  8 kb
Причина обращения: