Apprendre et écrire ensemble en MQL5 - page 11

 
m_a_sim:

il s'avère que tout est une question d'indicateurs ?

2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Tableau hors limites dans 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Tableau hors limites dans 'trend_v3_5.mq5' (83,9)

Array est hors de portée.

Voir le code de 'trend_v3.mq5'. Des lignes spécifiques sont même données.

 
m_a_sim:

Tout est donc une question d'indicateurs ? Le testeur me donne une erreur

2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Tableau hors limites dans 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Core 1 2010.06.01 00:00:01 Tableau hors limites dans 'trend_v3_5.mq5' (83,9)


alexvd:

Dépassement de tableau.

Voir le code 'trend_v3.mq5'. Même les lignes spécifiques sont spécifiées.

Je me demande si les indulgents eux-mêmes travaillent ?
 
alexvd:

Hors de portée d'un tableau.

Voir le code 'trend_v3.mq5'. Même les lignes spécifiques sont indiquées.

C'est probablement l'indicateur, je l'ai refait avec mql4, ça marche, mais il y a une erreur, la nouvelle barre n'est pas encore prise en compte, je n'arrive pas à trouver comment le faire correctement pour qu'il n'y ait pas de conflit avec mql5.

voici la tendance_v3. Vous voulez dire la ligne 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:

Le plus probable est l'indicateur, je l'ai redessiné avec mql4, il est dessiné, mais il y a une erreur, la nouvelle barre n'est pas encore considérée, je n'arrive pas à comprendre comment le faire correctement, pour qu'il n'y ait pas de conflits avec mql5

voici la tendance_v3. Vous voulez dire la ligne 9 ?


71 actions, 9 personnages...

D'après ce que j'ai compris, c'est à cet endroit que ça s'agace.

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

71 stoka, 9 caractères...

D'après ce que j'ai compris, c'est là que le problème se pose.

Existe-t-il un moyen programmatique de rechercher le numéro de ligne et le caractère au lieu de compter manuellement ?
 
m_a_sim:
Existe-t-il un moyen logiciel de rechercher le numéro de ligne et le caractère, plutôt que de compter manuellement ?

Bien sûr qu'il y en a. Menu Edition, aller à la ligne(Ctrl+G)...

PS

Le numéro de ligne et les positions sont écrits en bas. Il existe également un moyen de passer rapidement aux fonctions (par leur nom)...

 
Interesting:

Bien sûr qu'il y en a. Menu Edition, aller à l'article de ligne...

PS

Le numéro et la position de la ligne sont inscrits en bas. Il existe également un moyen de passer rapidement aux fonctions (par leur nom)...


et qu'est-ce qui ne va pas avec ça ?
 
m_a_sim:
et qu'est-ce qui ne va pas avec ça ?
Vérifiez la dimensionnalité du tableau. Mais d'abord, j'ajouterais un contrôle d'invalidité et de disponibilité des données à l'EA elle-même...
Документация по MQL5: Операции с массивами / ArrayRange
Документация по MQL5: Операции с массивами / ArrayRange
  • www.mql5.com
Операции с массивами / ArrayRange - Документация по MQL5
 
Interesting:
Vérifiez la dimensionnalité du tableau. Mais d'abord, j'ajouterais un contrôle d'invalidité et de disponibilité des données à l'EA elle-même...
Pouvez-vous être plus précis, qu'entendez-vous par handicap et disponibilité des données ?
 
m_a_sim:
pouvez-vous être plus précis, qu'entendez-vous par handicap et disponibilité des données ?

Quelque chose comme ça

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

Je formaliserais aussi tout le travail avec les dindes en tant que classe...

Raison: