Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 266

 
jommerbot:

Ok, anche nel caso più semplice non funziona:

Non capisco dove sia il mio errore. Copiare lo stesso buffer dell'indicatore nell'EA e nello script funziona, ma non nell'indicatore. La maniglia dell'indicatore viene inizializzata senza errori.

Trova la differenza. )

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrRed
//---
double ExtLineBuffer[];
int    iRocHandleEURUSD =INVALID_HANDLE;
int    iPlotShift       =0;
int    iPeriod          =6;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
   IndicatorSetInteger(INDICATOR_DIGITS,2);
   SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA);
   PlotIndexSetInteger(0,PLOT_SHIFT,iPlotShift);
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,iPeriod-1);
//---
   iRocHandleEURUSD=iCustom("EURUSD",0,"Examples\\ROC");
   if(iRocHandleEURUSD==INVALID_HANDLE)
      Print("Не удалось получить хендл индикатора ROC EURUSD");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//---
   if(rates_total<iPeriod)
      return(0);
//---
   int first=0;
   double aRocRatesEURUSD[];
   ArraySetAsSeries(ExtLineBuffer,true);
//---
   if(prev_calculated==0)
      first=0;
   else
      first=prev_calculated-1;
//---
   for(int bar=first; bar<rates_total; bar++)
     {
      CopyBuffer(iRocHandleEURUSD,0,bar,1,aRocRatesEURUSD);
      Print("bar: ",bar,"; value: ",DoubleToString((aRocRatesEURUSD[0]!=EMPTY_VALUE)?aRocRatesEURUSD[0]:0,2));
      ExtLineBuffer[bar]=aRocRatesEURUSD[0];
     }
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Sì, ho capito, nell'ultima versione del mio codice il gestore dell'indicatore entrava nell'ambito sbagliato della variabile. Mi mancava, grazie. Ma c'è un problema - nel tester, sulle barre storiche prima dell'inizio del periodo di test, l'indicatore funziona normalmente, ma a partire dall'inizio del periodo di test i tick appena arrivati non vengono considerati. Cioè il buffer di un indicatore figlio non viene aggiornato.

 

Brava gente, per favore aiutate a correggere il codice, in modo che dalla linea di lavoro in "Input parameters" del consulente
extern string Lot = "0.2 0.2 0.3 0.4 0.5"; // (attraverso uno spazio)
l'ultimo valore (in questo caso 0.5) si ripeterebbe all'infinito cioè non digitare
"0.2 0.2 0.2 0.3 0.4 0.5 0.5 0.5 0.5 0.5 0.5 0.5";

//----------------------------

StringToArrayLot(Lot,xiLot);

//---------------------------------------------------

int StringToArrayLot(string st,double &ad[])
{
int i=0,np; string stp;ArrayResize(ad,0);
while(StringLen(st)>0)
{
np=StringFind(st," ");
if(np<0)
{
stp=st;
st="";
} else{
stp=StringSubstr(st,0,np);
st=StringSubstr(st,np+1);
}
i++;
ArrayResize(ad,i);
ad[i-1]=StrToDouble(stp);
}
return(ArraySize(ad));
}

 
Perché non posso vedere il mio EA sul sito o nel terminale?
 
Krasev157:
Perché non posso vedere il mio EA sul sito o nel terminale?
Per vederlo sul sito web devi caricarlo. Per compilarlo nel terminale.
 
zfs:
Per vederlo sul sito, devi caricarlo. Per compilarlo nel terminale.

Non posso vederlo sul mio profilo, ma non posso vederlo sul mio profilo.

 
Krasev157:

lo pubblicherà sul sito web, non posso vederlo sul mio profilo

Dammi un link a un dizionario albanese, per favore.
 
barabashkakvn:
Dammi un link a un dizionario albanese, per favore.

http://www.txtblog.ru/blog/1165306807 ecco a voi

 

Herr Hattar va a fuoco.

Forza!

Bazinga!

 
Ciao, se non è troppo disturbo, potresti dirmelo per favore? Come faccio a mettere il prezzo degli ultimi 5 tick in un array?