Gemeinsam lernen und schreiben in MQL5 - Seite 11

 
m_a_sim:

es sich herausstellt, dass es nur um die Indikatoren geht?

2010.09.01 19:44:36 Kern 1 2010.06.01 00:00:01 Array außerhalb des Bereichs in 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Kern 1 2010.06.01 00:00:01 Array außerhalb des Bereichs in 'trend_v3_5.mq5' (83,9)

Array ist außer Reichweite.

Siehe Code von 'trend_v3.mq5'. Es werden sogar bestimmte Zeilen angegeben.

 
m_a_sim:

Es geht also nur um die Indikatoren? Der Tester gibt mir eine Fehlermeldung

2010.09.01 19:44:36 Kern 1 2010.06.01 00:00:01 Array außerhalb des Bereichs in 'trend_v3.mq5' (71,9)
2010.09.01 19:44:36 Kern 1 2010.06.01 00:00:01 Array außerhalb des Bereichs in 'trend_v3_5.mq5' (83,9)


alexvd:

Array-Überlauf.

Siehe Code 'trend_v3.mq5'. Es werden sogar bestimmte Zeilen angegeben.

Ich frage mich, ob die Ablasshändler selbst arbeiten?
 
alexvd:

Außerhalb der Reichweite des Arrays.

Siehe Code 'trend_v3.mq5'. Es werden sogar bestimmte Linien angegeben.

Wahrscheinlich ist es der Indikator, ich redid es mit mql4, es funktioniert, aber es gibt einen Fehler, neue Bar ist noch nicht berücksichtigt, ich kann nicht herausfinden, wie man es richtig tun, so dass es keinen Konflikt mit mql5

hier ist trend_v3. Meinen Sie Zeile 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:

Höchstwahrscheinlich ist es der Indikator, ich habe es mit mql4 umgestaltet, es ist gezeichnet, aber es gibt einen Fehler, neue Bar ist noch nicht berücksichtigt, ich kann nicht verstehen, wie man es richtig zu tun, so dass es keine Konflikte mit mql5 sein würde

hier ist trend_v3. Meinen Sie Zeile 9?


71 Aktien, 9 Zeichen...

Meines Erachtens ist dies die Stelle, an der es ärgerlich wird.

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

71 Stoka, 9 Zeichen...

So wie ich es verstanden habe, ist dies der Punkt, an dem der Fehler liegt

Gibt es eine programmatische Möglichkeit, nach der Zeilennummer und dem Zeichen zu suchen, anstatt manuell zu zählen?
 
m_a_sim:
Gibt es eine Software, die nach Zeilennummer und Zeichen sucht, anstatt manuell zu zählen?

Natürlich gibt es das. Menü Bearbeiten, zur Zeile gehen(Strg+G)...

PS

Die Zeilennummer und die Positionen werden am unteren Rand angegeben. Es gibt auch eine Möglichkeit, schnell zu Funktionen zu springen (über ihren Namen)...

 
Interesting:

Natürlich gibt es das. Menü Bearbeiten, zu Position gehen...

PS

Die Zeilennummer und die Position werden am unteren Rand angegeben. Es gibt auch eine Möglichkeit, schnell zu Funktionen zu springen (über ihren Namen)...


und was ist daran falsch?
 
m_a_sim:
und was ist daran falsch?
Überprüfen Sie die Dimensionalität des Arrays. Aber zuerst würde ich dem EA selbst eine Prüfung auf Behinderung und Datenverfügbarkeit hinzufügen...
Документация по MQL5: Операции с массивами / ArrayRange
Документация по MQL5: Операции с массивами / ArrayRange
  • www.mql5.com
Операции с массивами / ArrayRange - Документация по MQL5
 
Interesting:
Überprüfen Sie die Dimensionalität des Arrays. Aber zuerst würde ich dem EA selbst eine Prüfung auf Behinderung und Datenverfügbarkeit hinzufügen...
Können Sie genauer sagen, was Sie mit Behinderung und Datenverfügbarkeit meinen?
 
m_a_sim:
Können Sie genauer sagen, was Sie mit Behinderung und Datenverfügbarkeit meinen?

Etwa so

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

Ich würde auch die ganze Arbeit mit den Truthähnen als Klasse formalisieren...

Grund der Beschwerde: