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

 
first_may:

Bon après-midi.

Pouvez-vous me dire comment obtenir la valeur deTenkan etKijun sur la bougie précédente dans mql5?

Veuillez consulter l'exemple pouriIchimoku.
 
Karputov Vladimir:
Veuillez consulter l'exemple pouriIchimoku.

Je regardais avant de poser la question. Dans mql4 c'était plus facile, par exemple sur le dernier chandelier

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

Et ici j'ai compris qu'un objet est créé

handle=iIchimoku(name,period,tenkan_sen,kijun_sen,senkou_span_b);

Mais comment en tirer la valeur tenkan, je n'arrive pas à comprendre :(. Je veux une simple intersection tenkan et kijun à suivre et c'est tout.

 
first_may:

Je regardais avant de poser la question. Dans mql4 c'était plus facile, par exemple sur le dernier chandelier

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

Et ici j'ai compris qu'un objet est créé

handle=iIchimoku(name,period,tenkan_sen,kijun_sen,senkou_span_b);

Mais comment en tirer la valeur tenkan, je n'arrive pas à comprendre :(. Je veux une simple intersection de tenkan et kijun et c'est tout.

Voulez-vous faire le suivi dans un indicateur ou dans un EA ?
 
Karputov Vladimir:
Voulez-vous faire le suivi dans un indicateur ou dans un EA ?
Dans l'EA. Sortir le formulaire d'alertes avec du son.
 
first_may:
Dans le conseiller. Sortie du formulaire d'alerte avec son.
Regardez la fonction CopyBuffer().
 
Tapochun:
Regardez la fonction CopyBuffer().

Dans l'exemple

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price) ; - l'objet est créé

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0) ; - remplit le tableauMABuffer avec les valeurs dema_handle

Et maintenantnous pouvons obtenir des valeurs deMABuffer ?

 
first_may:

Dans l'exemple

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price) ; - l'objet est créé

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0) ; - remplit le tableauMABuffer avec les valeurs dema_handle

Et maintenantnous pouvons obtenir des valeurs deMABuffer ?

Oui. Dans MABuffer, en utilisant la fonction CopyBuffer() vous obtenez les valeurs de MA sur l'intervalle spécifié. MABuffer est, bien sûr, un tableau.

 
Tapochun:

Oui, dans MABuffer vous avez obtenu les valeurs MA sur l'intervalle que vous avez spécifié avec la fonction CopyBuffer(). MABuffer, bien sûr, est un tableau.

Et vous devez faire tout cela correctement dans la procédure

intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

Même si je veux afficher la valeur à l'écran ?

 
La longueur standard de la chaîne est de 0 à 255 caractères. Je lis une chaîne de caractères du fichier ligne par ligne via FileReadString sans paramètre de longueur ( longueur=0 par défaut ) .C'est-à-dire que la chaîne est lue depuis la position actuelle jusqu'au caractère de saut de ligne "\r\n". Que faire dans le cas où une ligne d'un fichier prend plus de 255 caractères (et c'est possible assez souvent). Je ne veux pas décomposer la chaîne en plusieurs parties, car les chaînes sont strictement structurées (le fichier contient du code html). L'idée est de lire d'abord le fichier entier ligne par ligne dans le tableau, puis de l'analyser et de sélectionner les informations dont j'ai besoin. Si les lignes se divisent, l'analyseur syntaxique cessera de fonctionner, car les signes d'information nécessaires peuvent se séparer et se retrouver dans différentes lignes de lecture. Pas de longue chaîne( D'autres idées ?
 
first_may:

Et tout cela est fait correctement dans une procédure

intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

Même si je veux afficher la valeur à l'écran ?

Tout dépend de la logique de l'indicateur. Le plus souvent, oui, dans la fonction OnCalculate().
Raison: