Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1022
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Ou laissez-moi poser une question plus simple :
Dans la fonction OnCalculate(), une boucle est insérée, de sorte qu'il n'y a qu'une seule itération, la suivante ne se produisant que lorsque le graphique est mis à jour.....
Ou laissez-moi poser une question plus simple :
Dans la fonction OnCalculate(), une boucle est insérée, de sorte qu'il n'y a qu'une seule itération, la suivante ne se produisant que lorsque le graphique est mis à jour.....
Merci beaucoup ! Cela fonctionne étrangement j'ai les droits d'administrateur, spécifiquement pour le dossier terminal j'ai donné toutes les destructions au propriétaire, cela a aidé, mais ensuite cela a cessé de fonctionner. Puis j'ai essayé de lire le fichier journal en utilisant le FileReadStrArrayW (si je ne me trompe pas de nom) lire les lignes vides, le script se bloque en mode ansi. Seul FileReadCharArr était capable de lire les codes ansi. Peut-être avez-vous un exemple de l'analyse du fichier journal avec votre bibliothèque ? Je vous en serais très reconnaissant !
Oui, il y a un problème dans la lecture du journal maintenant. C'était plus facile avant.
Le problème est que le fichier lui-même est codé en ANSI, mais les chaînes de caractères sont maintenant UNICODE.
Voici un tel script qui fonctionne :
Mais cela ne fonctionnera que si le fichier journal est d'abord enregistré en UNICODE !
C'est-à-dire que la bibliothèque fonctionne correctement. Nous devons trouver un moyen simple de convertir l'encodage ANSI du fichier en tableau de chaînes UNICODE, ou je devrais ajouter à la bibliothèque une fonction qui convertirait l'encodage des chaînes lors de la lecture du fichier.
=====================Option 1 : Vous n'avez pas à vous occuper des tableaux. Lire le fichier entier en ANSI, le convertir en UNICODE, puis l'analyser en utilisant MQL.
Variante 2. Lisez-le en ANSI, écrivez-le dans le répertoire courant du terminal et lisez-le en utilisant les fonctions MQL pour les fichiers CSV.
Option 3. Créez un lien symbolique vers le fichier journal dans le bac à sable en utilisant la fonction de la même bibliothèque et lisez-le en utilisant les fonctions MQL pour travailler avec des fichiers CSV :
À mon avis, c'est l'option la plus agréable et la plus facile.
J'essaie d'écrire un indicateur de canal. J'ai calculé les valeurs à dessiner sur le graphique et je les ai placées dans des tableaux double tob[] et double tos[], mais lorsque j'essaie de les connecter au tampon pour le dessin sur le graphique - aux lignes 25 et 26 :
ces tableaux à la place des valeurs requises, par exemple :
0/1.424/1.3679
1/1.42/1.3639
sont remplis avec le nombre 2147483647, comme ceci :
0/2147483647/2147483647
1/2147483647/2147483647
2/2147483647/2147483647
Comment peut-on y remédier ?
Aidez-moi à trouver un modèle pour MT4 pour séparer la nuit et le jour.
Disons que le graphique de 00:00 à 8:00 est d'une couleur et que celui de 8:00 à 00:00 est d'une couleur différente.
Salutations à tous.
Face à ce problème :
Un extrait du code du robot :
int per=Period() ;
if(per = 60)
{
Print("Si la période n'est pas H1, cette ligne ne devrait pas être dans le journal") ;
Commentaire (...) ;
... //les deux corps du robot
...
...
}
implique que ni le corps du robot, ni la ligne Print(...), ni le Commentaire(...) à l'écran ne seront exécutés si une période autre que H1 est activée sur le graphique.
Cependant, tout est exécuté sur n'importe quelle période. Pourquoi ?
Comment écrire correctement, que si la période sur le graphique ne correspond pas à celle spécifiée - retour du contrôle au terminal. (Au fait, j'ai essayé RETURN (0) - cela n'aide pas - tout s'imprime encore...)
Salutations à tous.
Face à ce problème :
Extrait de code du robot :
int per=Period() ;
if(per = 60)
{
Print("Si la période n'est pas H1 - cette ligne ne doit pas figurer dans le journal de bord") ;
Commentaire (...) ;
... // puis le corps du robot
...
...
}
implique que ni le corps du robot, ni la chaîne Print(...), ni Comment(...) à l'écran ne seront exécutés si une période autre que H1 est activée dans le graphique.
Cependant, tout est exécuté sur n'importe quelle période. Pourquoi ?
Comment enregistrer correctement que si le délai ne correspond pas à celui fixé - retour du contrôle au terminal. (Au fait, j'ai essayé RETURN (0) - cela ne fonctionne pas - tout s'imprime toujours...)
Vous faites une affectation, alors que vous avez besoin d'une comparaison if(per == 60)
Merci camarade... J'ai le cerveau tout retourné... J'ai fait une pause significative dans la programmation - j'ai oublié beaucoup du peu que je sais...
---
Une dernière question... Fragment de recherche des max/mini des 8 premières heures d'une journée par terminal :
int h=TimeHour(TimeCurrent()) ; // trouver l'heure terminale actuelle (0...23)
if (h<8) return(0) ; // si pas de H1 des 8 premières bougies du jour = laisser...
double Maxi=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,8,h-7)] ; // détermine les 8 premières bougies maximales du jour.
double Mini=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,8,h-7)] ;
Les deux dernières lignes ne fonctionnent pas correctement si la période du graphique est définie sur autre chose que H1. Pourquoi ? Parce que le robot a été explicitement assigné à une période pour les calculs...
Si vous mettez H4 sur le graphique, par exemple, le robot le rééquilibrera en utilisant des bougies H4 (il en va de même pour les autres horizons temporels).
Merci camarade... J'ai le cerveau tout retourné... J'ai eu une pause significative dans la programmation - j'ai oublié beaucoup du peu que je sais...
---
Une dernière question... Fragment de recherche des max/mini des 8 premières heures d'une journée par terminal :
int h=TimeHour(TimeCurrent()) ; // trouver l'heure terminale actuelle (0...23)
if (h<8) return(0) ; // si pas de H1 des 8 premières bougies du jour = laisser...
double Maxi=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,8,h-7)] ; // détermine les 8 premières bougies maximales du jour.
double Mini=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,8,h-7)] ;
Les deux dernières lignes ne fonctionnent pas correctement si la période du graphique est définie sur autre chose que H1. Pourquoi ? Parce que le robot a été explicitement assigné à une période pour les calculs...
Si vous mettez H4 sur le graphique, par exemple, le robot le rééquilibrera en utilisant des bougies H4 (il en va de même pour les autres horizons temporels).
Ici vous obtenez le nombre de barres max/min : iHighest(NULL,PERIOD_H1,MODE_HIGH,8,h-7)
Et ensuite vous insérez par exemple la barre numéro 2 et vous obtenez :High[2] et sur une autre période vous obtiendrez une valeur différente de H1. Lire à propos de High.
iHigh(NULL,PERIOD_H1, iHighest(NULL,PERIOD_H1,MODE_HIGH,8,h-7))