double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) { int n=0; for(int i=shift; i<count_find; i++) { //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i); double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits); if(price_fractal>0) { n++; if(n==number_fractal) { bar_fractal=i; return(price_fractal); } } } return(EMPTY_VALUE); }
Veuillez noter que dans mode_fractal vous devez écrire le numéro de tampon de cet indicateur personnalisé - pour le 0 supérieur, pour le 1 inférieur. Sinon, dans les fractales standard, les valeurs des identifiants pour les fractales ne coïncident pas avec les valeurs de tampon de cet indicateur personnalisé :
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Ne pas appeler d'un autre indicateur :)
Ou montrez comment vous le faites.
Je l'appelle depuis cette fonction
int n=0;
for(int i=shift; i<count_find; i++) {
//double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
if(price_fractal>0) {
n++;
if(n==number_fractal) {
bar_fractal=i;
return(price_fractal);
}
}
}
return(EMPTY_VALUE);
}
Et à son tour, de ce
if(count_fractals<1) return(false);
double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
int n=1, dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
for(int i=n; i<=count_fractals; i++) {
double price_fractal=GetPriceFractal(symbol,timeframe,mode_fractal,count_find,n,bar_fractal,shift);
double result_compare=fabs(NormalizeDouble(price_fractal-match_price,dg));
if(result_compare<delta_points*pt) {
if(mode_fractal==0) BufferFractalUp[bar_fractal]=price_fractal;
else BufferFractalDn[bar_fractal]=price_fractal;
/// Print("Цена бара с фракталом ",n," совпала с проверяемой ценой, возвращаем true");
return(true);
}
n++;
}
return(false);
}
C'est ça dans OnCalculate()
Appel à partir de cette fonction
int n=0;
for(int i=shift; i<count_find; i++) {
//double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
if(price_fractal>0) {
n++;
if(n==number_fractal) {
bar_fractal=i;
return(price_fractal);
}
}
}
return(EMPTY_VALUE);
}
Eh bien... vous ne l'appelez pas correctement - il n'a que deux paramètres dans les paramètres, et vous mettez 3 après le nom.
Et pourquoi le normalisez-vous ? Il n'y a pas besoin de ça.
Je l'appelle depuis cette fonction
int n=0;
for(int i=shift; i<count_find; i++) {
//double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
if(price_fractal>0) {
n++;
if(n==number_fractal) {
bar_fractal=i;
return(price_fractal);
}
}
}
return(EMPTY_VALUE);
}
Veuillez noter que dans mode_fractal vous devez écrire le numéro de tampon de cet indicateur personnalisé - pour le 0 supérieur, pour le 1 inférieur. Sinon, dans les fractales standard, les valeurs des identifiants pour les fractales ne coïncident pas avec les valeurs de tampon de cet indicateur personnalisé :
Des fractales standard :
Constant
Valeur
Description
MODE_UPPER
1
Ligne supérieure
MODE_BAS
2
Ligne de fond
Tampons de l'indicateur personnalisé :
0 Ligne supérieure
1 Ligne de fond
Eh bien... vous ne l'appelez pas correctement - il n'a que deux paramètres dans les paramètres et vous mettez 3 après le nom.
Et pourquoi vous le normalisez ? Vous n'en avez pas besoin ici.
mode_fractal est la fractale supérieure ou inférieure, vous ne pouvez pas vous en passer.
Le zéro est écrit après le point
mode_fractal est la fractale supérieure ou inférieure, comme sans elle.
le zéro est inscrit après la période
J'ai écrit plus haut que les valeurs de l'indicateur standard et de votre indicateur personnalisé ne correspondent pas.
Pourquoi n'y a-t-il pas de Fibonacci dans Meta Trader 4 mais dans la description ?
Comment ça, non ? Il y a : l'élément de menu "Insertion" --> "Fibonacci".
MetaTrader4 de PlayMarket