Imparare e scrivere insieme in MQL5 - pagina 11

 
m_a_sim:

si scopre che è tutta una questione di indicatori?

2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Array out of range in 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Array out of range in 'trend_v3_5.mq5' (83,9)

Array è fuori portata.

Vedere il codice di 'trend_v3.mq5'. Anche le linee specifiche sono date.

 
m_a_sim:

Quindi è tutta una questione di indicatori? Il tester mi dà un errore

2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Array out of range in 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Array out of range in 'trend_v3_5.mq5' (83,9)


alexvd:

Array overrun.

Vedere il codice 'trend_v3.mq5'. Anche le linee specifiche sono specificate.

Mi chiedo se gli indulgenti stessi lavorano?
 
alexvd:

Fuori dalla portata di un array.

Vedere il codice 'trend_v3.mq5'. Anche le linee specifiche sono indicate.

Molto probabilmente è l'indicatore, l'ho rifatto con mql4, funziona, ma c'è un errore, la nuova barra non è ancora considerata, non riesco a capire come farlo correttamente così non ci sarà conflitto con mql5

ecco la tendenza_v3. Intende la linea 9?

//+------------------------------------------------------------------+
//|                                                     trend_v3.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window


#property  indicator_buffers 1
#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property  indicator_color1  Blue


input int period =20;

double A[];
//+--------------
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

 SetIndexBuffer(0,A, INDICATOR_DATA);
   ArraySetAsSeries(A,true);

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
  //int    counted_bars=IndicatorCounted();
   int   i, j, k, q, limit;
   double X[4][4], Y[4], B[4], x[4][2000], y[2000], a;
   
   // int Bar=Bars("EURUSD",_Period);
    ArraySetAsSeries(close,true);
 // limit=BarsCalculated-counted_bars;
 for(q=prev_calculated;q<rates_total;q++)
     {
  //for(q=0; q<Bar; q++)
  // {
     
   ArrayInitialize(X,0);
   ArrayInitialize(Y,0);   
   ArrayInitialize(B,0);   
   ArrayInitialize(x,0);
   ArrayInitialize(y,0);  
//===========================================
for (i=0; i<=period; i++) {

x[0][i]=1;
x[1][i]=i+q;
y[i]=   close[i+q];
}
//===========================================
  for (k=1; k<=period; k++) {
  for (j=0; j<=1; j++) {
  for (i=0; i<=1; i++) { 
   X[i][j]=x[j][k]*x[i][k]+X[i][j];   
   }
   Y[j]=y[k]*x[j][k]+Y[j];
   }}  
//===========================================  
k=0; 
 j=1; 
  a=X[k][j]/X[k][k];
  for (i=0; i<=3; i++){
  X[i][j]=X[i][j]-X[i][k]*a; 
  }
  Y[j]=Y[j]-Y[k]*a;

//==========================================  
for (k=2; k>=1; k--){
a=0;
for (i=1; i>=k; i--){
a=X[i][k-1]*B[i]+a;
}
B[k-1]=(Y[k-1]-a)/X[k-1][k-1];
}
//=========================================


   A[q]=B[0]+B[1]*q;
   }

//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • 2010.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Можно ли торговать этим инструментом в понедельник? Хватит ли денег на открытие позиции? Какой размер убытка мы получим, если сработает Stop Loss? Как ограничить количество отложенных ордеров? Была ли выполнена торговая операция на этом баре или это было на предыдущем? Если торговый робот не может сделать подобные проверки, то любая прибыльная торговая система может превратиться в проигрышную. В этой статье показаны примеры проверок, которые пригодятся в любом эксперте.
 
m_a_sim:

Molto probabilmente è l'indicatore, l'ho ridisegnato con mql4, è disegnato, ma c'è un errore, la nuova barra non è ancora considerata, non riesco a capire come farlo correttamente, in modo che non ci sarebbero conflitti con mql5

ecco la tendenza_v3. Intende la linea 9?


71 azioni, 9 caratteri...

Da quanto ho capito, questo è il punto in cui si infastidisce.

y[i]=   close[i+q];
 
Interesting:

71 stoka, 9 carattere...

Da quanto ho capito, è qui che si blocca

C'è un modo programmatico per cercare il numero di linea e il carattere invece di contare manualmente?
 
m_a_sim:
C'è un modo software per cercare il numero di riga e il carattere, piuttosto che contare manualmente?

Certo che c'è. Menu Modifica, vai alla linea(Ctrl+G)...

PS

Il numero di linea e le posizioni sono scritte in basso. C'è anche un modo per saltare rapidamente alle funzioni (in base al loro nome)...

 
Interesting:

Certo che c'è. Menu Modifica, vai alla voce...

PS

Il numero di riga e la posizione sono scritti in basso. C'è anche un modo per saltare rapidamente alle funzioni (in base al loro nome)...


e cosa c'è di sbagliato?
 
m_a_sim:
e cosa c'è di sbagliato?
Controlla la dimensionalità dell'array. Ma prima, aggiungerei un controllo della disabilità e della disponibilità dei dati all'EA stesso...
Документация по MQL5: Операции с массивами / ArrayRange
Документация по MQL5: Операции с массивами / ArrayRange
  • www.mql5.com
Операции с массивами / ArrayRange - Документация по MQL5
 
Interesting:
Controlla la dimensionalità dell'array. Ma prima, aggiungerei un controllo della disabilità e della disponibilità dei dati all'EA stesso...
Può essere più specifico, cosa intende per disabilità e disponibilità di dati?
 
m_a_sim:
può essere più specifico, cosa intende per disabilità e disponibilità di dati?

Qualcosa del genere

void OnTick()
{
//----------------------------------------------------------------------------//
//Work variables
MqlTradeRequest mrequest;  
MqlTradeResult mresult;
MqlTick latest_price;   

int i, j,jj, k, g, q, ticket,l;
double stop;
//----------------------------------------------------------------------------//

ArraySetAsSeries(ind1,true);
ArraySetAsSeries(ind2,true);

  if(hind1==INVALID_HANDLE||hind2==INVALID_HANDLE)
  {
  Print("Ошибка!!!");
  }
  else
  {
  MAX = CopyBuffer(hind1,2,0,3,ind1);
  MIN = CopyBuffer(hind2,0,0,3,ind2);
  }
//----------------------------------------------------------------------------//  
}

PS

Formalizzerei anche tutto il lavoro con i tacchini come classe...