Aprender e escrever juntos em MQL5 - página 11

 
m_a_sim:

acontece que tudo tem a ver com os indicadores?

2010.09.01 19:44:36 Core 1 2010.06.01 00: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:00:01 Array out of range in 'trend_v3_5.mq5' (83,9)

A matriz está fora de alcance.

Ver código de 'trend_v3.mq5'. Até as linhas específicas são dadas.

 
m_a_sim:

Então é tudo sobre os indicadores? O testador está a dar-me um erro

2010.09.01 19:44:36 Core 1 2010.06.01 00:00:00:01 Array fora de alcance em 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Core 1 2010.06.01 00:00:00:01 Array fora de alcance em 'trend_v3_5.mq5' (83,9)


alexvd:

Array overrun.

Ver código 'trend_v3.mq5'. Até as linhas específicas são especificadas.

Será que os próprios indulgers trabalham?
 
alexvd:

Fora do alcance da matriz.

Ver código 'trend_v3.mq5'. Até as linhas específicas são indicadas.

O mais provável é que seja o indicador, eu redifi-o com mql4, funciona, mas há um erro, a nova barra ainda não está considerada, não consigo descobrir como fazê-lo correctamente, por isso não haverá conflito com mql5

aqui é trend_v3. Refere-se à linha 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:

Muito provavelmente é o indicador, redesenhei-o com mql4, está desenhado, mas há um erro, a nova barra ainda não está considerada, não consigo entender como fazê-lo correctamente, de modo que não haveria conflitos com mql5

aqui é trend_v3. Refere-se à linha 9?


71 stocks, 9 caracteres...

A meu ver, este é o local onde está a ficar aborrecido.

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

71 stoka, 9 caracteres...

Pelo que entendi, é aqui que se verificam as falhas

Existe uma forma programática de procurar o número da linha e o carácter em vez de contar manualmente?
 
m_a_sim:
Existe uma forma de software para procurar o número de linha e o carácter, em vez de contar manualmente?

É claro que há. Editar menu, ir para a linha(Ctrl+G)...

PS

O número da linha e as posições estão escritos na parte inferior. Há também uma maneira de saltar rapidamente para as funções (pelo seu nome)...

 
Interesting:

É claro que há. Editar menu, ir ao item de linha...

PS

O número da linha e a posição estão escritos na parte inferior. Há também uma maneira de saltar rapidamente para as funções (pelo seu nome)...


e o que há de errado com ele?
 
m_a_sim:
e o que há de errado com ele?
Verificar a dimensionalidade da matriz. Mas primeiro, acrescentaria à própria EA uma verificação da deficiência e da disponibilidade de dados.
Документация по MQL5: Операции с массивами / ArrayRange
Документация по MQL5: Операции с массивами / ArrayRange
  • www.mql5.com
Операции с массивами / ArrayRange - Документация по MQL5
 
Interesting:
Verificar a dimensionalidade da matriz. Mas primeiro, acrescentaria à própria EA uma verificação da deficiência e da disponibilidade de dados.
Pode ser mais específico, o que quer dizer com deficiência e disponibilidade de dados?
 
m_a_sim:
pode ser mais específico, o que quer dizer com deficiência e disponibilidade de dados?

Algo parecido com isto

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

Formalizaria também todo o trabalho com os perus como uma classe.

Razão: