Questions des débutants MQL5 MT5 MetaTrader 5 - page 419

 
-Aleks-:
Deux ans - en testeur :) Eh bien, ça fait un an qu'il tourne sur la démo... Beaucoup de bugs, quand j'ai dû le connecter à cause de classes externes... Et maintenant il y a un tel bug, que je ne sais pas comment corriger - je vais juste augmenter la taille du tableau d'un chiffre, pour le moment. Pourquoi n'y a-t-il pas de taille automatique, comme pour un tampon graphique, ou y en a-t-il une ?

Essayez comme ça.

Initialiser le tableau OrderBU[1].

Augmentez d'abord la taille du tableau ( ArrayResize(OrderBU,NorderBU+1) ), puis OrderBU[NorderBU]=OrderTicket();NorderBU++ ;

 
new-rena:

Essayez comme ça.

Initialiser le tableau OrderBU[1].

Augmentez d'abord la taille du tableau ( ArrayResize(OrderBU,NorderBU+1) ), puis OrderBU[NorderBU]=OrderTicket();NorderBU++ ;

Merci - je vais expérimenter à mon aise.
 
Veuillez me conseiller sur la manière d'implémenter la chose suivante dans le code.
Il y a une variable de base A, si elle est inférieure à zéro, alors nous utilisons cinq variables supplémentaires - les valeurs sont attribuées à partir de la fonction d'appel de l'indicateur - iCustom.
Après avoir reçu les valeurs, nous devons les classer - trouver les valeurs supérieures et inférieures à la variable A et définir à partir des deux groupes - valeur maximale, minimale, moyenne.
Je pense qu'il est nécessaire d'utiliser un tableau, mais je ne comprends pas bien comment.
 

Pouvez-vous nous conseiller sur ce point ?

Par exemple, nous avons un indicateur Williams Percent Range (%R) sur un graphique et nous faisons glisser l'indicateur On Balance Volume (OBV) dans sa fenêtre depuis le navigateur.

https://charts.mql5.com/8/675/xauusd-h4-metaquotes-software-corp.png

Le %R fonctionne dans la plage 0 -100%, l'OBV n'a pas de référence spécifique.

Lorsque l'OBV est dans la fenêtre %R, nous voyons visuellement qu'elle va au-delà de -20 ou -80%.

Comment pouvons-nous obtenir un OBV supérieur à -20% ou inférieur à -80% dans notre EA ?

Comment lier l'OBV dans l'indicateur personnalisé à la gamme de 0 -100% ? La normaliser par rapport à elle (gamme) ? Comment cela peut-il être fait ?

Je comprends que vous n'avez pas besoin de normaliser l'OBV en %R (l'image sera différente).

C'est peut-être élémentaire, mais je ne l'ai pas rencontré.

 
-Aleks-:
Veuillez me conseiller sur la façon d'implémenter la chose suivante dans le code.
Il y a une variable de base A, si elle est inférieure à zéro, alors nous utilisons cinq variables supplémentaires - les valeurs sont attribuées à partir de la fonction d'appel de l'indicateur - iCustom.
Après avoir reçu les valeurs, nous devons les classer - trouver les valeurs supérieures et inférieures à la variable A et définir à partir des deux groupes - valeur maximale, minimale, moyenne.
Je pense que nous devrions utiliser le tableau mais je ne comprends pas bien comment.

si (p1>p2&&p1>p3) , si (p2>p1&&p2>p3) , si (p3>p2&&p3>p1)

Je le fais de cette façon,

 

J'ai besoin d'un paramètre de lot flottant, le premier lot est fixé par l'utilisateur, ensuite ce paramètre n'est plus adressable, et l'EA travaille lui-même et en cas de perte il est augmenté du lot maximum spécifié dans le programme (ou d'une variable externe), en cas de profit il est réduit du montant spécifié .

Si j'écris le paramètre dans le "Init", l'EA cessera d'accéder à la variable externe lot ?

ou comment dois-je faire ?

il s'agit d'une expression approximative .

 
Bonjour. Pouvez-vous me dire comment utiliser les données des actualités dans mon EA ? Ai-je besoin d'un indicateur pour cela, ou l'EA peut-il trouver les nouvelles importantes par lui-même ?
 
Leanid Aladzyeu:

si (p1>p2&&p1>p3) , si (p2>p1&&p2>p3) , si (p3>p2&&p3>p1)

Je le fais de cette façon,

Ce n'est pas pratique, surtout avec un grand nombre de paramètres...

La solution via le tableau est intéressante. Particulièrement intéressant : comment trouver la valeur la plus proche d'une variable en faisant la moyenne du nombre total de valeurs.

 
first_may:

Bonsoir. J'essaie d'écrire un EA simple sur le croisement de tenkan et kinjun. Voici le code :

void OnTick()

void OnTick()

{

TradeSignal_20() ;

}


int TradeSignal_20()

{

int sig=0 ;


if(h_ich==INVALID_HANDLE)

{

h_ich=iIchimoku(Symbole(),Période(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb) ;

retour(0) ;

}

sinon

{

si (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0) ; // TENKANSEN_LINE

si (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0) ; // KIJUNSEN_LINE

if (!ArraySetAsSeries(ich1_buffer,true)) return(0) ;

if (!ArraySetAsSeries(ich2_buffer,true)) return(0) ;

}

//--- vérifier la condition et fixer la valeur pour sig

if(ich1_buffer[1]>ich2_buffer[1]) sig=1;

else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1 ;

sinon sig=0 ;

if (ich1_buffer[1]>ich2_buffer[1])

if (ich1_buffer[2]<ich2_buffer[2])

Alert(Symbol()+" : achat") ;

if (ich1_buffer[1]<ich2_buffer[1])

if (ich1_buffer[2]>ich2_buffer[2])

Alert(Symbol()+" : sale") ;

//--- retourner le signal de commerce

retour (sig) ;

}

//+------------------------------------------------------------------+

Comment faire pour que l'alerte ne soit appelée qu'une seule fois et non constamment ?

Ne l'exécutez pas à chaque tic, mais selon les besoins.
 
Vasiliy Smirnov:
N'exécutez pas tous les tics, mais selon les besoins.
Et comment cela devrait-il être ? Quand un nouveau bar s'ouvre - alors faites un chèque pour un nouveau bar...
Raison: