Questions des débutants MQL5 MT5 MetaTrader 5 - page 1240

 
Comment augmenter le nombre de paramètres optimisables dans le testeur ? Peut-être existe-t-il des moyens virtuels dans MQL, peut-être dans Python ou ailleurs ? Donnez-moi une direction, s'il vous plaît...
 
Vladimir M.:
Comment augmenter le nombre de paramètres optimisés dans le testeur ? Peut-être existe-t-il des moyens virtuels dans MQL, peut-être dans Python ou ailleurs ? Donnez-moi quelques conseils, s'il vous plaît...

OnTester()

 
Vladimir Karputov:

Prenez un exemple dans la référence ! Combien de fois ? N'utilisez pas vos propres constructions inventées si vous ne comprenez pas grand-chose à leur signification. Utilisez des constructions standard - comprenez comment elles fonctionnent. Après cela, jetez vos propres constructions à la poubelle.


Et utilisez 'MQL Wizard' pour générer un modèle.

Code

et le résultat


Vladimir, j'ai l'impression qu'ils essaient de parler entre un muet et un sourd.

  1. J'ai utilisé le modèle'MQL Wizard'.
  2. Pourquoi vous embêter avec mes constructions ? Ils ne sont pas pires que les vôtres, surtout pour mes besoins !

if(rates_total - prev_calculated > 1)

Lorsque je lance l'indicateur rates_total = ХХХ (disons ХХХ = 1000), prev_calculated = 0, rates_total - prev_calculated (1000 - 0 = 1000) supérieur à 1 ! La condition a fonctionné !

Suivant

if(prev_calculated == 0)

Lorsque vous lancez l'indicateur, prev_calculated = 0. La condition a fonctionné !

Et ensuite, explique-moi en quoi le tien diffère

      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];

de la mienne

            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];

étant donné que monArraySetAsSeries est réglé sur true ? ??

Pourquoi vos chandeliers sont rendus, mais pas les miens ?

Ça fait presque deux semaines que je te demande de m'expliquer ! Pas besoin de m'envoyer lire de la documentation ! Je le connais presque par cœur. Dis-moi juste POURQUOI ? Soit tu expliques, soit tu me dis que tu ne sais pas, soit tu me dis que tu ne veux pas répondre !

Oh merde, tu as oublié le titre de ce fil ?

 
Сергей Таболин:


Que pensez-vous de ça ? Tous les index sont affectés à un index zéro dans les tampons.

            barsBuffer1[i] = newCandles_Open[i];
            barsBuffer2[i] = newCandles_High[i];
            barsBuffer3[i] = newCandles_Low[i];
            barsBuffer4[i] = newCandles_Close[i];
 
Сергей Таболин:


C'est ce que j'essaie de t'apprendre : je ne cesse de te donner des exemples, mais tu continues à te frapper la tête contre le mur.

Pour la dernière fois : jetez vos modèles à la poubelle et utilisez les modèles standard. Ensuite, vous pouvez demander : comment dessiner (par exemple, les cinq chandeliers les plus à droite sur le graphique) selon vos règles. Mais pas avant d'avoir mis à la poubelle vos constructions, pas avant d'avoir cessé d'utiliser l'incrément préfixe au lieu de l'incrément postfixe...

 
Сергей Таболин:


Exemple

//+------------------------------------------------------------------+
//|                                                 Draw Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot USDJPY
#property indicator_label1  "USDJPY"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double   Buffer1[];
double   Buffer2[];
double   Buffer3[];
double   Buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Buffer3,INDICATOR_DATA);
   SetIndexBuffer(3,Buffer4,INDICATOR_DATA);
//--- the 0 (empty) value will mot participate in drawing
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   if(rates_total<10)
      return(0);
//---
   int limit=prev_calculated-5;
   if(prev_calculated==0)
     {
      limit=rates_total-5;
      for(int j=0; j<limit; j++)
        {
         Buffer1[j]=0.0;
         Buffer2[j]=0.0;
         Buffer3[j]=0.0;
         Buffer4[j]=0.0;
        }
     }
   for(int i=limit; i<rates_total; i++)
     {
      if(i<rates_total-5)
        {
         //--- затираем всё, что левее пяти свеч (сюда попадаем при рождении нового бара)
         Buffer1[i]=0.0;
         Buffer2[i]=0.0;
         Buffer3[i]=0.0;
         Buffer4[i]=0.0;
         continue;
        }
      //--- четыре левые свечи будут перерисовываться на каждом тике - это не оптимально,
      //--- но пригодится в будущем (если для них потом подсовывать тики)
      //--- пятая свеча (она же самая правая на графике) реагирует онлайн на изменение текущих цен
      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Résultat :


Dossiers :
 
Vladimir Karputov:

C'est ce que j'essaie de t'apprendre : je ne cesse de te donner des exemples, mais tu continues à te frapper la tête contre le mur.

Pour la dernière fois : jetez vos modèles à la poubelle et utilisez les modèles standard. Ensuite, vous pouvez demander : comment dessiner (par exemple, les cinq chandeliers les plus à droite sur le graphique) selon vos règles. Mais pas avant d'avoir jeté vos constructions, pas avant d'avoir cessé d'utiliser l'incrément préfixe au lieu de l'incrément postfixe...

Qu'avez-vous contre elle ? Parce que vous ne le comprenez pas ? Par exemple, j'utilise souvent cette boucle

for(int i PositionsTotal(); i-- > 0)

et il n'y a pas de problème du tout. .........

 
Alexey Viktorov:

Qu'est-ce que tu n'aimes pas chez lui ? Parce que vous ne le comprenez pas ? Moi, par exemple, j'utilise souvent ce cycle

for(int i PositionsTotal(); i-- > 0)

et il n'y a pas de problème du tout. .........

Et si vous essayiez de le lire au lieu de vous précipiter pour répondre ? Vous utilisez (comme la plupart) postfix. Et votre exemple est postfixe. Vous ne devez pas vous précipiter pour répondre au lieu de réfléchir.

 
Youri Lazurenko:
Chargement du CPU à 100% et après quelques minutes de travail, l'ordinateur se plante (processeur phenom II x4 955 (4 cœurs, 3.2 GHz), le refroidisseur est en réserve). Après deux fois, j'ai décidé de ne plus prendre de risques. Comment faut-il l'interpréter ?

Vérifiez votre ordinateur avec Aida64 ou Linx - s'il n'y a pas de problèmes avec les tests du CPU et de la mémoire et que la température est dans les limites normales, alors vérifiez le disque dur. En général, il s'agit de l'alimentation électrique. Si elle n'a pas été changée depuis longtemps, il est probable que le problème vienne de là. Le terminal fonctionne bien sur le second phénome.

 
Bonjour chers collègues, savez-vous s'il existe un tel symbole sous la forme d'un tiret horizontal dans une boule, je n'arrive pas à le trouver :-(
Raison: