Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1738
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
Votre code imprime 0, pas -1...
Peut-être que -1 est imprimé ailleurs, le plus probable est que tout le code soit dans les imprimantes...
Oui, vous avez raison, chaque étape est pré-imprimée pour voir où il a "calé".
L'exemple est incorrect, désolé, le code lui-même est gros.
Mais, la solution de Konstantin a résolu le problème ! J'ai vraiment échangé les i-- et les contrôles de zéro partout, et maintenant la logique fonctionne comme elle le devrait, au lieu de -1 elle sort 0 ou 1. (avant 0 ou -1, ce dernier étant une erreur immédiate).
Votre code imprime 0, pas -1...
Il est possible que -1 soit imprimé ailleurs, le plus probable est que tout le code soit dans les imprimantes...
Avant d'essayer de résoudre le problème, vous devez l'identifier... Assurez-vous qu'elle est là et localisez-la avant de la résoudre...
Prenez un stylo et une feuille de papier. Et écrivez comment la boucle compte. Dans ce code.
vérification de
ne fonctionnera jamais dans ce code. À moins que vous n'ayez initialement défini
une valeur impaire. Si c'est pair, alors ce code
à
viendra avec une valeur impaire.
Avant d'essayer de résoudre un problème, vous devez l'identifier... S'assurer qu'il est là et le localiser, puis le résoudre...
Je vois ce que vous voulez dire.
Prenez un stylo et une feuille de papier. Et écrivez comment le cycle est compté. Dans ce code.
Pourquoi prendrais-je un stylo et du papier si la condition dit que l'impression =-1, mais en fait (j'ai vérifié) elle imprime comme 0, c'est-à-dire que l'exemple est donné incorrectement. Et il est impossible de donner une réponse correcte à un exemple incorrect...
Pourquoi prendrais-je un stylo et du papier si la condition dit que l'impression =-1, mais en fait (j'ai vérifié) elle imprime comme 0, donc l'exemple est incorrect. Et il est impossible de donner une réponse correcte à un exemple incorrect...
Le zéro est imprimé à partir de cette ligne
et non à partir de la sortie de contrôle et de rupture.
En général, il est plus correct d'écrire
parce que les tableaux commencent avec un index zéro
Le zéro est imprimé à partir de cette ligne
pas du contrôle de la pause et de la sortie.
0 est imprimé à partir de cette ligne, pour le code qui a été donné...
Print(i);
La question n'était pas de savoir pourquoi break ne fonctionne pas, la question était de savoir pourquoi l'imprimante imprimait -1... c'est tout. Et peu importe que le début du i soit pair ou impair, il n'imprime jamais -1....
Essayant Close[], mais l'indice ne donne pas plus de 5000.
Pouvez-vous me dire comment calculer les ticks ou les bougies sur une longue période de temps ? (Une année, par exemple).
J'ai essayé Close[], mais l'index ne donne pas plus de 5000.
Les tiques ou les bougies font une telle différence, c'est pour le moins effrayant...
Il y a tellement de différence entre les tiques et les bougies que c'est effrayant de dire...
Par exemple, un EA, si vous lui spécifiez une période quelconque, dans le testeur, il ira par ticks ou par barres M1, tout le monde en tiendra compte.
Mais si vous prenez un EA qui va dans l'historique long en temps réel et prend des données à partir de là, je ne comprends pas comment l'organiser. Le terminal ne donne pas plus de 5000 bougies.
UPD
Je vais essayer d'utiliser ce truc, le code est sur le net.
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Étrange. Tout d'un coup, ça marche. Même la millionième barre est vérifiée. Je n'ai rien fait, j'ai lu de la documentation, bu du thé. Je viens de le relancer et ça a marché. J'ai eu l'erreur toute la journée, bien que j'avais téléchargé l'historique et modifié les paramètres hier.
Donc, il n'y avait pas non plus besoin de vérifier le code supplémentaire (ci-dessus).
MT4 est un peu capricieux. Ou peut-être que forex chif possède une telle fonctionnalité. Je vais devoir mettre le standard au lieu de celui du courtier.
Par exemple, un Conseiller Expert, si vous lui donnez n'importe quelle période, il passera dans le testeur par ticks ou par barres M1, tout le monde en tiendra compte.
Mais si vous prenez un Conseiller Expert, qui en mode temps réel va dans l'historique long et prend des données à partir de là, je ne comprends pas comment l'organiser. Le terminal ne donne pas plus de 5000 bougies.
UPD
Je vais essayer d'utiliser ce truc, le code est sur le net.
MqlRates rates[];
int copied=CopyRates(NULL,0,0,100,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else Print("Скопировано ",ArraySize(rates)," баров");
UPD
Étrange. Tout d'un coup, ça marche. Même la millionième barre est vérifiée. Je n'ai rien fait, j'ai lu de la documentation, bu du thé. Je viens de le relancer et ça a marché. J'ai eu l'erreur toute la journée, bien que j'avais téléchargé l'historique et modifié les paramètres hier.
Donc, il n'y avait pas non plus besoin de vérifier le code supplémentaire (ci-dessus).
MT4 est un peu capricieux. Ou peut-être que forex chif possède une telle fonctionnalité. Je vais devoir mettre le standard, pas le courtage.
Le premier appel à CopyRates() a lancé le pompage des données historiques (ne l'exécutez pas pendant une semaine et vous obtiendrez à nouveau la même chose, enfin, peut-être pas une semaine, mais un certain temps).
Il vous suffit de vérifier la quantité de données présentes sur le serveur et de comparer la quantité disponible au conseiller expert. S'il est inférieur à ce qui est requis - laissez l'EA jusqu'au prochain tick. Au prochain tic, vérifiez à nouveau. Si, après un certain nombre de tentatives, l'historique requis n'est pas obtenu, cette erreur doit être traitée comme il se doit.