Aprender y escribir juntos en MQL5 - página 11

 
m_a_sim:

¿resulta que todo tiene que ver con los indicadores?

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)

La matriz está fuera de alcance.

Ver código de 'trend_v3.mq5'. Incluso se dan líneas específicas.

 
m_a_sim:

¿Así que se trata de los indicadores? El probador me da un error

2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Array fuera de rango en 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Array fuera de rango en 'trend_v3_5.mq5' (83,9)


alexvd:

Sobrecarga de la matriz.

Ver código 'trend_v3.mq5'. Incluso se especifican líneas concretas.

¿Me pregunto si los propios indulgentes trabajan?
 
alexvd:

Fuera del alcance de un array.

Ver código 'trend_v3.mq5'. Incluso se indican líneas específicas.

Lo más probable es que sea el indicador, lo rehice con mql4, funciona, pero hay un error, no se considera la nueva barra todavía, no puedo averiguar cómo hacerlo correctamente para que no haya conflicto con mql5

aquí está trend_v3. ¿Se refiere a la línea 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:

Lo más probable es que sea el indicador, lo he rediseñado con mql4, se dibuja, pero hay un error, la nueva barra no se considera todavía, no puedo entender cómo hacerlo correctamente, para que no hubiera conflictos con mql5

aquí está trend_v3. ¿Se refiere a la línea 9?


71 acciones, 9 caracteres...

Tal y como yo lo veo, aquí es donde se está molestando.

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

71 stoka, 9 caracteres...

Según tengo entendido, aquí es donde falla

¿Existe una forma programática de buscar el número de línea y el carácter en lugar de contar manualmente?
 
m_a_sim:
¿Existe una forma de buscar el número de línea y el carácter en el software, en lugar de contar manualmente?

Por supuesto que sí. Menú Edición, ir a la línea(Ctrl+G)...

PS

El número de línea y las posiciones se escriben en la parte inferior. También hay una forma de saltar rápidamente a las funciones (por su nombre)...

 
Interesting:

Por supuesto que sí. Menú Edición, ir a la partida...

PS

El número de línea y la posición se escriben en la parte inferior. También hay una forma de saltar rápidamente a las funciones (por su nombre)...


¿y qué tiene de malo?
 
m_a_sim:
¿y qué tiene de malo?
Comprueba la dimensionalidad del array. Pero primero, yo añadiría una comprobación de discapacidad y disponibilidad de datos al propio EA...
Документация по MQL5: Операции с массивами / ArrayRange
Документация по MQL5: Операции с массивами / ArrayRange
  • www.mql5.com
Операции с массивами / ArrayRange - Документация по MQL5
 
Interesting:
Comprueba la dimensionalidad del array. Pero primero, yo añadiría una comprobación de discapacidad y disponibilidad de datos al propio EA...
¿Puede ser más específico, qué quiere decir con discapacidad y disponibilidad de datos?
 
m_a_sim:
¿puede ser más específico, a qué se refiere con discapacidad y disponibilidad de datos?

Algo así

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

También formalizaría todo el trabajo con los pavos como clase...