Erreurs, bugs, questions - page 2624

 

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

Bibliothèques : HistoryTicks

fxsaber, 2020.01.09 14:43

Je n'ai pas remarqué que la version du KB est ancienne. Malheureusement, il n'y a aucun moyen de mettre à jour. La machine KB donne ceci
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
Tout se compile sans erreur dans ME.
 
Stanislav Korotky:

Pourquoi à la ligne 3 :

avertissement de "non-concordance des signes" ?

Datetime est censé être un nombre non signé (8 octets comme ulong). Donnez-moi un exemple de date négative.

probablement parce qu'il n'y a pas de type timestamp séparé et que datetime est également utilisé pour stocker la différence de temps.
 
Pouvez-vous me dire quel événement (s'il y en a un) est généré dans le testeur lorsque le bouton Stop est pressé ?
 
Encore une fois, à l'aide ! Je ne sais pas comment rétablir une meilleure connexion, changer de compte ne m'aide pas.
Dossiers :
Mc3FTItT2F8.jpg  18 kb
 

En appliquantChartSetSymbolPeriod dans l'indicateurOnInit pendant le débogage sur les données actuelles, il y a une chose étrange - dans OnTick() rates_total de l'ancien TF, et des tableaux de séries temporelles du nouveau:

datetime shift,arr[],arr2[];
void OnInit()
  {
 if (ChartPeriod()!=PERIOD_D1)
 {
     ChartSetSymbolPeriod(0,Symbol(),PERIOD_D1);
     CopyTime(Symbol(),PERIOD_D1,0,iBars(Symbol(),PERIOD_D1),arr);     
     ChartRedraw();
     Sleep(100);
  }  
 CopyTime(Symbol(),PERIOD_H1,0,iBars(Symbol(),PERIOD_H1),arr2); 
  }

Ici, nous voyons Time[x] de Daytime, etrates_total de H1, avec le TF du graphique changé en Daytime dans la fenêtre du débogueur.


 
Aleksey Mavrin:

En appliquantChartSetSymbolPeriod dans l'indicateurOnInit pendant le débogage sur les données actuelles, il y a une chose étrange - dans OnTick() rates_total de l'ancien TF, et des tableaux de séries temporelles du nouveau:

Ici, nous voyons Time[x] de Daytime, etrates_total de H1, alors que dans la fenêtre du débogueur, le TF du graphique est passé à Daytime.


Lorsque vous changez de cadre temporel, l'indicateur est entièrement recréé. C'est-à-dire que le manche de l'indicateur précédent est supprimé et le nouveau est créé.
Mais il y a un "mais". L'indicateur précédent est encore présent pendant un certain temps.

N'est-ce pas la raison pour laquelle...

 
Aleksey Mavrin:

En appliquantChartSetSymbolPeriod dans l'indicateurOnInit pendant le débogage sur les données actuelles, il y a une chose étrange - dans OnTick() rates_total de l'ancien TF, et des tableaux de séries temporelles du nouveau:

Nous voyons ici Time[x] de Daytime, etrates_total de H1, avec le TF du graphique changé en Daytime dans la fenêtre du débogueur.

IndicateurDéclenchement

Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
  • www.mql5.com
//|                                        Test_IndicatorRelease.mq5 | //|                        Copyright 2010, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Artyom Trishkin:

Lorsque le cadre temporel change, l'indicateur est entièrement recréé. Cela signifie que la poignée d'indicateur précédente est supprimée et que la nouvelle est créée.
Mais il y a un "mais". L'indicateur précédent est encore présent pendant un certain temps.

N'est-ce pas la raison pour laquelle...

Oui, d'après ce que j'ai compris de mes expériences, aprèsChartSetSymbolPeriod,OnInit est terminé et une fois (en mode débogage au moins) OnCalculate est exécuté (à ce moment-là, il est capturé). C'est-à-dire qu'il n'interfère pas avec le fonctionnement en ligne.

Le fait que des données de différentes échéances puissent arriver dans OnCalculate est juste un bug, je pense.

 
Est-ce une faille dans ArraySwap?
void OnStart()
{
  int ArrayStatic[1];
  int ArrayDynamic[];
  
  ArrayResize(ArrayDynamic, ArraySize(ArrayStatic));
  
  Print(ArraySwap(ArrayStatic, ArrayDynamic)); // false
}
 
fxsaber:
Est-ce une faille dans ArraySwap ?

Tel que conçu

Échange le contenu de deux tableaux dynamiques de même type.