Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 2

 
Artyom Trishkin:

Non per chiamare da un altro indicatore :)

O mostra come lo fai tu.

Lo chiamo da questa funzione


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);
}

E a sua volta da questo

bool CheckOnePrices(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int count_fractals, int bar_fractal, double match_price, int delta_points, int shift) {
   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);
}

Questo è in OnCalculate()

if(CheckOnePrices(Symbol(),PERIOD_CURRENT,0,rates_total,numFractals,bar,low[i],delta,i+1)) { BufferPointDn[i]=low[i]-distanc*Point;}
 
mila.com:

Chiamare da questa funzione


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);
}

Bene... non lo chiami correttamente - ha solo due parametri nelle impostazioni, e ne metti 3 dopo il nome.

E perché lo stai normalizzando? Non ce n'è bisogno.

 
mila.com:

Lo chiamo da questa funzione


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);
}

Nota, che in mode_fractal devi scrivere il numero di buffer di questo indicatore personalizzato - per lo 0 superiore, per l'1 inferiore. Altrimenti, nei frattali standard, i valori di identificazione per i frattali non coincidono con i valori di buffer di questo indicatore personalizzato:

Frattali standard:

Costante

Valore

Descrizione

MODE_UPPER

1

Linea superiore

MODE_LOWER

2

Linea di fondo


Buffer dell'indicatore personalizzato:

0 Linea superiore
1 Linea di fondo

 
Artyom Trishkin:

Bene... non lo chiami correttamente - ha solo due parametri nelle impostazioni e ne metti 3 dopo il nome.

E perché lo state normalizzando? Non ne hai bisogno qui.

mode_fractal è il frattale superiore o inferiore, non potete farne a meno.

Lo zero è scritto dopo il periodo

 
mila.com:

mode_fractal è frattale superiore o inferiore, come senza.

lo zero è inscritto dopo il periodo

Ho scritto sopra che i valori dell'indicatore standard e di quello personalizzato non corrispondono.
 
Artyom Trishkin:
Ho scritto sopra che i valori dell'indicatore standard e di quello personalizzato non corrispondono.
Sbagliato - lo fanno. Devi guardare più a fondo...
 
Perché non c'è Fibonacci in Meta Trader 4 ma nella descrizione?
 
SLANDOV:
Perché non c'è Fibonacci in Meta Trader 4 ma nella descrizione?
Come mai non c'è? C'è: Inserisci voce di menu --> Fibonacci
 
Artyom Trishkin:
In che senso no? C'è: voce di menu "Inserisci" --> "Fibonacci"
MetaTrader4 da PlayMarket
 
SLANDOV:
MetaTrader4 da PlayMarket
Purtroppo non posso vedere MT4 sul mio dispositivo Android o iOS al momento...