Gemeinsam lernen und schreiben in MQL5 - Seite 45

 
Dimka-novitsek:
Der Computer ist sehr langsam...

nein, es ist kein Wettbewerb :)

Output yu (GBPUSD,H1) array out of range in 'Output yu.mq5' (4873,19)- Worte nicht klar...

Sie haben auf ein Arrayelement zugegriffen, während die Größe des Arrays kleiner ist als die Indexnummer des Elements, auf das Sie zugegriffen haben.

Das ist so, als wenn Sie das Array arr[10] haben und ein Element arr[11] abrufen wollen, es aber nur 10 Elemente gibt.

Das ist es, worüber man Ihnen berichtet.

und Sie haben sogar die Zeilennummer angegeben, in der der Fehler auftritt: 4873 von Ihren 5000 Zeilen :)

 
Ich danke Ihnen!!!
 
Ich habe versucht, alle Arrays, es sind 11, mit einer entsprechenden Bedingung zu versehen. Aber sagen Sie mir bitte, wie der gleiche Fehler hier auftritt? И
double      ATR[];                // массив для индикатора iATR
//---- handles for indicators
int         ATR_handle;           // указатель на индикатор iATR


..................................................
..................................................

///////////////////////////////////////////////////////////////////////////////////////////////  
double iStdDevf(        string symbol, int timeframe, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method,  ENUM_APPLIED_PRICE applied_price, int shift){
     SymbolSelect(
  symbol,       // имя символа
  true      // включить или выключить
   );
 StdDev_handle= iStdDev(
               symbol,            // имя символа
       periodd(timeframe),            // период
                   ma_period,         // период усреднения
                 ma_shift,          // смещение индикатора по горизонтали
         ma_method,         // тип сглаживания
    applied_price      // тип цены или handle
   );   
  
   if(StdDev_handle==INVALID_HANDLE)     
     {
     return (0.0);}                     //Если массив не был создан, то 0          
      
    CopyBuffer(StdDev_handle,0,0,100,ATR);
    if(shift>99)return(0);
    ArraySetAsSeries(ATR,true);         // Установим порядок расположения массива от 0 к 100
    return( StdDev[shift]); }           //Вывод ризультата
///////////////////////////////////////////////////////////////////////////////////////////////  

Die Funktion fragt nach einem Parameter, der eine nicht-negative ganze Zahl ist, und prüft innerhalb der Funktion, dass er nicht größer als 99 ist. [shift-es ist dieselbe Zahl - sie bezieht sich auf ein Element des Arrays StdDev number shift. Es geht also nicht um die Zahl? Wäre es richtig, ihn alsdouble ATR[100]; zu deklarieren? п.p. Der Fehler ist die Zeilennummer und das Zeichen ist genau Shift

2012.09.29 20:56:26 Output yu (GBPUSD,H1) Array außerhalb des Bereichs in 'Output yu.mq5' (4886,19)

Es gibt keine Möglichkeit, auf ein falsches Array-Element zuzugreifen, richtig?

 
Dimka-novitsek:
Ich habe versucht, alle Arrays, es sind 11, mit einer entsprechenden Bedingung zu versehen. Aber sagen Sie mir bitte, wie der gleiche Fehler hier auftritt? И

Die Funktion fragt nach einem Parameter, der eine nicht-negative ganze Zahl ist, und prüft innerhalb der Funktion, dass er nicht größer als 99 ist. [shift-es ist dieselbe Zahl - sie bezieht sich auf ein Element des Arrays StdDev number shift. Es geht also nicht um die Zahl? Wäre es richtig, ihn alsdouble ATR[100]; zu deklarieren? п.p. Der Fehler ist die Zeilennummer und das Zeichen ist genau Shift

2012.09.29 20:56:26 Output yu (GBPUSD,H1) Array außerhalb des Bereichs in 'Output yu.mq5' (4886,19)

Es gibt keine Möglichkeit, auf ein falsches Array-Element zuzugreifen, richtig?


StdDev
Worum handelt es sich? Wo wird sie angemeldet? Wie groß ist sie?
 
Ich danke Ihnen allen, wirklich! Gestern war es ein Alptraum, jetzt bin ich dabei, es wieder in Ordnung zu bringen, und es ist klarer geworden. Das ist alles für den Moment.
 
Weißt du, alles schien zu funktionieren, und es zeichnete alles, sogar Dinge, die ich vorher nicht gesehen hatte! Und im Zusammenhang mit dieser Frage - sagen Sie mir bitte, ob das Programm seine Arbeit vorzeitig beendet, wenn ein neuer Tick kommt?
 
Dimka-novitsek: und wenn eine neue Zecke auftaucht, wird das Programm dann vorzeitig beendet?
Siehe Referenzhandbuch, Suchbegriff: NewTick
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Изучаем и пишем вместе на MQL5

Yedelkin , 2011.04.30 08:47

Вопрос

ENUM_DEAL_ENTRY

 

Идентификатор

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_STATE

Признак статусной записи

Что такое " статусная запись", и когда может потребоваться (необходимо использовать) признак этой записи?
Urain:
Die Statusbuchung ist die Buchung von Geldern auf dem Konto, z. B. ist die erste Zeile eines jeden Kontos der Saldo, dies ist die Statusbuchung.

Das scheint nicht der Fall zu sein.


void OnStart()
  {
//---
   if(HistorySelect(0,TimeCurrent()))
     {
      int total=HistoryDealsTotal();
      for(int i=0;i<total;i++)
        {
         ulong ticket=HistoryDealGetTicket(i);
         ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(ticket,DEAL_ENTRY);
         printf("Deal ticket#%u entry=%s",ticket,EnumToString(deal_entry));
        }
     }
  }

Rückgabe:

2014.08.27 19:15:42.163 Deal_Entry_State (AUDUSD,D1) Deal ticket#3879156 entry=DEAL_ENTRY_IN

Wer weiß, was die DEAL_ENTRY_STATE ?

 
angevoyageur:

Dies scheint nicht der Fall zu sein.

Wenn logischerweise der Ausgleich die Richtung DEAL_ENTRY_IN hat, warum steht er dann nicht in der Spalte "Richtung"?

wie zum Beispiel für buy, das in diesem Fall auch die Richtung DEAL_ENTRY_IN hat

 
A100:

Wenn der Ausgleich die Richtung DEAL_ENTRY_IN hat, warum steht er dann nicht in der Spalte "Direction"/Direction?!

wie es z.B. für buy angegeben ist, das in diesem Fall auch die Richtung DEAL_ENTRY_IN hat

   if(HistorySelect(0,TimeCurrent()))
     {
      int total=HistoryDealsTotal();
      for(int i=0;i<total;i++)
        {
         ulong ticket=HistoryDealGetTicket(i);
         ENUM_DEAL_ENTRY deal_entry=(ENUM_DEAL_ENTRY) HistoryDealGetInteger(ticket,DEAL_ENTRY);
         ENUM_DEAL_TYPE  deal_type=(ENUM_DEAL_TYPE) HistoryDealGetInteger(ticket,DEAL_TYPE);
         printf("Deal ticket#%u type=%s entry=%s",ticket,EnumToString(deal_type),EnumToString(deal_entry));
        }
     }


2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3892717 type=DEAL_TYPE_BUY entry=DEAL_ENTRY_OUT

2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3892714 type=DEAL_TYPE_SELL entry=DEAL_ENTRY_IN

2014.08.28 13:25:44.007 Deal_Entry_State (AUDUSD,H8) Deal ticket#3879156 type=DEAL_TYPE_BALANCE entry=DEAL_ENTRY_IN

Bleibt die Frage, was ist DEAL_ENTRY_STATE? Bleibt dieFrage, was istDEAL_ENTRY_STATE?
Grund der Beschwerde: