[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 409

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
pas de
Le problème ici est simplement dans la boucle. i va de 0 à 2. Vous voulez 2 à 0.
Montrez-moi un exemple s'il vous plaît, je l'ai fait Ça n'a pas marché.
sss2019:
Montrez-moi un exemple s'il vous plaît, je l'ai fait. Ça n'a pas marché.
J'ai fait le script comme ceci
En conséquence, Print produit le résultat suivant
0 4
1 4
C'est tout, pour une raison quelconque la boucle n'imprime pas
2 4
3 4
J'ai ajouté à la boucle OrderSelect(i, SELECT_BY_POS, MODE_TRADES au lieu de I 0, c'est-à-dire que le premier ordre est toujours sélectionné et le script fonctionne correctement. Il s'avère que lorsque la boucle supprime deux commandes, elle essaie de sélectionner la troisième commande alors qu'il n'y a que deux commandes dans la liste.
J'ai fait le script comme ceci
En fin de compte...
S'il te plaît, montre-moi un exemple, je l'ai fait.
Ça n'a pas aidé.
parce que tu dois encore réfléchir.
Aidez-moi à résoudre ce dilemme
Le script recherche la distance maximale entre les lignes. Il sort toutes les valeurs sur toutes les barres, la plage maximale est de 1.6235 sur une barre et 1.6208 sur l'autre.
J'essaie d'imprimer Print(maxrange) ; il imprime 0.086, je ne comprends pas pourquoi, je divise par Point.
Aidez-moi à résoudre ce dilemme
Le script recherche la distance maximale entre les lignes. Il sort toutes les valeurs sur toutes les barres, la plage maximale est de 1.6235 sur une barre et 1.6208 sur l'autre.
J'essaie de sortir Print(maxrange) ; il retourne 0.086, je ne comprends pas du tout pourquoi, je divise par Point
Il ne s'agit pas d'un dilemme. Un dilemme, c'est lorsque vous ne savez pas laquelle de deux solutions est la meilleure.
Tout d'abord, la fonction iMA() a sept paramètres, et non six. Deuxièmement, vous avez déclaré une variable par la chaîne int i. Et plus loin, la variable i n'est initialisée nulle part avec une valeur. Par conséquent, il est soit nul, soit contient des restes de mémoire de l'activité précédente. Et troisièmement, la boucle while est mal disposée. Disons que la variable i est égale à zéro après l'initialisation. Supposons également que l'expression Ma1 > Ma2 est également vraie. Par conséquent, la ligne while(Ma1 > Ma2) démarrera la boucle. À la prochaine itération de la boucle, nous découvrirons que l'expression (Ma1 > Ma2) n'est plus vraie et la boucle sera terminée. Les variables Ma1 et Ma2 ne contiendront pas la distance maximale - la distance maximale était une fois. Cette condition montrera seulement que Ma1 est maintenant devenu inférieur ou égal à Ma2.
De plus, la variable maxrange sera initialisée avec une valeur uniquement dans la ligne range = (Ma1 - Ma2)/Point ; Et si la condition if(range > maxrange) ne se produisait jamais, parce que vous n'initialisez pas la variable maxrange avec une valeur ailleurs dans le code ? Il s'avère donc que vous comparez le résultat des calculs avec les déchets des cellules de mémoire. Ici, vous avez des impressions incompréhensibles suite à l'exécution du code.
if(range > maxrange) maxrange = range ;
C'est le point, je sortais toutes les valeurs MA dans la boucle et toutes les valeurs sont correctes, c'est-à-dire que toutes les valeurs MA pour cette période ont été recherchées. Mais le calcul est faux à cet endroit - portée = (Ma1 - Ma2)/Point ;
if(range > maxrange) maxrange = range ;
*Point
portée = (Ma1 - Ma2)*Point
*Point
plage = (Ma1 - Ma2)*Point
Le problème est que j'ai sorti toutes les valeurs MA dans la boucle, et toutes les valeurs sont correctes, c'est-à-dire que toutes les valeurs MA pour cette période ont été énumérées. Mais le calcul est faux à cet endroit - portée = (Ma1 - Ma2)/Point ;
if(range > maxrange) maxrange = range ;
Eh bien, vous devez vérifier ce qui est entré. Quelles valeurs de variables sont impliquées dans les calculs ?