Apprendre et écrire ensemble en MQL5 - page 45

 
Dimka-novitsek:
L'ordinateur est très lent...

non, ce n'est pas une compétition :)

Output yu (GBPUSD,H1) array out of range in 'Output yu.mq5' (4873,19)- words not clear...

Vous avez accédé à un élément du tableau, alors que la taille du tableau est inférieure au numéro d'index de l'élément auquel vous avez accédé.

C'est comme lorsque vous avez le tableau arr[10] et que vous voulez obtenir un élément arr[11]. Mais il n'y a que 10 éléments.

C'est ce dont on vous parle.

et vous avez même donné le numéro de la ligne où l'erreur est 4873 sur vos 5000 lignes :)

 
Merci ! !!
 
J'ai essayé de fournir tous les tableaux, il y en a 11, avec une condition appropriée. Mais dites-moi, s'il vous plaît, comment la même erreur se produit-elle ici ? И
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]); }           //Вывод ризультата
///////////////////////////////////////////////////////////////////////////////////////////////  

La fonction demande un paramètre - connu pour être un nombre entier, cent pour cent non négatif, et vérifie à l'intérieur de la fonction qu'il ne dépasse pas 99. [shift - c'est le même nombre - il fait référence à un élément du tableau StdDev number shift. Donc, ce n'est pas le nombre qui compte ? Serait-il correct de le déclarer commedouble ATR[100] ; ? п.p. L'erreur est le numéro de ligne et le caractère est exactement le décalage.

2012.09.29 20:56:26 Sortie yu (GBPUSD,H1) array out of range dans 'Output yu.mq5' (4886,19)

Il n'y a aucun moyen d'accéder au mauvais élément du tableau, n'est-ce pas ?

 
Dimka-novitsek:
J'ai essayé de fournir tous les tableaux, il y en a 11, avec une condition appropriée. Mais dites-moi, s'il vous plaît, comment la même erreur se produit-elle ici ? И

La fonction demande un paramètre - connu pour être un nombre entier, cent pour cent non négatif, et vérifie à l'intérieur de la fonction qu'il ne dépasse pas 99. [shift - c'est le même nombre - il fait référence à un élément du tableau StdDev number shift. Donc, ce n'est pas le nombre qui compte ? Serait-il correct de le déclarer commedouble ATR[100] ; ? п.p. L'erreur est le numéro de ligne et le caractère est exactement le décalage.

2012.09.29 20:56:26 Sortie yu (GBPUSD,H1) array out of range dans 'Output yu.mq5' (4886,19)

Il n'y a aucun moyen d'accéder au mauvais élément du tableau, n'est-ce pas ?


StdDev
Qu'est-ce que c'est ? Où est-il déclaré ? Quelle est sa taille ?
 
Merci à tous, vraiment ! Hier, c'était un cauchemar, maintenant je fais à nouveau le tri et c'est plus clair. C'est tout pour le moment.
 
Vous savez, tout semblait fonctionner correctement, et il dessinait tout, même des choses que je n'avais jamais vues auparavant ! Et en rapport avec cette question - dites-moi, s'il vous plaît, si le programme met fin à son travail prématurément avec l'arrivée d'une nouvelle tique ?
 
Dimka-novitsek: et avec l'arrivée d'une nouvelle tique, le programme s'arrête-t-il prématurément ?
Voir le Manuel de référence, mot de recherche : NewTick
 

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

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

Yedelkin , 2011.04.30 08:47

Вопрос

ENUM_DEAL_ENTRY

 

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

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

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

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_STATE

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

Что такое " статусная запись", и когда может потребоваться (необходимо использовать) признак этой записи?
Urain:
L'entrée d'état est l'entrée de fonds dans le compte, par exemple dans n'importe quel compte, la première ligne est le solde, c'est l'entrée d'état.

Cela ne semble pas être vrai.


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));
        }
     }
  }

Les retours :

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

Qui sait ce qu'est le DEAL_ENTRY_STATE ?

 
angevoyageur:

Cela ne semble pas être le cas.

Logiquement, si la balace a la direction DEAL_ENTRY_IN, alors pourquoi n'est-elle pas dans la colonne "Direction"/Direction !

comme par exemple pour acheter, qui dans ce cas a aussi le sens DEAL_ENTRY_IN

 
A100:

Logiquement, si la balace a la direction DEAL_ENTRY_IN, alors pourquoi n'est-elle pas dans la colonne "Direction"/Direction !

comme il est spécifié par exemple pour l'achat, qui dans ce cas a aussi le sens DEAL_ENTRY_IN

   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

Une question demeure : qu'est-ce que DEAL_ENTRY_STATE ? Une question demeure: qu'est-ce queDEAL_ENTRY_STATE?
Raison: