Quand est-il judicieux de conserver une partie du code du robot dans un indicateur ? - page 34

 
TheXpert:

Idée fausse n°1 : vous pouvez vous passer d'IndicatorCounted()

Un indicateur avec lui :

Sans cela, sur le principe du hrenfx

Ensuite, nous appliquons les indices au graphique et émulons la perte de connexion pendant que l'automate fonctionne. Résultat :




C'est comme ça. Par conséquent, j'évite d'utiliser des fonctionnalités qui ne seront pas utiles par la suite (lors du développement d'une EA).

Je ne crois pas à l'électricité et je préfère tout faire moi-même. Et cette fonction, je ne la comprends pas.

 
sergeev:


Et pouvez-vous afficher les recherches et les vérifications de cette conjecture ?

Je n'ai effectué que quelques expériences avec une connexion défaillante. Je n'ai pas fait une analyse complète de la merde des développeurs. C'était à la fois ennuyeux et long (je devais le faire non pas pendant une minute ou deux, mais pendant au moins une douzaine ou deux). Ma version d'EA gère les brèves interruptions de connexion sans aucun problème. Cependant, la recherche a montré que le court terme (pour M1) n'est pas des heures, mais des minutes (< 10).

Vous pouvez approfondir ce sujet par des expériences simples. Je ne peux pas encore prétendre à 100%. Peut-être que nous ne devrions pas appeler un indicateur vide au début, mais l'indicateur avec l'appel de IndicatorCounted().

J'ai trouvé un moyen rapide d'enquêter : faire fonctionner plusieurs terminaux en même temps (j'en aurai besoin de moins de cinq) et sur chaque terminal une variante différente d'enquête. Coupez la communication pendant une heure, puis rétablissez-la. Obtenez plusieurs variantes différentes en même temps. C'est à partir de là que vous obtiendrez la bonne image.

P.S. Vous avez besoin de terminaux différents, pas de graphiques différents. Il doit exclure la variante selon laquelle IndicatorCounted() est calculé une fois pour tous les indicateurs du terminal.

P.P.S. Cette même merde a été grandement modifiée dans les constructions > 380. Et, à en juger par les réponses, il sera modifié de nombreuses fois. Il est donc presque inutile de mener une étude. Nous devons demander directement aux développeurs ce qui arrive à l'indicateur (qui contient l'appel d'IndicatorCounted()) lors du premier tick après une longue pause de communication.

P.P.P.S. Demandé.

 
Integer:


Ne sois pas ridicule. Tu n'as juste pas encore appris à écrire des indicateurs.

Après une telle hérésie :

vous pourriez tout aussi bien vous abstenir d'avoir une opinion dans ce fil de discussion.


Eh bien, qui et quoi a appris à écrire, je pense, sera vu de l'extérieur, quant à l'hérésie - le niveau de votre pensée, il semble, par toutes les indications, ressemble à la logique des fanatiques religieux, avec qui il est inutile et absolument inutile de discuter. Même avec une telle hérésie, les experts travaillent trois fois plus vite. Mais personnellement, je n'ai pas envie d'aller à l'extrême, de prouver quelque chose à quelqu'un, et a fortiori de me justifier. La qualification de mon esprit est trop chère pour la gaspiller de manière aussi misérable et inefficace.
 
Les gourous respectés (tous) voudraient vous demander de vous traiter mutuellement avec plus de respect. Qu'allez-vous enseigner aux jeunes ?
 
TheXpert:

Faux raisonnement n°1 : vous pouvez vous passer d'IndicatorCounted()

Un indicateur avec lui :

Sans elle, sur le principe du hrenfx

Ensuite, nous appliquons les indices au graphique et émulons la perte de connexion pendant que l'automate fonctionne. Résultat :




IMHO : La comparaison n'est pas correcte : un algorithme avec récursion, toutes choses égales par ailleurs, s'exécutera toujours plus lentement. Pour la pureté de l'expérience, il est préférable d'utiliser le même algorithme dans l'indicateur et dans le conseiller expert.

Qu'est-ce qui empêche l'Expert Advisor de calculer la dernière barre calculée et, si la différence entre le nombre actuel de barres et la dernière barre calculée est supérieure à 1, de recalculer à partir de la position appropriée, comme le fait l'indicateur ?

 
GODZILLA:

Eh bien, qui et ce qui a appris à écrire, je pense, il sera plus clair de l'extérieur, sur l'hérésie - le niveau de votre pensée, je pense, par toutes les indications, ressemble vivement à une logique de fanatiques religieux avec qui il est inutile et absolument inutile de discuter. Même avec une telle hérésie, les experts travaillent trois fois plus vite. Mais personnellement, je n'ai pas envie d'aller à l'extrême, de prouver quelque chose à quelqu'un, et a fortiori de me justifier. La qualification de mon esprit est trop chère pour être gaspillée d'une manière aussi misérable et inutile.

Est-ce que c'est avec cette chose

//---- ЭМУЛЯЦИЯ ИНДИКАТОРНЫХ БУФЕРОВ
  int NewSize = iBars(symbol, timeframe);
  //----  Проверка на смену нулевого бара
  if(ArraySize(Ind_Buffer0) < NewSize)
    {
      //---- Установить прямое направление индексирования в массиве 
      ArraySetAsSeries(Ind_Buffer0, false);
      ArraySetAsSeries(Ind_Buffer1, false);
      ArraySetAsSeries(Ind_Buffer2, false);
      //---- Изменить размер эмулируемых индикаторных буферов 
      ArrayResize(Ind_Buffer0, NewSize); 
      ArrayResize(Ind_Buffer1, NewSize); 
      ArrayResize(Ind_Buffer2, NewSize); 
      //---- Установить обратное направление индексирования в массиве 
      ArraySetAsSeries(Ind_Buffer0, true);
      ArraySetAsSeries(Ind_Buffer1, true);
      ArraySetAsSeries(Ind_Buffer2, true); 
    } 
//----

vous avez fait travailler les experts rapidement ? Qui est un fanatique après ça ? Vérifié depuis longtemps, vous pouvez utiliser la recherche du forum.

 
granit77:
Les gourous respectés (tous) voudraient vous demander de vous traiter mutuellement avec plus de respect. Qu'allez-vous enseigner aux jeunes ?

Personnellement, je ne suis pas du tout offensé par l'accusation de fanatisme religieux, car je sais très bien qui et ce que je suis. En outre, une telle accusation est un bon indicateur du niveau de pensée de l'autre partie, un indicateur exhaustif.
 
GODZILLA:
Eh bien, qui et quoi ont appris à écrire, je pense, de l'extérieur sera plus visible

Oui, je vois ça parfaitement. Votre crédibilité à mes yeux chute trois fois plus vite qu'avant :)

VladislavVG:

IMHO : La comparaison n'est pas correcte : un algorithme avec récursion, toutes choses égales par ailleurs, s'exécutera toujours plus lentement. Pour la pureté de l'expérience, il est préférable d'utiliser le même algorithme dans l'indicateur et dans le conseiller expert.

La comparaison est correcte, car elle n'est pas faite pour comparer la vitesse, mais pour montrer clairement l'incorrection du travail.

Qu'est-ce qui empêche l'Expert Advisor de calculer la dernière barre calculée et, si la différence entre le nombre actuel de barres et la dernière barre calculée est supérieure à 1, de la recalculer à partir de la position appropriée, comme le fait l'indicateur ?

Pourquoi n'essayez-vous pas ?


L'EA sur le premier tick après l'apparition du lien se comporte très différemment de l'indicateur dérivé de l'EA.

La capture d'écran ci-dessus montre que l'EA (pas l'indicateur de l'EA) se compare avec iCustom après la rupture de connexion. La rupture de connexion s'y déroule sans problème.

Vous vous trompez à nouveau. Le conseiller expert se comporte de la même manière. Vous ne pouvez tout simplement pas analyser correctement vos propres journaux. J'ai déjà expliqué l'erreur, je ne veux pas la répéter.

Conseil : recherchez quelques valeurs après la pause.

granit77:

Respectueux gourous (tous), je voudrais vous demander de vous traiter mutuellement avec plus de respect. Qu'allez-vous enseigner aux jeunes ?

Les maîtres ne doivent pas véhiculer d'hérésies, c'est une chose, et doivent être capables d'admettre leurs erreurs, c'en est une autre.
 
TheXpert:

Vous vous trompez à nouveau. Le conseiller se comporte de la même manière. Vous ne pouvez tout simplement pas analyser correctement vos propres journaux. J'ai déjà expliqué quelle est l'erreur, je ne veux pas la répéter.

Conseil : regardez plusieurs valeurs après l'écart.

Oui, j'ai seulement donné une capture d'écran pour une valeur après la pause. Bien sûr, j'ai vu toutes les valeurs et au-delà (je ne fais pas de tricherie, et surtout pas aussi stupide). La coïncidence est complète (elle n'est pas apparue dans la capture d'écran).

Malheureusement, les développeurs ne comprennent toujours pas l'utilité possible d'IndicatorCounted() pour les EA (à en juger par leur réponse).

L'indicateur et l'EA sur le premier tick après le gap (surtout un long) ne se comportent pas de la même manière. Vous pouvez facilement le vérifier si vous le souhaitez.

 
Integer:

Personnellement, je ne suis pas du tout offensé que l'on m'accuse de fanatisme religieux, car je sais très bien qui et ce que je suis. En outre, une telle accusation est un bon indicateur du niveau de pensée de l'autre partie, un indicateur exhaustif.

Considérez-vous que votre réflexion est adéquate et non fanatique, d'ailleurs ? Il ne suffit pas que vous n'ayez pas réussi à prouver votre hypothèse selon laquelle le même code dans un indicateur sera toujours plus rapide que dans un EA, mais au lieu de cela, vous avez lancé une compétition absolument pas claire et dénuée de sens (d'ailleurs, elle était bonne, car elle a conduit à une solution intéressante de la rupture de communication dans l'EA). À propos, je n'ai remarqué nulle part sur notre site que le code du conseiller devait de préférence être écrit dans un indicateur d'accélération des performances. Cette affirmation semble donc étrange, du moins, et je pense que vous serez d'accord avec elle.

Mon hypothèse était basée sur la simple logique que l'appel d'une fonction externe avec le passage d'une copie du tampon et des paramètres prend plus de temps que sans cela ; pourquoi essayez-vous de nier cela, je ne suis pas sûr.