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

 
E_Ghazaryan:
Ouais, c'est ça =D )))) Déjà attaché.)))

Tous ces paramètres doivent être listés après la virgule dans iCustom() après le nom de l'indicateur, et après eux deux autres paramètres : le numéro de tampon et le numéro de barre, d'où les données sont prises. I.e :

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

Toutes les valeurs listées peuvent être définies par des variables externes de l'EA et les noms de ces variables peuvent être écrits dans iCustom() à la place des valeurs codées en dur.

 

Pouvez-vous me dire pourquoi :

double d = 0,07 ;

d = NormalizeDouble(d,2) ;

dans les deux cas d== 0.07000000000000001

comment laisser 2 décimales ?

 
pusheax:

Pouvez-vous me dire pourquoi :

double d = 0,07 ;

d = NormalizeDouble(d,2) ;

dans les deux cas d== 0.07000000000000001

comment laisser 2 décimales ?


Notez que lors de la sortie vers le Journal à l'aide de Print(), un nombre normalisé peut contenir un plus grand nombre de décimales que prévu. Par exemple,

   double a=76.671;             // нормализованное число с 3 знаками после запятой
   Print("Print(76.671)=",a);   // выведем его как есть
   Print("DoubleToString(a,8)=",DoubleToString(a,8)); // выведем с заданной точностью

sera affiché dans le terminal :

  DoubleToString(a,8)=76.67100000

  Print(76.671)=76.67100000000001


C'est-à-dire que pour l'impression, la sortie de valeurs supplémentaires n'est pas un problème.

Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Karputov Vladimir:


Notez que le nombre normalisé, lorsqu'il est sorti dans le journal à l'aide de Print(), peut contenir plus de décimales que prévu. Par exemple,

sera affiché dans le terminal :


Ainsi, pour l'impression, l'édition de valeurs supplémentaires ne pose pas de problème.

Merci, c'est juste que lorsque j'essaie d'ouvrir une position avec un lot de 0.07 il affiche une erreur (je pensais que c'était la raison), donc je vais essayer d'en savoir plus.
 
pusheax:
Merci, c'est juste que lorsque j'essaie d'ouvrir une position avec un lot de 0.07 il donne une erreur (je pensais que c'était le problème), ça doit être autre chose, je vais regarder plus loin.
La première chose à faire est de regarder la description du numéro d'erreur. Cela permettra de raccourcir le chemin de recherche.
 

bonne soirée

J'ai déclaré un tableau dynamique

double all_order[][10] ;

J'ai redéfini dans OnInit

ArrayResize(all_order, 20) ;

J'entre des données dans la fonction

void OR_spisok(double a0, double a1, double a2, double a3, double a4, double a5)

{

int a10=int(a0) ;

all_order[a10][0]=a0;

all_order[a10][1]=a1;

all_order[a10][2]=a2;

all_order[a10][3]=a3;

all_order[a10][4]=a4;

all_order[a10][5]=a5;

}

trois lignes, ça marche bien, à 4, ça coince

2015.10.09 20:13:47.908 3102 EURUSD,H1 : tableau hors limites dans '3102.mq4' (393,10)

C'est 393,10 :

all_order[a10][0]=a0;

Qu'est-ce qui ne va pas ?

Suppression de la ligne#property strict

Le script fonctionne, puis-je continuer sans cette ligne ?

 
pr0gre5:

bonne soirée

a déclaré un tableau dynamique


Suppression de la ligne#property strict

Le script fonctionne, puis-je continuer sans cette ligne ?

Oui
 
Artyom Trishkin:

Tous ces paramètres doivent être listés après la virgule dans iCustom() après le nom de l'indicateur, et après eux deux autres paramètres : le numéro de tampon et le numéro de barre, d'où les données sont prises. I.e :

iCustom(Symbol(), Period(), "_MTF_ADX3", 0, 500, 6, 6, 8, 14, 6, 6, 2, true, false, buffer_number, bar_number).

Toutes les valeurs listées peuvent être définies par des variables EA externes et écrire les noms de ces variables dans iCustom() au lieu des valeurs codées en dur.

Je vous remercie de votre réponse. Mais le fait est que je l'ai fait au début, mais quand j'ai reçu des valeurs erronées, j'ai décidé de supprimer les paramètres de iCustom, pour que le Conseiller Expert utilise les paramètres standards de l'indicateur. Dans les deux cas, cependant, l'EA obtient des valeurs erronées. Par exemple, Alert donne 30.32362 pour la ligne bleue, mais quand je regarde le graphique indicateur, il y a 22.3320 au même endroit. Et il en va de même pour les autres lignes.
 
E_Ghazaryan:
Merci pour la réponse. Mais le fait est que je l'ai fait au début, mais quand j'ai obtenu des valeurs erronées, j'ai décidé de supprimer les paramètres de iCustom pour que l'EA utilise les paramètres standard de l'indicateur. Cependant, dans les deux cas, le conseiller expert reçoit des valeurs erronées. Par exemple, Alert donne 30.32362 pour la ligne bleue, mais quand je regarde le graphique indicateur, il y a 22.3320 au même endroit. Et il en va de même pour les autres lignes.
Montrez-moi le code où vous prenez les données de l'indicateur.
 
Artyom Trishkin:
Montrez-moi le code où vous prenez les données de l'indicateur.

Le code était gros. Mais pour découvrir quel est le problème, le conseiller expert ne fonctionne pas selon les règles, j'ai coupé cette partie en une autre et j'ai commencé à la tester.

double Ind_Blue=iCustom(NULL, 0, "_MTF_ADX3",1,0) ;

double Ind_Red=iCustom(NULL, 0, "_MTF_ADX3",2,0) ;

Alert(" Ind_Blue= " , Ind_Blue , " Ind_Red= " , Ind_Red) ;

Je joins également le fichier du conseiller expert. Je ne veux pas vous faire perdre votre temps, mais je n'arrive pas à trouver le problème.

Et il existe un indicateur similaire avec le même problème (Adx mtf). J'ai un fichier mq4 pour ça. Mais il ne semble pas y avoir de problème dans le code.

Dossiers :
_MTF_ADX3.ex4  5 kb
Adx_mtf.ex4  21 kb
Adx_mtf.mq4  6 kb
Raison: