Questions d'un "mannequin - page 54

 
Urain:
Corriger les erreurs de l'homme au surnom d'Expert? Cela devrait aller dans le fil d'humour.
Sur une échelle de 10, quelle est la part de votre message qui relève du trollage ? =)
 
Expert:
En ce qui concerne votre post, il s'agit d'un troll sur une échelle de 10 ? =)

J'ai d'abord pensé que c'était Andrei qui posait ces questions, puis je me suis souvenu que son surnom est TheXpert, auquel il correspond.

Puisque vous êtes passé si près, préparez-vous à être doublement sollicité.

Il vaut mieux le changer, il n'est pas trop tard pour 3 postes, il y a assez d'expert sur ce forum.

 
tol64:

Veuillez m'indiquer comment mettre en œuvre correctement la nouvelle vérification des barres dans l'EA multi-devises dans le schéma présenté.

J'ai ajouté un tableau statique pour stocker le temps d'ouverture d'une nouvelle barre pour chaque symbole :

void OnTick()
{ 
 // Объявление массивов переменных для торговых сигналов
 static datetime New_Bar[2];  
 static bool UpSignal[2], DnSignal[2];

 // Получение торговых сигналов
 TradeSignalCounter(0, остальные параметры);
 TradeSignalCounter(1, остальные параметры);

 // Совершение торговых операций
 TradePerformer(0, остальные параметры);
 TradePerformer(1, остальные параметры);
}

Modification de la fonction isNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe) ; Elle fonctionne désormais avec le tableauNew_Bar[].

bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
 // Текущее время
 datetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);

 // Если это первый вызов функции
 if(New_Bar[Number] == 0)
   {
    // Установим время и выйдем 
    New_Bar[Number] = lastbar_time;
    return(false);
   }

 // Если время отличается
 if(New_Bar[Number] != lastbar_time)
   {
    // Запомним время и вернем true
    New_Bar[Number] = lastbar_time;
    return(true);
   }
 // Дошли до этого места - значит бар не новый, вернем false
 return(false);
}
Les résultats sont encore différents avec des paramètres inchangés sur différents outils. Pouvez-vous me dire où je me trompe ?
 
Urain:

J'ai d'abord pensé que c'était Andrei qui posait ces questions, puis je me suis souvenu que son surnom est TheXpert, auquel il correspond.

Puisque vous êtes si proche, préparez-vous à être doublement demandé.

Il vaut mieux le changer, 3 postes n'est pas trop tard, le forum un expert est suffisant.

Au début, j'ai pensé que Andrew est de poser de telles questions (dans le contexte comprendre la stupidité) demande, mais alors je me suis souvenu qu'il surnomméTheXpert, qu'il correspond (oups, caché insulte TheXpert) =)

P.S. Je suis en train de réfléchir à un nouveau surnom.

 
papaklass:
Les résultats seront différents car la fonction OnTick() se déclenche lorsqu'un nouveau tick arrive pour le symbole, sur le graphique sur lequel le Conseiller Expert travaille. Les tics des différents symboles n'arrivent pas en même temps. Cela conduit à une divergence des résultats finaux. Si vous avez configuré votre EA pour qu'il fonctionne sur la devise la plus liquide, avec les ticks les plus élevés de la journée (eurusd), ne vous inquiétez pas.

La raison pour laquelle les résultats sont différents est claire pour moi. Ce sujet a déjà été abordé à de nombreuses reprises dans plusieurs fils de discussion. Ne pas s'étouffer n'est pas une option dans mon cas). Il y a un problème qui doit être résolu afin d'obtenir des résultats de test corrects. Le schéma proposé par Nicholas Kositsin est pour moi, à l'heure actuelle, le plus compréhensible et le plus adapté. Il n'y a tout simplement aucun moyen de résoudre le problème évoqué ci-dessus.

Konstantin Gruzdev a proposé une méthode intéressante avec les "espions" et les "agents" dans son article. )) Mais son "agent" exSpy Control panel MCM ne semble pas fonctionner pour moi.

Quelqu'un a-t-il essayé de résoudre le problème ci-dessus à l'aide des "agents" de Konstantin Gruzdev ?

 
tol64:

Quelqu'un a-t-il essayé de résoudre le problème ci-dessus avec les "agents" de Konstantin Gruzdev ?

Je ne pense pas que cette technique fonctionnera dans le testeur.

// Travail par timer. Comment ne pas aimer ?

 
MetaDriver:
Je pense que cette technologie ne fonctionnera pas dans le testeur.

Konstantin lui-même a commenté dans le fil de discussion de l'article comme ceci :

OnChartEvent() ne fonctionne pas encore dans le testeur. Les développeurs ont promis de le faire. J'ai testé, si l'on peut appeler cela un test, la méthodologie avec l'appel des "espions" directement depuis l'Expert Advisor dans le testeur, en remplaçant le transfert des événements par des variables globales - cela fonctionne.

C'est comme ça qu'il faut l'essayer.

J'ai d'autres variantes en tête, mais elles me semblent assez compliquées. En tout cas, je vais devoir résoudre ce problème. Je suis juste fatigué de me tromper dans les résultats. J'ai commencé à étudier MQL5 exclusivement en raison de la possibilité de tester des systèmes de trading multidevises. Avant cela, je téléchargeais les résultats des tests dans Excel et y effectuais des calculs. Mais j'ai besoin de voir les résultats directement dans le testeur de stratégie.

Vladimir, comment avez-vous résolu ce problème ?

MetaDriver:

// Travail par timer. Comment ne pas aimer ?

Ah, déjà répondu)). Oui, certains "requins" du forum ont déjà suggéré cette option également, mais je n'ai pas encore vu comment elle peut être mise en œuvre. Je vais essayer de me concentrer maintenant et de réaliser enfin cette fonction nécessaire. Si vous avez une solution toute prête, je vous serais profondément reconnaissant de me fournir au moins un exemple simple, si cela ne vous dérange pas)).

 
MetaDriver:

// Travailler sur une minuterie. Comment ne pas aimer ?

J'ai essayé de le tester dans la minuterie. Tout cela me semblait plus compliqué, mais ici il s'avère qu'il suffit de déplacer le code de la fonction OnTick() vers OnTimer(). Les résultats sont identiques. Pour être précis, vous devrez régler le minuteur, par exemple, toutes les 10 secondes. Cependant, il faut beaucoup plus de temps pour le tester, ce qui est le seul point qui pourrait ne pas vous plaire au premier abord.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
tol64:
J'ai essayé de le tester dans une minuterie. Je trouvais tout cela plus compliqué, mais il s'avère ici que je dois seulement traduire le code de la fonction OnTick() en OnTimer(). Les résultats sont identiques. Pour être précis, vous devrez régler le minuteur, par exemple, toutes les 10 secondes. Il est vrai que les tests prennent beaucoup plus de temps ; c'est la seule chose qui peut être désagréable à première vue.

Cela dépend de la période de la minuterie. Vous pouvez le faire pendant 10 jours (60*60*24*10), ce sera plus rapide. :))

Il y a aussi des subtilités. Par exemple, vous n'êtes pas obligé de cocher les week-ends. ;)

 
tol64:
Mais il faut beaucoup plus de temps pour le tester

Si le "tic-tac" n'est nécessaire que pour attraper une nouvelle barre, il suffit de régler un minuteur sur le temps d'apparition de la barre (00 minutes 00 secondes pour H1) et de tic-tac toutes les 1 seconde pendant quelques minutes jusqu'à ce que la barre apparaisse sur tous les TF nécessaires. Il sera plus précis et plus économique.

Mais une solution avec des événements personnalisés est, bien sûr, beaucoup plus élégante.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
Raison: