L'indicateur du système de Sultonov - page 25

 
Maxim Kuznetsov:

Les traders travaillent avec Excel. C'est comme un "papier de tournesol". S'il ne connaît pas les feuilles de calcul, quel genre de trader est-il ? Comment calcule-t-il les budgets et l'argent ?

Et si le programmeur n'est pas capable de traduire une feuille Excel en un programme MQL, il doit quand même s'entraîner :-)

Yusuf essaie de faire valoir ses arguments (même avec le raisonnement dont je suis en désaccord de principe), mais vous faites une chose encore pire - au lieu d'une aide de base, vous le forcez à apprendre des choses inutiles. Et en même temps, tout le monde sait parfaitement qu'il ne se mettra pas à programmer et ne transférera pas ses formules vers mql. Vous vous moquez et vous prenez des mois, voire des années, à une personne.

Hm, oui, je ne peux pas imaginer comment écrire directement dans une feuille excel - c'est assis par moi-même et démêler l'écheveau - les tableaux sont très étroitement entrelacés - donc il faudra passer du temps pour le comprendre, et pour évaluer le travail devrait également selon le RPT.

De plus, toujours d'après mon expérience, lorsque j'ai réécrit l'algorithme à partir d'Excel, j'ai trouvé des erreurs logiques, car j'ai en plus réfléchi à ce que j'écrivais - c'est souvent pratique de fantasmer dans Excel.

Et d'ailleurs, je recommande de joindre le fichier lui-même.

Je considère donc que vos arguments sur le fait de forcer l'apprentissage inutile sont sans fondement et non fondés.

Si vous en avez les compétences, pourquoi ne pas décrocher et aider la personne en lisant par télépathie le RPT dans sa tête à distance ?

 

Je suis fatigué de résoudre des énigmes. Faites comme si j'avais fait une capture d'écran sur la première page avec des explications https://www.mql5.com/ru/forum/305148. Pour rendre l'information plus digeste, faites le calcul sur une histoire peu profonde, le moins possible (il sera beaucoup plus facile de vous comprendre). Si vous voulez de l'aide, compressez vos rouleaux de texte, personne ne lira un gros texte, et encore moins ne le comprendra.

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

Les premières valeurs de la série décalée sont les suivantes :

1.1376 1.1377 1.1375 1.1361 1.1358

comme vous l'avez :

x1 x2 x3 x4 y

1.1376 1.1376 1.1377 1.1375 1.1361

Donc x1 et x2 sont la même ligne ? Qu'est-il arrivé au CD5, qui commence à1,1358 ?
 
Yousufkhodja Sultonov:

Corrigé

Faites une capture d'écran de l'ensemble du tableau calculé.

 
forexman77:

Faites une capture d'écran de l'ensemble du tableau calculé.

De préférence un zip du fichier Excel et posez des questions à son sujet. Sinon, cela va durer éternellement. Vous allez finir par torturer Yusuf. Eh bien, il ne peut pas faire ça.
 
Yuriy Asaulenko:
Vous feriez mieux de zipper le fichier excel et de poser des questions à son sujet. Sinon, cela va durer éternellement. Vous allez finir par torturer Yusuf. Eh bien, il ne peut pas faire ça.

Bien convaincu, postez vous-même une capture d'écran, contribuez au développement. Je jetterai un coup d'oeil demain.

Le type de réponse que vous obtiendrez sera le même que celui d'une salutation. Si vous n'avez pas d'informations claires, vous n'obtiendrez aucun résultat.

 
forexman77:

Faites une capture d'écran de l'ensemble du tableau calculé.

Ne vous inquiétez pas, le programme est maintenant entièrement corrigé.

 
Yuriy Asaulenko:
Il est préférable de zipper le fichier Excel et de poser des questions à son sujet. Sinon, cela va durer éternellement. Vous allez finir par torturer Yusuf. Eh bien, il ne peut pas faire ça.

Yuri, vous suivez aussi en ligne ?

 
Yousufkhodja Sultonov:

Yuri, vous suivez aussi en ligne ?

Oui, sporadiquement, mais je reste convaincu qu'il s'agit d'un mannequin, et que les explosions de rien du tout sont l'instabilité du système lui-même.
 
Yousufkhodja Sultonov:

Voici donc l'indicateur fictif.

Ce mannequin est un simple indicateur MA par exemple, mais il est adapté à votre cas avec quelques simplifications qui ne sont pas optimales en termes de performance, mais moins stressantes pour l'apprentissage.

Pour écrire votre indicateur, il suffit d'écrire le code de calcul dans le corps de la fonction.

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

en ce moment il y a un calcul de MA avec la période 13 sous la forme de 3 lignes.

Pourquoi ai-je pris le 13 par défaut ? Parce que vous avez dit vous-même que vous utilisez 13 valeurs de prix pour le calcul en ce moment.

Ces 13 valeurs sont situées dans un tableau X (X[0] à X[12])

Il suffit d'effectuer le calcul de ces 13 valeurs dans le corps de cette fonction et d'écrire la valeur dans le tampon indicateur SoltonovBuffer[pos]. L'ensemble de l'indicateur sera formé automatiquement.

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

Depuis MT5, appuyez sur F4 et accédez à ME (MetaEditor). Ici vous créez un indicateur personnalisé (Ctrl+N), spécifiez un nom pendant la création, par exemple"Soltunov" (le mien est celui par défaut). Quand le code est généré, remplacez tout ce code par le mien.

Et commencez à maîtriser la programmation.

Je vous conseille de paramétrer la barre maximale de la fenêtre dans les paramètres de MT5 pour qu'elle ne soit pas très grande (5000 est suffisant).

Vous n'avez pas besoin de lire de livres pour maîtriser le langage MQL5. Il suffit d'utiliser l'aide en appuyant sur la touche F1, en cliquant d'abord sur la fonction ou le mot qui vous intéresse. Utilisez également la fonction de recherche de l'aide.

voir le gif animé (cliquez sur l'image) :


Je recommande aussi vivement de maîtriser immédiatement le débogueur intégré de ME avec des paramètres de points d'interruption pour avancer dans le programme avec la possibilité d'observer les changements de variables.

Voir aussi le gif animé.


Bonne chance, Yusuf !
Si vous avez des questions, si la méthode des règles empiriques ne vous aide pas, n'hésitez pas à demander.

Je pense que le monde entier va vous aider.

Dossiers :
Soltonov.mq5  8 kb