[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 235
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
Pour comprendre ce qui se passe, vous devez sortir les calculs sur l'imprimante :
et analyser les résultats.J'AI RÉALISÉ QUE J'AVAIS DÛ MAL COMPRENDRE QUELQUE CHOSE.
Comment j'ai imaginé l'exécution de la condition dans l'en-tête if.
-le programme obtient la valeur de la variable Bid (0.86084)
-fait passer la valeur de la variable Bid (0.86084) à la variable massiv[S] (0.85375)
-Mappe la différence obtenue 0.00709 à la constante 0
-Si la différence est > 0, le contrôle dans le corps de l'instruction if n'est pas donné et la commande n'est pas ouverte.
-Si la différence <= 0, le contrôle est transmis au corps de l'instruction if et la commande est ouverte.
Comme j'ai imaginé l' exécution de la fonction ArrayBsearch( massiv, value,WHOLE_ARRAY, 0, MODE_ASCEND)
ASTUCE : Renvoie l'indice du premier élément trouvé dans la première dimension du tableau.
S'il n'y a pas d'élément avec la valeur spécifiée dans le tableau, la fonction retournera l'index de l'élément le plus proche par la valeur, entre lequel se trouve la valeur recherchée.
-La fonction obtient une valeur égale au prix du dernier tick (Bid-0.86084).
-la fonction parcourt les valeurs du tableau de la plus petite à la plus grande - elle ne trouve pas la correspondance complète entre n'importe quelle valeur du tableau et la valeur en question
- comme il n'y a pas de valeur 0.86084 dans le tableau, la fonction retourne la plus petitevaleur la plus proche du tableau. c'est-à-dire 0 .820864(premier),0.81074,0.85375,0.80084,0.81084,0.86088(dernier) c'est-à-dire que 0.85375 est la valeur la plus proche de 0.86084 la plus petite valeur. Entre 0.85375 et 0.86088 est la valeur que vous recherchez=0.86084
=====================================================================================================
Lesparamètres de votre fonction imprimer en plus de la valeur de l'élément massiv[S] sont : massiv[S-1] et massiv[S+1]. A partir de la valeur de massiv[S]( 0.85375) vous soustrayez d'abord 1, puis vous ajoutez 1.
Je n'ai pas lu si dans l'en-tête (ou dans ArrayBsearch()) de arrayiv[S] la valeur 1 est soustraite d'abord, et ensuite 1 est ajouté.
Je vous serais reconnaissant de bien vouloir m'expliquer ce point ou de me donner un lien.
Merci.
Lafonction print a d'autresparamètres - massiv[S-1] et massiv[S+1]. Vous voulez soustraire 1 de la valeur massiv[S]( 0.85375) et ajouter 1 après.
Je n'ai pas lu dans un manuel MQL que si l'en-tête (ou ArrayBsearch() ) soustrait d'abord 1 à la valeur massiv[S] et ensuite lui ajoute 1.
Je vous serais reconnaissant de bien vouloir m'expliquer ce point ou de me donner un lien.
Merci.
Imprimer dans ce lien.
http://clip2net.com/s/4MRjJe
J'ai remarqué que
- la valeur de massiv[0] (probablement [S]) est la première valeur du tableau pour commencer.
- la valeur de massiv[1] (probablement [S+1] ) est la deuxième valeur du tableau, c'est-à-dire qu'elle suit la valeur à partir de laquelle le tableau commence.
-Ces valeurs sont répétées chaque fois que PRINT est rencontré.
=============================================
- en l'an 2000, la valeur du prix comportait 4 chiffres de plus après le point.
- dans le testeur sur le tableau - 5 chiffres
-dans le testeur dans le résultat - 5 signes
-dans le testeur dans le journal dans l'imprimante - 4 caractères
Et j'ai 5 chiffres dans le tableau.
QUESTION - Combien de chiffres le logiciel lit-il ?
Imprimer dans ce lien.
https://www.mql5.com/go?link=http://clip2net.com/s/4MRjJe
Vous ne voyez rien là ? ??
Je constate que ArrayBsearch() renvoie 0 (comme indice d'élément) PARTOUT. Dans la 0ème cellule de votre tableau se trouve le nombre 1.0408. Revenons au code :
Maintenant, substituez les valeurs des variables obtenues dans cette condition (sur la carite Bid est dans la gamme 0.8-0.9, prenons le maximum de cette gamme - 0.9) : si (0.9000 - 1.0408 <= 0) OrderSend(). La condition est remplie DROIT !!! Recherchez les erreurs en complétant votre tableau. Vous n'avez vraisemblablement pas prêté attention à cette clause dans la fonction ArrayBsearch() :
Remarque: la recherche binaire ne traite que les tableaux triés. La fonction ArraySort() est utilisée pour trier un tableau numérique.
P.S. L'impression doit de préférence être fournie non pas sous forme d'image, mais en sélectionnant simultanément plusieurs lignes (en utilisant SHIFT - si vous ne savez pas comment faire) de cette même impression (10-20 lignes suffisent) dans la fenêtre du terminal, puis en copiant et collant les lignes sélectionnées dans votre message sous forme de code en utilisant le bouton SRC.
P.P.S. Je viens de remarquer l'erreur de syntaxe évidente - cette ligne devrait être placée en dehors (avant) de la fonction start() :
#include <MASSIV.mqh>
J'ai remarqué que
-dans le testeur dans le journal dans l'imprimante- 4 caractères
Lire la documentation https://docs.mql4.com/ru/common/print
Les tableaux ne peuvent pas être passés à Print(). Les tableaux doivent être imprimés élément par élément.
Les données de type double sont imprimées avec 4 chiffres décimaux après le point. Pour obtenir plus de précision, il faut utiliser la fonction DoubleToStr().
Vous n'avez rien vu là-bas ? ??
Je constate que ArrayBsearch() renvoie 0 (comme indice d'élément) PARTOUT. Dans la 0ème cellule de votre tableau se trouve le nombre 1.0408. Retour au code :
Maintenant nous substituons les valeurs obtenues des variables dans cette condition (sur la carite Bid est dans la gamme de 0.8-0.9, prenons le maximum de cette gamme - 0.9) : si (0.9000 - 1.0408 <= 0) OrderSend(). La condition est remplie DROIT !!! Recherchez les erreurs en complétant votre tableau. Vous n'avez vraisemblablement pas prêté attention à cette clause dans la fonction ArrayBsearch() :
Remarque: la recherche binaire ne traite que les tableaux triés. La fonction ArraySort() est utilisée pour trier un tableau numérique.
Je ne suis pas tout à fait sûr de ce que signifie la recherche binaire. S'agit-il d'une recherche dans un tableau à deux dimensions ? Mais j'en ai une unidimensionnelle.
Triez le tableau, si vous ne l'avez pas fait jusqu'à présent, et pour contrôler la préparation correcte dans init(), n'imprimez pas son contenu, pas tous mais les 20-50 premiers éléments.
P.S. Vous voyez l'identité de binaire et de bidimensionnel ? Le terminal voit vos chiffres en code "binaire" et pour un fonctionnement correct de la fonction ArrayBsearch(), il faut un tri préalable du tableau.