[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

 
Bonjour à tous. J'ai une question, plusieurs questions pour être exact, aidez-moi.
1 : Si j'ai un niveau, et si le prix est égal à ce niveau, alors j'ouvre un ordre. La question est de savoir si le prix peut sauter ce niveau, le traverser rapidement et ne pas être égal au niveau que j'ai ou si j'ai un GAP, un ordre sera ouvert là où il devrait être, c'est-à-dire au niveau ?
2 : J'ai des erreurs dans le journal, je veux savoir ce qu'elles signifient. [B]1-Signal - échec de l'analyse des signaux,[/B] [B]2-Centre de données - échec de la connexion [2] et [6][/B] 3-(je ne me souviens pas exactement mais il est indiqué que le système est complètement désactivé lors de la modification de l'ordre) ? Veuillez me conseiller sur ce qu'il faut faire dans ces cas-là ou dans d'autres, merci encore.
 
TarasBY:

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.


 
solnce600:

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.

Vous appliquerez votre raisonnement après avoir réalisé l'impression. Avez-vous fait l'impression (vous ne devez rien changer) ? - Montre-moi ce qu'il y a dedans.
 

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 ?

 

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 :

if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))

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> 
 
solnce600:

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

void Print( ...)
Imprime un message dans le journal des experts. Les paramètres peuvent être de n'importe quel type. Le nombre de paramètres ne peut pas dépasser 64.

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().
 
TarasBY:

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.
 
comment ajuster la période Fibonacci dans mt 4 200 144 89 55 34
 
solnce600:
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.