Erreurs, bugs, questions - page 1030

 
MetaDriver:

Votre dossier est traité avec une petite fiche.

Le mien est pire. (Au fait, votre affaire sans Slip fonctionnait, elle s'est arrêtée il y a quelques semaines).

Le même schéma a cessé de fonctionner sans glissade sur d'autres cartes (non actuelles) :

Code d'ici : https://www.mql5.com/ru/code/224

Les hiboux installés, voir.

Sur l'actuel, je lance le standard. AMA sur le graphique, poke recalculé (à Sleep de 0 à 2350) - je tombe à M1 et ne reviens jamais. Après quelques secondes. AMA apparaît, et c'est tout.

J'essaie d'utiliser des drapeaux (dois-je stocker deux drapeaux, current et m1 ? Si j'ai déjà utilisé current (drapeau) et que maintenant j'utilise m1 (drapeau 2), alors...).

mais j'en doute... Les ticks de lundi viendront avant que je ne revienne à l'actuel :)

upd oui, j'ai une centaine d'objets sur le tableau, et plus AMA, c'est-à-dire que c'est tellement lourd.

 
MetaDriver:

"Nous devons le faire, Fedya. Nous devons le faire."

(c) Shurik.

--

Une telle erreur se produit, par exemple, si la mémoire pour le tampon dynamique n'est pas allouée (dans ce cas, sous ActualBuffer). Ce fragment de code n'est pas clair.

Ici.

Et comment allouer de la mémoire pour le tampon dynamique ?

Je suppose que lorsque je le saurai, la question disparaîtra.

Voici tout le code

#include <TimeSeries.mqh>

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Actual
#property  indicator_label1  "Actual"
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrLime
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- plot Consensus
#property  indicator_label2  "Consensus"
#property  indicator_type2   DRAW_LINE
#property  indicator_color2  clrPeachPuff
#property  indicator_style2  STYLE_SOLID
#property  indicator_width2  1
//--- plot Previous
#property  indicator_label3  "Previous"
#property  indicator_type3   DRAW_LINE
#property  indicator_color3  clrLightCyan
#property  indicator_style3  STYLE_SOLID
#property  indicator_width3  1
//--- indicator buffers
double         ActualBuffer[];
double         ConsensusBuffer[];
double         PreviousBuffer[];
//--- indicator vars
string sDatetime;
string sActual;
string sConsensus;
string sPrevious;
int file_handle;
int barshift;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ActualBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ConsensusBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,PreviousBuffer,INDICATOR_DATA);
   file_handle = FileOpen("CSV - макроэкономика и госкорпстат/Existing Home Sales Change.csv",FILE_READ|FILE_CSV|FILE_ANSI,',');
   while(!FileIsEnding(file_handle))
        {
         sDatetime  = FileReadString(file_handle);
         sActual    = FileReadString(file_handle);
         sConsensus = FileReadString(file_handle);
         sPrevious  = FileReadString(file_handle);
         
         barshift = iBarShift(Symbol(), Period(), datetime(formatdatetime(sDatetime)), false);
         if(StringToDouble(formatstring(sActual)) > 0 && StringToDouble(formatstring(sActual)) < 10000) ActualBuffer[barshift] = StringToDouble(formatstring(sActual));
         Print(formatdatetime(sDatetime));
         Print("iBarShift = ", barshift, " Datetime = ", formatstring(sDatetime), " sActual = ", sActual, " sConsensus = ", sConsensus, " sPrevious = ", sPrevious);
        }
    
//---
   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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+
//--- Функции форматирования
string formatstring(string strparam)
   {
      string result = StringSubstr(strparam,1, StringLen(strparam) - 2);
      return(result);
   }
string formatdatetime(string strparam)
   {
      string result = StringSubstr(strparam, 1, 4) + "." + StringSubstr(strparam, 5, 2) + "." + StringSubstr(strparam, 7, 11);
      
      return(result);
   }
 
Al_key:

Ici.

Comment allouer de la mémoire pour un tampon dynamique ?

Je suppose qu'une fois que je l'aurai découvert, la question disparaîtra.

Voici tout le code

Ps.

J'ai lu sur Array Resize là...voici une copie

"Après la liaison, un tableau dynamique buffer[]sera indexé comme dans les tableaux réguliers, même si le tableau à lier est prédéfini pour être indexé comme dans les timeseries. Si vous souhaitez modifier l'ordre d'accès aux éléments du tableau d'indicateurs, vous devez appliquer la fonction ArraySetAsSeries() après avoir lié le tableau à l'aide de la fonction SetIndexBuffer(). Il faut garder à l'esprit que les tableaux dynamiques qui ont été affectés comme tampons d'indicateurs par la fonction SetIndexBuffer() ne doivent pas être redimensionnés. Pour les tampons indicateurs, toutes les opérations de redimensionnement sont effectuées par le sous-système d'exécution du terminal."

Je suis confus.

 
Silent:
Enregistrer le profil configuré par défaut Fichier - Profils - Par défaut
Un peu par défaut, toujours pas de données à charger. C'est la première fois en quelques heures que tout se passe bien.
 
Al_key:

Ici.

Comment allouer de la mémoire pour un tampon dynamique ?

Je suppose qu'une fois que je l'aurai découvert, la question disparaîtra.

Voici le code complet

INDICATOR_DATA est la donnée à dessiner. Ce tampon (taille) est contrôlé par le terminal (par rates_total, si je comprends bien).

Ajouter des tampons pour les calculs intermédiaires (INDICATOR_CALCULATIONS). Pour eux, définissez la taille.

PS J'ai #include <TimeSeries.mqh> ne peut pas ouvrir pour une raison quelconque, ne compile pas.

La mise à jour de lundi doit attendre, quelque chose ne va pas ici.

 
Silent:

INDICATOR_DATA est la donnée à dessiner. Ce tampon (taille) est contrôlé par le terminal (par rates_total, si je comprends bien).

Ajouter des tampons pour les calculs intermédiaires (INDICATOR_CALCULATIONS). Pour eux, définissez la taille.

PS J'ai #include <TimeSeries.mqh> ne peut pas ouvrir pour une raison quelconque, ne compile pas.

La mise à jour de lundi doit attendre, quelque chose ne va pas ici.

J'ai déjà essayé de changer, toujours la même erreur. J'essaierai au moins de mettre les valeurs dans un tableau régulier, peut-être que quelque chose fonctionnera.
 
Al_key:
J'ai essayé de le changer, mais j'ai toujours la même erreur. J'essaierai au moins de mettre les valeurs dans un tableau régulier, peut-être que quelque chose fonctionnera.

En voici une simple qui fonctionne. Dans INDICATOR_DATA, nous écrivons à partir de INDICATOR_CALCULATIONS.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
//--- plot Label1
#property  indicator_label1  "Label1"
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrOrangeRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- input parameters
input string   s="EURUSD";
input ENUM_TIMEFRAMES      tf;          // D1
input int      countBars=100;          // count
//--- put parameters
int   copied,i;
//--- indicator buffers
double         Label1Buffer[];
//--- buffers
double         p_Symbol[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
   SetIndexBuffer(1,p_Symbol,INDICATOR_CALCULATIONS);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   if(prev_calculated==0)
     {
      ArrayInitialize(Label1Buffer,EMPTY_VALUE);
      ArrayInitialize(p_Symbol,EMPTY_VALUE);
      ArraySetAsSeries(Label1Buffer,true);
      ArraySetAsSeries(p_Symbol,true);
      ArraySetAsSeries(price,true);
     };
   ArrayCopy(p_Symbol,price,0,0,countBars);
   if(_LastError!=0) {Print(_LastError); return(prev_calculated);};
   if(_LastError==0)
     {
      for(i=countBars;i>0;i--)
        {
         Label1Buffer[i]=p_Symbol[i];
         Print("limitBars i = "+IntegerToString(i));
        };
     };
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
Silent:

INDICATOR_DATA est la donnée à dessiner. Ce tampon (taille) est contrôlé par le terminal (par rates_total, si je comprends bien).

Ajouter des tampons pour les calculs intermédiaires (INDICATOR_CALCULATIONS). Pour eux, définissez la taille.

PS J'ai #include <TimeSeries.mqh> ne peut pas ouvrir pour une raison quelconque, ne compile pas.

La mise à jour de lundi doit attendre, quelque chose ne va pas ici.

Prenez ici : https://www.mql5.com/ru/code/1008

Je viens de le trouver, c'est pourquoi je n'ai pas encore senti le code. Et ça ne marchera pas encore - le public ici me pousse à faire des achats.

Je pense que tout fonctionnera, si le code problématique est déplacé de OnInit() vers OnCalculate(). Je connais depuis longtemps la caractéristique de Five - aucun code de OnInit ne fonctionne correctement. Il est probable que la véritable autodistribution des tampons enregistrés par SetIndexBuffer() ne se termine qu'après la sortie de OnInit(), car elle doit se produire en arrière-plan (c'est automatique, non ?).

TimeSeries - Библиотека функций для работы с таймсериями
TimeSeries - Библиотека функций для работы с таймсериями
  • votes : 12
  • 2012.08.24
  • Andrey Khatimlianskii
  • www.mql5.com
Библиотека функций для работы с таймсериями: iBars, iTime, iOpen, iHigh, iLow, iClose, iVolume, iHighest, iLowest, iBarshift. Для всех функций доступен краткий вариант вызова (с символом и периодом текущего графика).
 

Je remarque que seuls 3 des 8 agents peuvent fonctionner en même temps lorsqu'ils reçoivent des tâches du nuage.
Cependant, si vous exécutez votre test en parallèle, les autres agents sont également activés.

Est-ce que c'est comme ça que ça doit être ?

 
fyords:

Je remarque que seuls 3 des 8 agents peuvent fonctionner en même temps lorsqu'ils reçoivent des tâches depuis le cloud.
Cependant, si vous exécutez votre test en parallèle, les autres agents sont également activés.

Est-ce que c'est comme ça que ça doit être ?

J'avais les six jusqu'à ce que j'en désactive un il y a quelques jours parce que le CPU surchauffait (la pièce est chaude). Maintenant cinq fonctionnent, le vol est normal.
Raison: