El indicador del sistema Sultonov - página 25

 
Maxim Kuznetsov:

Los operadores trabajan con Excel. Es como el "papel tornasol". Si no está familiarizado con las hojas de cálculo, ¿qué clase de comerciante es? ¿Cómo calcula los presupuestos y el dinero?

Y si el programador no es capaz de traducir una hoja de excel en un programa MQL, igual debería practicar :-)

Yusuf está tratando de exponer sus puntos (incluso con cuyo razonamiento no estoy de acuerdo en principio), pero tú estás haciendo algo aún peor: en lugar de una ayuda básica le estás obligando a aprender cosas innecesarias. Y al mismo tiempo, todo el mundo sabe que no se va a poner a programar y no va a trasladar sus fórmulas a mql. Te burlas y le quitas meses o incluso años a una persona.

Hm, sí, no puedo imaginar cómo escribir directamente a una hoja de Excel - que está sentado por mí mismo y desenredar la maraña - las tablas son muy intrincadamente entrelazados - por lo que tendrá que pasar tiempo para averiguarlo, y para evaluar el trabajo debe también de acuerdo con TOR.

Además, de nuevo desde mi experiencia, cuando reescribí el algoritmo desde Excel, encontré errores lógicos, porque adicionalmente pensé en lo que estaba escribiendo - a menudo es conveniente fantasear en Excel.

Y, además, recomiendo adjuntar el propio archivo.

Así que considero que sus argumentos sobre la necesidad de forzar el aprendizaje son infundados y sin fundamento.

Si tienes las habilidades, ¿por qué no recoger y ayudar a la persona leyendo telepáticamente el TOR de su cabeza a distancia?

 

Estoy cansado de resolver rompecabezas. Haz como si hubiera hecho una captura de pantalla en la primera página con explicaciones https://www.mql5.com/ru/forum/305148. Para que la información sea más digerible, haz el cálculo sobre una historia poco profunda, cuanto menos mejor (será mucho más fácil entenderte). Si quieres ayuda, comprime tus rollos de texto, nadie leerá un texto grande, y mucho menos lo entenderá.

Расчет коэффициентов
Расчет коэффициентов
  • 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 и так далее...
 

Los primeros valores de la serie desplazada son los siguientes:

1.1376 1.1377 1.1375 1.1361 1.1358

como lo tienes tú:

x1 x2 x3 x4 y

1.1376 1.1376 1.1377 1.1375 1.1361

¿Entonces x1 y x2 son la misma fila? ¿Qué pasó con el CD5, que comienza en1,1358?
 
Yousufkhodja Sultonov:

Corregido

Haz una captura de pantalla de toda la tabla calculada.

 
forexman77:

Haz una captura de pantalla de toda la tabla calculada.

Preferiblemente un zip del archivo Excel y hacer preguntas sobre el mismo. De lo contrario, esto será eterno. Acabarás torturando a Yusuf. Bueno, no puede hacer eso.
 
Yuriy Asaulenko:
Será mejor que comprimas el archivo excel y que preguntes por él. De lo contrario, esto será eterno. Acabarás torturando a Yusuf. Bueno, no puede hacer eso.

Bien persuadido, publique una captura de pantalla usted mismo, contribuya al desarrollo. Le echaré un vistazo mañana.

Qué tipo de respuesta será la misma que un saludo. Si no tiene información clara, no obtendrá ningún resultado.

 
forexman77:

Haz una captura de pantalla de toda la tabla calculada.

No te preocupes, el programa ya está totalmente arreglado.

 
Yuriy Asaulenko:
Es mejor comprimir el archivo Excel y hacer preguntas al respecto. De lo contrario, esto será eterno. Acabarás torturando a Yusuf. Bueno, no puede hacer eso.

Yuri, ¿también sigues en línea?

 
Yousufkhodja Sultonov:

Yuri, ¿también sigues en línea?

Sí, esporádicamente, pero sigo convencido de que no es nada, y los estallidos de la nada son la inestabilidad del propio sistema.
 
Yousufkhodja Sultonov:

Así que aquí está el indicador ficticio.

Este maniquí es un simple indicador MA por ejemplo, pero está adaptado a su caso con algunas simplificaciones que no son óptimas en términos de rendimiento, pero menos estresantes para el aprendizaje.

Para escribir su indicador, basta con escribir el código de cálculo en el cuerpo de la función

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

en este momento hay un cálculo de MA con periodo 13 en forma de 3 líneas.

¿Por qué tomé 13 por defecto? Porque tú mismo has dicho que utilizas 13 valores de precios para el cálculo en este momento.

Estos 13 valores se encuentran en una matriz X (X[0] a X[12])

Simplemente se realiza el cálculo de estos 13 valores en el cuerpo de esta función y se escribe el valor en el buffer del indicador SoltonovBuffer[pos]. El indicador completo se formará automáticamente.

//+------------------------------------------------------------------+
//|                                                     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 цен
  }
//+------------------------------------------------------------------+

Desde MT5 pulsas F4 y llegas a ME (MetaEditor). Aquí se crea un indicador personalizado (Ctrl+N), se especifica un nombre durante la creación, por ejemplo"Soltunov" (el mío es el predeterminado). Cuando se genere el código, sustituye todo este código por mi dummy.

Y empezar a dominar la programación.

Le aconsejo que preajuste el máximo de barras en la ventana en la configuración de MT5 a no muy grande (5000 es bastante).

No es necesario leer ningún libro para dominar el lenguaje MQL5. Basta con utilizar la Ayuda pulsando la tecla F1, haciendo primero clic en la función o palabra de interés. Utilice también la función de búsqueda en la Ayuda.

vea el gif animado (haga clic en la imagen):


También recomiendo encarecidamente dominar inmediatamente el depurador incorporado de ME con la configuración del punto de interrupción para recorrer el programa con la capacidad de observar los cambios de las variables.

Vea también el gif animado.


¡Buena suerte, Yusuf!
Si tienes alguna pregunta, si el método de la regla general no te sirve, no dudes en preguntar.

Creo que todo el mundo te ayudará.

Archivos adjuntos:
Soltonov.mq5  8 kb