[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 270

 
1Rakso >> :

Pourquoi le signal ne fonctionne-t-il pas ?

Je voulais définir la zone de filtrage en pips à partir du plus haut sommet et du plus bas... le signal ne fonctionne pas qu'est-ce que je fais mal ?

Je ne sais pas vraiment ce que vous cherchez ici...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

si j'ai un haut et un bas de N barres, je le cherche comme ceci

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

où hibar et lobar sont le nombre de barres sur lesquelles le haut et le bas sont recherchés.

tf_100 - Période de temps à laquelle les valeurs max et min sont recherchées.

1 - la recherche commence à partir de la barre 1, si vous voulez qu'il cherche sur la barre zéro, vous devez mettre 0.

 
Swan >> :


Ohhhh, je suis si embarrassée, je suis si embarrassée.
 
Dimi >> :

Maintenant, voici la question : comment puis-je obtenir la valeur 20 de ce tableau dans les variables ?

bind double Max_array[20] ; en dehors de la fonction (globalement), si nécessaire, également statique

 
alsu >> :

D'abord, mettez le code dans un ordre logique.

ArraySetAsSeries(Max_array,true) - pourquoi ?

for(c=1 ; c <= total_c ; c++) - les tableaux sont indexés de 0 à total_c-1.

Honnêtement, je ne comprends pas pourquoi vous n'aimez pas la logique... Ici ArraySetAsSeries(Max_array,true) Définit la direction d'indexation dans le tableau. Ou y a-t-il un problème ?

 
Dimi >> :

Pour être honnête, je ne comprends pas pourquoi vous n'aimez pas la logique. ArraySetAsSeries(Max_array,true) définit ici le sens d'indexation dans le tableau. Ou est-ce que c'est quelque chose de mal ???


Il ne s'agit pas d'une erreur bien sûr, mais simplement d'une chaîne logiquement inutile. ArraySetAsSeries a du sens lorsque la taille du tableau est augmentée (par exemple, à chaque nouvelle barre), le nouvel élément aura alors l'indice 0. Dans le cas statique, cependant, l'ordre dans lequel les éléments sont disposés en mémoire ne fait aucune différence. Concernant la deuxième remarque : dans un tableau de taille N, le dernier élément a l'indice N-1. Code correct for(c=0 ; c < total_c ; c++)

 
alsu >> :

Il ne s'agit pas d'une erreur bien sûr, mais simplement d'une chaîne logiquement inutile. ArraySetAsSeries a du sens lorsque la taille du tableau est augmentée (par exemple, à chaque nouvelle barre), le nouvel élément aura alors l'indice 0. Dans le cas statique, cependant, l'ordre dans lequel les éléments sont disposés en mémoire ne fait aucune différence. Concernant la deuxième remarque : dans un tableau de taille N, le dernier élément a l'indice N-1. Code correct for(c=0 ; c < total_c ; c++)

Merci. Maintenant je comprends l'erreur. Mais je n'y arrive toujours pas avec le double Max_array[20] ;... Laissez-moi vous expliquer un peu différemment. Cette fonction recherche la valeur maximale du RSI sur les 20 dernières barres. Je veux qu'elle recherche la valeur maximale sur ce nombre de barres qui sera calculée par une autre fonction. C'est-à-dire qu'à chaque nouvelle barre, ce nombre de barres calculées changera. Cela peut être 10, cela peut devenir 20 ou 30..... Comment l'implémenter dans le code ? La fonction de calcul de la barre est prête, comment l'insérer maintenant à la place de ce nombre 20 dans ce tableau double Max_array[20] ; ? ???

 
Dimi >> :

Merci, je comprends maintenant l'erreur. Mais ce double Max_array[20] ; ne m'atteint pas encore... Laissez-moi vous expliquer d'une manière légèrement différente. Cette fonction recherche la valeur maximale du RSI sur les 20 dernières barres. Je veux qu'elle recherche la valeur maximale sur ce nombre de barres qui sera calculée par une autre fonction. C'est-à-dire qu'à chaque nouvelle barre, ce nombre de barres calculées changera. Cela peut être 10, cela peut devenir 20 ou 30..... Comment l'implémenter dans le code ? La fonction pour calculer les barres est prête, comment l'insérer maintenant à la place de ce nombre 20 dans ce tableau double Max_array[20] ; ? ???


très simple :

double IsMaxRSI(int total_c) {
   ...
   double Max_array[];  
   ArrayResize( Max_array, total_c);
   ...
}
виноват, код куда-то выпал
 
Dimi >> :

Je ne sais pas vraiment ce que vous cherchez ici...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

si max et min pour N barres, il est recherché comme ceci

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

où hibar et lobar sont le nombre de barres auxquelles le haut et le bas sont recherchés.

tf_100 - TimeFrame, à laquelle le maximum et le minimum sont recherchés.

1 - la recherche commence avec 1 barre, si vous voulez qu'elle cherche sur la barre zéro, vous devez mettre 0.

Merci je vais essayer votre variante, à propos des barres je cherchais un niveau de 50 à 100 barres, c'est pourquoi je les ai mis en externe pour l'optimisation.

j'ai trouvé l'erreur, je n'ai pas inséré le tableauf dans les variables globales et j'ai mis la valeurf dans les variables externes dans l'ordre tf))))

extern int tf_100  =   3; //)))

int tf[10]={0,1,5,15,30,60,240,1440,10080,43200};//массив таймфрейма забыл его вставить)))

double hi_100 = High[iHighest(Symbol(), tf[ tf_100], MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf[ tf_100], MODE_LOW, lobar, 1)];

Je suis vraiment stupide, des trucs basiques comme .......

 
alsu >> :

très simplement :

Merci beaucoup ! !! Il semble que cela fonctionne ! !!

Comme sur des roulettes, merci encore ! !! C'était vraiment facile.
 

Mes amis, bon après-midi.


Si vous voulez bien me dire comment résoudre de telles difficultés :


Je suis en train d'écrire l'une de mes premières EA, et j'ai rencontré ces difficultés :


1) Est-il possible de "distinguer les ordres" pour la même devise, mais effectués sur des TF différents ?

(Par exemple, je trade un EA sur la même paire de devises, sur H4 et M30.... J'ai fait un trade sur H4, et les indicateurs montrent un mouvement sur ce TF, mais ce trade a été fermé à cause d'un signal de clôture sur M30... et dans mon Expert Advisor "utiliser les données de plusieurs TFs" n'est pas fourni...)

En d'autres termes, pourrais-je, par programmation, distinguer ces transactions sur H4 et M30 ?


2) En écrivant le conseiller expert, j'ai eu une pensée évidente :) "Les signaux pour fermer une position, et les signaux pour ouvrir la position opposée en inversant" ne sont pas toujours bons.....

Souvent, beaucoup de profits sont perdus avant que le signal contraire ne soit généré...

J'ai donc décidé d'utiliser un stop suiveur et de former un objectif en utilisant Fibonacci.


Pouvez-vous m'indiquer comment définir un objectif (dans un EA) comme point de référence pour un certain niveau de Fibonacci lorsque l'on passe un ordre pour une transaction ?


3) Il existe un indicateur : BrainTrend1StopN. Veuillez m'indiquer comment "tirer" les stops au niveau des "points" générés par cet indicateur.


Merci beaucoup d'avance.
Dossiers :
Raison: