Erreurs, bugs, questions - page 2279

 

Bon après-midi,

Pourriez-vous faire en sorte que ces appels de fonction fonctionnent dans le test de stratégie, s'il vous plaît ? Merci !

bool scaleFix=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ChartSetInteger(ChartID(),CHART_SCALEFIX,true);
   scaleFix=ChartGetInteger(ChartID(),CHART_SCALEFIX);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   if(rates_total!=prev_calculated)  
     {
      double max=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,Period)); 
      double min=iLow (_Symbol,_Period, iLowest(_Symbol,_Period,MODE_LOW, Period));
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MAX,max))
         printf("Chart fixed max is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MAX),max); 
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MIN,min))
         printf("Chart fixed min is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MIN),min); 
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
2018.09.06 12:54:55.757 2018.09.04 12:00:00   Chart fixed max is 1.171770, should be 1.162740
2018.09.06 12:54:55.758 2018.09.04 12:00:00   Chart fixed min is 1.158410, should be 1.155760
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed max is 1.171770, should be 1.162670
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed min is 1.158410, should be 1.155590
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed max is 1.171770, should be 1.162280
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed max is 1.171770, should be 1.162070
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed max is 1.171770, should be 1.162020
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.799 2018.09.04 17:00:00   Chart fixed max is 1.171770, should be 1.161980
2018.09.06 12:54:55.800 2018.09.04 17:00:00   Chart fixed min is 1.158410, should be 1.153890

 
Pour une raison quelconque, tous les ordres de marché sur le serveur InstaForex sont exécutés pendant plus d'une seconde.
2018.09.06 14:08:22.754 Trades  '9424479': instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:22.936 Trades  '9424479': accepted instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:23.944 Trades  '9424479': deal #9539619 buy 0.01 CADCHF at 0.7360 done (based on order #10514041)
2018.09.06 14:08:23.944 Trades  '9424479': order #10514041 buy 0.01 / 0.01 CADCHF at 0.7360 done in 1195.200 ms
2018.09.06 14:08:23.944 Trades  '9424479': modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': accepted modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': modify #10514041 buy 0.01 CADCHF -> sl: 0.0000, tp: 0.8350 done in 184.895 ms
2018.09.06 14:08:24.134 Trades  '9424479': instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:24.314 Trades  '9424479': accepted instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:25.323 Trades  '9424479': deal #9539620 sell 0.01 CADCHF at 0.7350 done (based on order #10514042)
2018.09.06 14:08:25.323 Trades  '9424479': order #10514042 sell 0.01 / 0.01 CADCHF at 0.7350 done in 1193.896 ms
2018.09.06 14:08:25.323 Trades  '9424479': buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.509 Trades  '9424479': accepted buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.510 Trades  '9424479': order #10514043 buy limit 0.01 / 0.01 CADCHF at market done in 181.861 ms
2018.09.06 14:08:25.510 Trades  '9424479': cancel order #10514043 buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.691 Trades  '9424479': accepted cancel order #10514043 buy 0.00  at market
2018.09.06 14:08:25.691 Trades  '9424479': cancel #10514043 buy limit 0.01 CADCHF at market done in 181.474 ms
2018.09.06 14:08:25.692 Trades  '9424479': buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.878 Trades  '9424479': accepted buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.882 Trades  '9424479': order #10514044 buy stop 0.01 / 0.01 CADCHF at market done in 190.823 ms
2018.09.06 14:08:25.883 Trades  '9424479': cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': accepted cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': cancel #10514044 buy stop 0.01 CADCHF at market done in 183.056 ms

En même temps, ceux qui sont en attente sont proches du ping. Quelle peut être la raison de cette distorsion dans la démo ?

 

Lorsque j'ai mis à jour le produit sur le marché, j'ai rempli les pages anglaises/russes avec une description de ce qui a changé et j'ai publié la nouvelle version, mais rien de ma description n'est apparu dans la section "quoi de neuf" de mon produit.

Je ne peux même pas modifier cette description, car il n'existe aucun document relatif à la dernière version.

où se trouve la description des changements ?

 
Tetyana Shcherba:

Lorsque j'ai mis à jour le produit sur le marché, j'ai rempli les pages anglaises/russes avec une description de ce qui a changé et j'ai publié la nouvelle version, mais rien de ma description n'est apparu dans la section "quoi de neuf" de mon produit.

Il n'y a même pas de possibilité de modifier cette description car il n'y a pas de document concernant la dernière version.


Même chose. Je pensais que c'était un pépin.

 

Après avoir sélectionné l'élément de menu "Run single test" (Exécuter un test unique)

rien n'indique qu'un test unique approprié est en cours et a été exécuté. Il est bon de passer à l'onglet "Graphique" si l'exécution unique est réussie, ou à l'onglet "Journal" si elle échoue.


Cela peut sembler être un petit problème cosmétique.

 
Nikolai Semko:

Lorsque je dois remplir une partie d'un grand tableau avec une seule valeur Z, j'utilise une construction :


Beaucoup de gens diront : "Pourquoi est-ce si compliqué, cela peut être plus simple" :

Mais pour une raison inconnue, la première variante utilisant un tableau intermédiaire est beaucoup plus rapide que la seconde.

J'ai déjà écrit sur cette question à SD il y a quelques années. J'ai reçu une réponse disant que j'avais trouvé et corrigé le problème et qu'il serait correct dans la prochaine version.

Mais le problème persiste.

J'ai fait le même test dans MT4 :

Vous avez rencontré une particularité du fonctionnement de la mémoire dans Windows

Juste après ArrayResize ajouter

ArrayFill(arr,0,size,0);
Cela déclenche l'allocation réelle de la mémoire physique afin que cela ne se produise pas pendant le test.


Voici les résultats de mon ordinateur

2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill = 94
2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 147
 
Ilyas:

Vous avez rencontré une particularité de mémoire dans Windows

Immédiatement après l'ajout de ArrayResize

Cela déclenche l'allocation réelle de la mémoire physique afin que cela ne se produise pas pendant le test.

Que mesure alors le profileur intégré de ME sur ArrayResize ?

 
fxsaber:

Que mesure alors le profileur intégré de ME sur ArrayResize ?

Il mesure le temps d'exécution de la fonction ArrayResize.

Le code de test TestArrayFill est construit de telle manière que de la mémoire "froide" est allouée pour le tableau, sans aucune chance d'obtenir de la mémoire "chaude".


Pour être clair, ArrayResize alloue de la mémoire virtuelle (ou mémoire de processus), mais il n'y a aucune garantie que la mémoire virtuelle obtiendra immédiatement (ou aura déjà) des pages physiques.

Windows, allouera de la mémoire physique selon les besoins, lors du premier accès à la page de mémoire virtuelle.
La page a une taille de 4KB, c'est-à-dire que pour "chauffer", tous les éléments ne peuvent pas être mis à zéro via ArrayFill (comme je l'ai écrit) mais seulement tous les 4096 / sizeof(array element type) en partant de zéro.


Comme la mise à zéro des variables est garantie dans MQL4, ArrayResize dans MT4 passe par le tableau pour le mettre à zéro, il n'y a donc pas d'effet de mémoire "froide".

 
Ilyas:

La subtilité, cependant. Merci ! La Documentation a probablement besoin depuis longtemps d'un spoiler "Subtilité".

 
void f( int = 0, ) {}

Est-il exact qu'il compile sans erreur ?

Raison: