Il est parfois nécessaire de visualiser un élément de l'historique des prix sous la forme d'un tableau. Cela peut se faire via CTRL+U, en sélectionnant l'onglet Bars/Ticks. Il faut ensuite saisir à la main l'intervalle nécessaire. C'est fastidieux.
C'est pourquoi j'ai créé une fonctionnalité supplémentaire, qui est démontrée par l'Expert Advisor suivant.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/fr/code/26132#include <fxsaber\Keyboard\Keyboard.mqh> // https://www.mql5.com/fr/code/48393inputbool inTicks = true; // true - Ticks, false - Barsinputint inBefore = -60; // Avant en secondesinputint inAfter = 60; // Après en secondesinputENUM_TIMEFRAMES inPeriod = PERIOD_CURRENT; // Période (mode Bars)datetime GetTime( constint X )
{
int Window;
datetime Res;
double Price;
return(ChartXYToTimePrice(0, X, 0, Window, Res, Price) ? Res : 0);
}
voidOnChartEvent( const int32_t id, constlong &lparam, constdouble&, conststring& )
{
if ((id == CHARTEVENT_CLICK) && KEYBOARD::IsControl())
{
constdatetime Time = GetTime((int)lparam);
if (Time)
{
if (inTicks)
MTTESTER::CopyTicks(_Symbol, Time + inBefore, Time + inAfter);elseMTTESTER::CopyRates(_Symbol, inPeriod, Time + inBefore, Time + inAfter);
}
}
}
Vous cliquez (avec la touche CTRL enfoncée) à l'endroit voulu du graphique et vous obtenez automatiquement et immédiatement les données tabulaires correspondantes.
Les fonctions sélectionnées remplissent simplement certains champs de données et les interrogent. L'interface graphique vous permet ensuite de voir ce qui vous intéresse. L'automatisation, en général.
если бы время файлов в архиве совпадало со временем модификации в кодобазе. Не соответствует времени изменения конкретного файла. Я вижу корректную структуру после разархивирования а ведь сам редактор позволяет загрузить все эти файлы именно так
j'ai ajouté des lignes au fichier MultiTester_Example.mq5.
#define FAKE // Enlever - contourner pour placer le code dans le KB.#ifdef FAKE
voidOnStart() {}
#else // #ifdef FAKE#endif // #ifdef FAKE #else
Je l'ai commenté ou dois-je le faire différemment ? Ou puis-je supprimer ces 4 lignes ?
//#define FAKE // Remove - bypass to place code in the KB.#ifdef FAKE// void OnStart() {}#else // #ifdef FAKE#endif // #ifdef FAKE #else
P.S. J'ai vu que j'ai pris l'ancienne liste de tâches sans ces lignes et qu'elle s'est mise à clignoter. Avec les nouvelles lignes, elle ne clignote pas.
Bonjour, cher fxsaber ! Veuillez m'aider à résoudre un problème. Mon script a une fonction d'archivage, que j'ai développée avec l'aide de l'excellente bibliothèque MTTESTER. Il écrit Settin dans le dossier Tester dans la ligne suivante : if(!kernel32::CopyFileW(SrcPath,DstPath,false)) // Écraser Settin depuis le bac à sable Files vers le dossier Tester. Nous obtenons un ensemble portant le nom de "After archiving". Mais il n'est pas adapté à un travail ultérieur, apparemment à cause de l'encodage. Cependant, si vous l'écrivez manuellement au robot dans le testeur de stratégie et que vous l'enregistrez ensuite sous le nom "Après écriture manuelle au robot et enregistrement", cet ensemble est déjà approprié. Et il ne s'agit pas seulement de changer l'en-tête, mais de quelque chose d'autre. J'ai demandé de l'aide aux ironmen (Qwen, Deep Seek) et ils ont généré un script "ReloadSetsFromCommonFixed". Il a beaucoup de fonctionnalités intéressantes et il fonctionne, à l'exception de cette ligne : if(!FileCopy(source_path, FILE_COMMON, dest_path, FILE_COMMON)) L'ensemble est copié, mais lors de l'impression de vérification, la sortie est abracadabra, apparemment à cause de l'encodage. Iron a proposé 4 solutions, mais aucune n'a fonctionné (le texte les a toutes). Mon dernier espoir est d'avoir des caractères en cuir. Existe-t-il un moyen de modifier cette ligne dans la fonction d'archivage : if(!kernel32::CopyFileW(SrcPath,DstPath,false)) pour simuler également l'écriture manuelle sur le robot avec sauvegarde ultérieure dans le format requis "Après écriture manuelle sur le robot et sauvegarde" ? Cordialement, Alexander
klycko #: Est-il possible de modifier cette ligne dans la fonction d'archivage ?
J'ai cherché ici (dans la fenêtre ouverte, appuyez sur ENTRÉE dans la barre d'adresse) l'enregistrement défini. Il est très probable que ces indicateurs soient nécessaires.
prRead0 = MTTESTER::GetSettings(Control) ; // Lit les paramètres du robot qui viennent d'être installés
fonctionne correctement et prRead0 = true après son exécution.
Mais dans le réseau de contrôle, prMFI=true, car il a été initialement chargé manuellement dans le robot. Cela signifie que l'écriture dans le robot n'a pas eu lieu, même si le signe d'écriture prWrite0 = true.
Dans le réseau d'origine, prHEX=vrai
Dans le réseau d'origine du robot, prMFI=true
La commande MTTESTER::SetSettings2(Settings) fonctionne, mais ces paramètres n'apparaissent pas dans le robot.
Je n'ai pas pris la peine d'étudier les drapeaux et j'ai décidé d'écrire un code fonctionnel pour sauvegarder et charger les fichiers de configuration du Testeur.
Vous pouvez sauvegarder(inLoad = false) un fichier set par le biais du script, puis modifier quelque choseà la main et le charger(inLoad = true) dans le Testeur par le biais du script.
Si cela fonctionne, prenez les morceaux correspondants de la source pour vous.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Il est parfois nécessaire de visualiser un élément de l'historique des prix sous la forme d'un tableau. Cela peut se faire via CTRL+U, en sélectionnant l'onglet Bars/Ticks. Il faut ensuite saisir à la main l'intervalle nécessaire. C'est fastidieux.
C'est pourquoi j'ai créé une fonctionnalité supplémentaire, qui est démontrée par l'Expert Advisor suivant.
Vous cliquez (avec la touche CTRL enfoncée) à l'endroit voulu du graphique et vous obtenez automatiquement et immédiatement les données tabulaires correspondantes.
Les fonctions sélectionnées remplissent simplement certains champs de données et les interrogent. L'interface graphique vous permet ensuite de voir ce qui vous intéresse. L'automatisation, en général.
5430 Les fenêtres clignotent toujours lors de la préparation d'une tâche.
Comment résoudre ce problème ?
5430 Windows clignote toujours lors de la préparation d'un devoir.
Comment résoudre ce problème ?
Ainsi.
C'est un très bon thème. Mais j'ai téléchargé avant tout séparément et ça clignote encore.
J'ai vu que dans le fichier MultiTester_Example.mq5
j'ai ajouté des lignes au fichier MultiTester_Example.mq5.
Je l'ai commenté ou dois-je le faire différemment ? Ou puis-je supprimer ces 4 lignes ?
P.S. J'ai vu que j'ai pris l'ancienne liste de tâches sans ces lignes et qu'elle s'est mise à clignoter. Avec les nouvelles lignes, elle ne clignote pas.
Mais ai-je bien commenté une seule ligne ?
C'est un très bon thème. Mais j'ai téléchargé avant que tout séparément clignote encore.
J'ai vu cela dans le fichier MultiTester_Example.mq5
on a ajouté les lignes
Je l'ai commenté de cette façon ou dois-je le faire différemment ? Ou puis-je supprimer ces 4 lignes en général ?
P.S. J'ai vu que j'ai pris l'ancienne liste de tâches sans ces lignes et qu'elle clignotait. Avec les nouvelles lignes, elle ne clignote plus.
Mais ai-je commenté correctement une seule ligne ?
Est-il possible de modifier cette ligne dans la fonction d'archivage ?
J'ai cherché ici (dans la fenêtre ouverte, appuyez sur ENTRÉE dans la barre d'adresse) l'enregistrement défini. Il est très probable que ces indicateurs soient nécessaires.
Ces drapeaux ont beaucoup aidé et le problème de l'archivage a été résolu. Le résultat est maintenant dans le bon format.
Je vous remercie de tout cœur !
Mais dans mon script Nocturne la commande ne fonctionne pas correctement :
prWrite0 = MTTESTER::SetSettings2(Settings); // Écriture des paramètres dans le robot
Bien que prWrite0 = true après son exécution.
Il s'agit probablement à nouveau d'une question de drapeaux lors de la lecture de l'ensemble des paramètres du dossier.
Ceci est fait par la fonction GetKthFileContent, qui a la ligne :
int handle = FileOpen(full_path, FILE_READ | FILE_WRITE | FILE_UNICODE | FILE_TXT | FILE_COMMON) ;
Les variantes de la ligne ci-dessous ne fonctionnent pas non plus :
// int handle = FileOpen(full_path, FILE_READ | FILE_TXT | FILE_COMMON); // Source variante ligne
// int handle = FileOpen(full_path, FILE_READ | FILE_UNICODE | FILE_TXT | FILE_COMMON) ;
Commande suivante :
prRead0 = MTTESTER::GetSettings(Control) ; // Lit les paramètres du robot qui viennent d'être installés
fonctionne correctement et prRead0 = true après son exécution.
Mais dans le réseau de contrôle, prMFI=true, car il a été initialement chargé manuellement dans le robot. Cela signifie que l'écriture dans le robot n'a pas eu lieu, même si le signe d'écriture prWrite0 = true.
Dans le réseau d'origine, prHEX=vrai
Dans le réseau d'origine du robot, prMFI=true
La commande MTTESTER::SetSettings2(Settings) fonctionne, mais ces paramètres n'apparaissent pas dans le robot.
Quel est le problème ?
Cordialement, Alexander
Quel est donc le problème ?
Je n'ai pas pris la peine d'étudier les drapeaux et j'ai décidé d'écrire un code fonctionnel pour sauvegarder et charger les fichiers de configuration du Testeur.
Vous pouvez sauvegarder(inLoad = false) un fichier set par le biais du script, puis modifier quelque choseà la main et le charger(inLoad = true) dans le Testeur par le biais du script.
Si cela fonctionne, prenez les morceaux correspondants de la source pour vous.