Erreurs, bugs, questions - page 2050

 
Kirill Belousov:

Y a-t-il un serveur de démonstration MT4 et MT5 qui fonctionne avec des cotations le week-end ?

Le serveur de démonstration est un serveur de démonstration parce que le trading ne se fait pas avec de l'argent réel mais avec de la "démo" :), et tout le reste (ainsi que le temps des cotations) est presque comme dans la vie réelle.

 
Kirill Belousov:

Pouvez-vous me dire s'il existe un serveur de démonstration MT4 et MT5 qui fonctionne avec les cotations du week-end ?

Il n'y a pas de devis en fin de semaine.
Pouvez-vous imiter l'arrivée des citations.
 

Prenez MT5 hors ligne (proxy gauche, par exemple) et exécutez un EA comme ceci

void OnInit()
{
  Print("Hello World!");
}

L'impression dans le journal sera seulement cinq secondes après le début du conseiller - BAG.


Exécuter cet indicateur hors ligne

#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots 0

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(rates_total);
}

void OnInit()
{
  const datetime LastBar = (datetime)SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_LASTBAR_DATE);

  Print(LastBar);
  Print(Bars(_Symbol, PERIOD_CURRENT, LastBar - 24 * 3600, LastBar)); // 0
  Print(GetLastError());                                              // ERR_HISTORY_NOT_FOUND
}

On a un bummer dans Bars. La même chose se produira avec des appels répétés, par exemple, dans OnTimer. Mais si vous appelez Bars dans Expert Advisor, tout fonctionnera. Dans le cas de l'indicateur, il s'agit clairement d'un bug.

2017.10.22 23:35:40.678 Terminal        Alpari Limited MT5 x64 build 1653 started (Alpari Limited)
2017.10.22 23:35:40.678 Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700 K  @ 3.50 GHz, RAM: 11310 / 16301 Mb, HDD: 827 / 30000 Mb, GMT+02:00
L'explication dans la documentation n'explique rien.

Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не синхронизированы с торговым сервером, то функция вернет нулевое значение.

L'envoi de la demande de rafraîchissement des séries temporelles avec la même période que l'indicateur qui demande le rafraîchissement est extrêmement indésirable. Le caractère indésirable de la demande de la même période symbole que celle de l'indicateur est dû au fait que la mise à jour des données historiques est effectuée dans le même thread qui exécute l'indicateur. Il y a donc une forte probabilité de conflit.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Caractéristiques du langage mql5, subtilités et astuces

fxsaber, 2017.10.17 15:07

Les tableaux descendants ne peuvent pas être convertis en tableaux ancestraux. Élément par élément, par contre, oui. Il y a une limitation d'ArrayCopy dans ce domaine, qu'il serait bon de supprimer.

Il y a un problème de langage dans cette situation

struct RATES : public MqlRates {};

void f1( RATES& ) {}

void f2( MqlRates& ) {}
void f2( MqlRates &[] ) {}

void OnStart()

{
  MqlRates a = {0};  
  
  f1(a); // 'a' - parameter conversion not allowed
  
  RATES b[1] = {0};
  
  b[0] = a; // no problem
  a = b[0]; // no problem
  
  f2(b[0]); // no problem
  f2(b);    // 'f2' - no one of the overloads can be applied to the function call
}


Les cordes jaunes et rouges se contredisent. Si l'héritage d'une structure est en cours et que le constructeur, l'opérateur d'affectation et les champs ne sont pas modifiés, la transformation du descendant en parent et vice versa doit se produire sans problème. Et les lignes jaunes le confirment. Cependant, dans certaines situations, il y a des ratés - des rouges.
 
fxsaber:

Il y a un problème de langage dans cette situation

Mon compilateur a donné


 
Kirill Belousov:

Mon compilateur a donné

Oui, j'ai corrigé le message.
 
   int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE);
   int cur_tim=(int)TimeCurrent();

   RefreshRates();
   if(FileGetInteger(aFileName,FILE_EXISTS)==1)
      if(tim>0)
         if((cur_tim-tim)>120) 
           {
            Print(" ttt   "+TimeToString(cur_tim)+"  "+TimeToString(tim));
            FileDelete(aFileName);
            Print("Обновление файла ");
            return false;
           }

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE) ; ne met pas à jour l'heure.

Je crée un fichier et je veux le supprimer après 60 secondes, le fichier est supprimé etint tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE) ; renvoie l'heure du premier fichier après la compilation. Je vois dans la fenêtre de Windows que le fichier est supprimé et créé avec une nouvelle heure.

RefreshRates n'aide pas...

 

int tim=(int)FileGetInteger(aFileName,FILE_MODIFY_DATE) ;

Fonctionne correctement

 
Vladimir Pastushak:

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE) ; ne met pas à jour l'heure.

Je crée un fichier et je veux le supprimer après 60 secondes, le fichier est supprimé etint tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE) ; renvoie l'heure du premier fichier après la compilation. Je vois dans la fenêtre Windows que le fichier est supprimé et est créé avec la nouvelle heure.

RefreshRates n'aide pas...

Où se trouve le code de création du fichier ?

Fermez-vous le fichier avant de le supprimer ?

Quel est le rapport avec RefreshRates ?

On parle d'un cinq ou d'un quatre ?

 
Slava:

Où se trouve le code de création du fichier ?

Fermez-vous le fichier avant de le supprimer ?

Quel est le rapport avec RefreshRates ?

On parle d'un cinq ou d'un quatre ?

Un dossier ouvert peut-il être supprimé ?

Raison: