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

 
Vinin:

La valeur de l'EMA à l'interruption de la communication est prise de manière incorrecte. Il est considéré comme le dernier calculé. Mais c'est incorrect. Par conséquent, la fonction ne fonctionnera pas correctement sur n barres mais sur un nombre beaucoup plus important de barres. Si les valeurs sont sauvegardées, bien sûr

Apparemment, ils ne sont pas entrés dans le code. Commenté :

// Комментирую для такого случая. Крайний известный M1-бар был в 14:00.
// Произошел разрыв связи на 10 минут после чего происходит вызов start.
void start()
{
  EMA = GetEMA();
  
  return;  
}

double GetEMA()
{
  static int PrevTime = 0;
  
  if (PrevTime == Time[0]) // Выпонится, когда история за крайние 10 минут подгрузится.
                           // Если истории не было, например, сутки, то может произойти ошибка.
                           // Но мы говорим про РЕАЛ, т.е. адекватность человека.
                           // Т.к. если нет связи сутки, советник оставлять нельзя.
    return(EMA);

  int i = iBarShift(Symbol(), Period(), PrevTime) - 1; // Здесь мы получим номер бара в 14:01.

  PrevTime = Time[0]; // запомним текущее время 14:10
  
// Производим расчет текущего EMA с учетом полученных 10 баров.
  while (i >= 0)
  {
    EMA = EMA * Alpha + (1 - Alpha) * GetPrice(i);
    
    i--;
  }
  
  return(EMA);
} 
 
Lorsque j'ai parlé d'erreur et d'adéquation, je ne voulais pas dire que cela s'applique uniquement au cas "tout-en-un", mais aussi au cas "avec indicateur".
 
hrenfx:
Lorsque j'ai parlé d'erreur et d'adéquation, je voulais dire que cela s'applique non seulement au cas "tout-en-un", mais aussi au cas "avec indicateur".


La conversation ne fonctionne pas, apparemment quelqu'un ne veut pas entendre une petite critique.

Nous pouvons conclure que cette branche est inutile

 
Vinin:


Je ne fais pas la conversation, apparemment quelqu'un ne veut pas entendre une petite critique.

On pourrait en conclure que ce fil de discussion est inutile

Ecoutez, il n'y a pas besoin d'ergoter. J'ai même commenté votre code. Comment ne pas aimer ? Pensez-vous que l'exemple d'un écart de 10 minutes que vous m'avez donné provoque une erreur ? J'ai été très clair. Vous dites qu'il y a une erreur, donc vous voyez où elle se trouve. Alors ne soyez pas paresseux, montrez-moi juste où c'est. Vous l'avez déjà identifié.

P.S. Vous êtes la deuxième personne à décrocher. Et ne dites pas que je ne comprends pas. Montrez-moi clairement où est l'erreur. Si j'ai tort, je l'admettrai. Ça ne m'apportera rien de bon.

 
hrenfx:

Ecoutez, il n'y a pas besoin d'être évasif. J'ai même commenté votre code. Comment ne pas aimer ? Vous pensez que l'exemple de l'écart de 10 minutes que je vous ai donné provoque une erreur ? J'ai été très précis de mon côté. Vous dites qu'il y a une erreur, donc vous voyez où elle se trouve. Alors ne soyez pas paresseux, montrez-moi juste où c'est. Vous l'avez déjà identifié.

P.S. Vous êtes la deuxième personne à décrocher. Et ne dites pas que je ne comprends pas. Montrez-moi clairement où est l'erreur. Si j'ai tort, je l'admettrai. Ça ne m'apportera rien de bon.


Quelqu'un ne veut pas réfléchir. Je ne peux pas les faire, et je ne veux pas.
 
Vinin:

Juste quelqu'un qui ne veut pas réfléchir. Je ne peux pas les forcer à le faire, et je ne veux pas le faire.


Putain de merde, personne n'a élaboré. Encore de l'eau. Plusieurs personnes (je connais très bien MT4+MQL4) me disent que mon code fonctionnera avec une erreur mais je ne peux pas donner un exemple-argument spécifique (je l'ai demandé plusieurs fois). Et ceci dans un code de seulement 10 lignes.

Peut-être que vous pourriez mettre le code Integer et mon code dans un fil séparé et demander aux programmeurs de MQL4 ce qui ne va pas dans le code. Et en tant que modérateur, assurez-vous qu'il n'y a pas d'inondation. Dans ce cas, le code ne peut même pas être trouvé.

Je pense qu'il sera utile à la communauté MQL4.

 
hrenfx:

Ecoutez, il n'y a pas besoin d'ergoter. Je vous ai même répondu en commentant le code. Comment ne pas aimer ?

Le prix viendra en premier. Ensuite, les barres viendront. Au moment où les barres arrivent, elles auront été "en quelque sorte" traitées, mais en fait, elles ne sont pas comptabilisées parce qu'elles n'étaient pas présentes lors du traitement.

C'est la deuxième fois que je le dis.

 
TheXpert:

Le prix viendra en premier. Ensuite, les barres viendront. Au moment où les barres arrivent, elles seront "en quelque sorte" traitées, mais en fait elles ne seront pas prises en compte parce qu'elles n'étaient pas disponibles au moment du traitement.

Oui, le prix arrivera en premier mais la condition if (PrevTime == Time[0]) sera déclenchée tout le temps jusqu'à ce qu'il y ait une nouvelle barre.

Vous comprenez que si une nouvelle barre arrive, sans aucune pagination pour les 10 dernières minutes, l'EA avec l'indicateur recevra des valeurs EMA erronées avant la pagination de l'historique. Par conséquent, l'EA est prête à faire n'importe quoi.
 
hrenfx:


Bon sang, personne ne s'est étendu sur le sujet. Encore de l'eau. Plusieurs personnes (MT4+MQL4 connaissent très bien) me disent que mon code fonctionnera avec des erreurs mais ils ne peuvent pas donner un exemple-argument spécifique (je l'ai demandé plusieurs fois). Et ceci dans un code de seulement 10 lignes.

Pourquoi ne pas mettre le code Integer et mon code dans un fil séparé et demander aux programmeurs de MQL4 ce qui ne va pas dans le code. Et vous, en tant que modérateur, vous vous assurez qu'il n'y a pas d'inondation. Dans ce cas, le code n'est même pas trouvé.

Je pense qu'il sera utile à la communauté MQL4.


J'ai donné la logique d'un algorithme utilisable. Ça n'a pas marché. Je suis désolé de ne pas être passé.
 
hrenfx:
Oui, le prix viendra en premier, mais jusqu'à ce qu'il y ait une nouvelle barre, la condition if (PrevTime == Time[0]) sera déclenchée en permanence.
Non, le prix sera sur une nouvelle barre. On peut le voir clairement lorsque le terminal est allumé. Au début, la barre ressemble à un point.
Raison: