Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1434

 
Fast235:

c'est pour moi,

il y aura un délai supplémentaire jusqu'à ce que tous les points soient placés sur le graphique pendant la compilation.

Si nécessaire (par exemple, en recompilant), créez une variable terminale expetname.deinitreason.ChartId() dans OnDeinit et donnez-lui un drapeau temporaire, mettez-y le code de raison. Il en va de même pour les données connexes (vous pouvez en avoir besoin).

dans OnInit - voir si la variable existe, agir sur sa valeur.

et supprimer cette variable dans tous les cas...

---

Remarque : les terminaisons anormales sont prises en compte de la même manière, mais à l'envers :-) Dans OnInit, une variable est vérifiée et créée, et dans OnDeinit, elle est supprimée. Si une erreur critique s'est produite et que EA/terminal s'est simplement écrasé, la variable sera conservée.

 
Maxim Kuznetsov:

Si nécessaire (par exemple, en recompilant), créez une variable terminale expetname.deinitreason.ChartId() dans OnDeinit et donnez-lui l'indicateur temporary, placez-y le code de raison. Il en va de même pour les données connexes (vous pouvez en avoir besoin).

dans OnInit - voir si la variable existe, agir sur sa valeur.

et supprimer cette variable dans tous les cas...

---

indice - les terminaisons anormales sont prises en compte de la même manière mais en sens inverse :-) Dans OnInit, une variable est vérifiée et créée, et dans OnDeinit, elle est supprimée. Si une erreur critique s'est produite et que EA/terminal s'est simplement écrasé, la variable sera conservée.

Je suis familier avec les fichiers et les variables globales, ce n'est pas la peine de créer ceci, peut-être que les développeurs supprimeront de la compilation - 0, ou même ajouteront un état que le terminal a démarré, par exemple, je peux ajouter un chargeur d'historique pour le multisymbole au lieu de l'input

 

Bonjour à tous ! L'idée était de faire des bougies, en volume, de couleurs différentes selon le sens des bougies (haut ou bas). Cependant, la dernière bougie obtient des couleurs différentes en raison des changements de direction de la bougie au fil du temps. Et au fil du temps, toutes les bougies prennent des couleurs différentes. La question est de savoir comment changer la couleur de la dernière bougie et ne pas changer les autres. Ou peut-être une autre idée.



//+------------------------------------------------------------------+
//|                                      VSA_Volume_Color            |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 3

//////////////
datetime PrevTime = 0;
double iVolume_UP[];
double iVolume_DWN[];
double iVolume_NULL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(5);
//--- indicator buffers mapping
   SetIndexBuffer(0, iVolume_UP);
   SetIndexBuffer(1, iVolume_DWN);
   SetIndexBuffer(2, iVolume_NULL);
//---
   SetIndexStyle(0, DRAW_HISTOGRAM,EMPTY,2,clrGreen);
   SetIndexStyle(1, DRAW_HISTOGRAM,EMPTY,2,clrWhite);
   SetIndexStyle(2, DRAW_HISTOGRAM,EMPTY,2,clrRed);
//---
   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[])
  {
//---
   int i = 0, counted_bars = IndicatorCounted();
   i = Bars - counted_bars - 1;
   if(counted_bars < 0)
      return(-1);
//---
   if(counted_bars > 0)
      counted_bars--;
//--- return value of prev_calculated for next call
///////////
   while(i >= 0)
     {
      if(Close[i] > Open[i])
         iVolume_UP[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] < Open[i])
         iVolume_DWN[i] =  iVolume(NULL, 0, i) * 1.0;
      if(Close[i] == Open[i])
         iVolume_NULL[i] =  iVolume(NULL, 0, i) * 1.0;
      i--;
     }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   return(rates_total);
  }
//+------------------------------------------------------------------+
Merci !
 

Remise à zéro des tampons inutiles

iVolume_UP[i]=EMPTY_VALUE;
 

lien vers un autre sujet -SERIES_LASTBAR_DATE

l'imprimante a montré que le signal a été manqué car - le signal provenait de l'indicateur par le biais de l'événement personnalisé, il vérifiait la présence d'une nouvelle barre en utilisant SERIES_LASTBAR_DATE et

dans l'impression des données de la barre précédente, pas de nouvelles ..., environ 50 métiers au total de 7 caractères, glisse tels, ce que vous pouvez regarder, des idées ? ping 150.

Processeur Ryzen 3700x 16 threads

----

si j'utilise un schéma multi-symboles similaire, je l'ai essayé sur 2 ou 3 terminaux en temps réel, sur M1 par exemple, j'attends de quelques heures à une demi-journée pour un saut comme celui-ci, avec 40-50 transactions par jour.

Le processeur ne charge que quelques % du robot, il dort presque.

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...
 

une transaction à 30-50, ok, ça peut clôturer en noir et en blanc, mais...

J'ai un système pour calculer les profits totaux, ce qui est assez délicat, et cela devrait impliquer cette transaction maintenant, pas au prochain signal.

vous pouvez creuser plus profondément pendant 5 ans.

si le modèle d'événement est tordu, veuillez le faire savoir aux développeurs afin qu'il puisse être écarté, à en juger par les premiers messages sur l'espionnage, où différentes variantes ont été testées, il y avait aussi des dispersions et des ratés ?
 
Aleksei Stepanenko:

Remise à zéro des tampons inutiles

Super. Tout fonctionne). Merci !
 
Les gars, veuillez me conseiller, je suis confus avec l'indexation dans les tampons des indicateurs mql5.
Si la fonctionArraySetAsSeries(Buffer, true) est appliquée
, seule l'indexation est étendue ? Ou les valeurs de la mémoire tampon sont-elles également étendues ?
 
Roman:
Les gars, veuillez me conseiller, je suis confus avec l'indexation dans les tampons d'indicateurs mql5.
Si la fonctionArraySetAsSeries(Buffer, true) est appliquée
, seule l'indexation est étendue ? Ou les valeurs de la mémoire tampon sont-elles également étendues ?
Lorsqu'elle est vraie, la barre zéro du tampon de l'indicateur est la plus à droite sur le graphique. Si elle est fausse, il s'agit de la barre la plus à gauche.
Rien d'autre.
 
Artyom Trishkin:
Si vrai, la barre de zéro de l'indicateur tampon est la plus à droite sur le graphique. Au faux, il est le plus à gauche.
C'est tout ce qu'il y a à faire.

Merci.
Artem, s'il te plaît, dis-moi encore une chose.
La fonction

ChartSetInteger(ChartID(), CHART_SHOW, false)
Masque la fenêtre principale du graphique, et les sous-fenêtres de l'indicateur installé.
Comment puis-je masquer uniquement la fenêtre principale du graphique ? En même temps, la sous-fenêtre de l'indicateur doit rester visible.