Изучаем и пишем вместе на MQL5 - страница 45

 
Dimka-novitsek:
Комп очень тормозит..

не, это не комп :)

Выходные уу (GBPUSD,H1) array out of range in 'Выходные уу.mq5' (4873,19)- слова непонятные..

вы обратились к элементу массива, а размер массива меньше чем порядковый номер элемента к которому вы обратились.

этот как если у вас массив arr[10].  А вы хотите получить элемент arr[11]. но элементов ведь всего 10.

про это вам и сказали.

и даже указали номер строки где ошибка - 4873 из ваших 5000 строк :)

 
Спасибо!!!
 
Я все массивы, их 11,  постарался обеспечить соответствующим условием. Но скажите мне, пожалуста, как вот тут возникает та же ошибка? И
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]); }           //Вывод ризультата
///////////////////////////////////////////////////////////////////////////////////////////////  

Функция запрашивает параметр-заведомо целое число, стопудов неотрицательное, а внутри функции проверяет, что оно не больше 99.  [shift- это оно самое то самое число- обращается к элементу массива   StdDev номер  shift. Стало быть, не в числе дело?     А верно ли его было бы обьявить   double      ATR[100]; ?                                                                                                                                           п.с. Ошибка - номер строки и символа именно  shift

2012.09.29 20:56:26 Выходные уу (GBPUSD,H1) array out of range in 'Выходные уу.mq5' (4886,19)      

   Ведь ну никак не может обращаться не к тому элементу массива?
 

 
Dimka-novitsek:
Я все массивы, их 11,  постарался обеспечить соответствующим условием. Но скажите мне, пожалуста, как вот тут возникает та же ошибка? И

Функция запрашивает параметр-заведомо целое число, стопудов неотрицательное, а внутри функции проверяет, что оно не больше 99.  [shift- это оно самое то самое число- обращается к элементу массива   StdDev номер  shift. Стало быть, не в числе дело?     А верно ли его было бы обьявить   double      ATR[100]; ?                                                                                                                                           п.с. Ошибка - номер строки и символа именно  shift

2012.09.29 20:56:26 Выходные уу (GBPUSD,H1) array out of range in 'Выходные уу.mq5' (4886,19)      

   Ведь ну никак не может обращаться не к тому элементу массива?
 

 


StdDev
это что? где оно объявлено? какой размер?
 
Спасибо всем, правда! Вчера уже вичерний з...б был, щас разбираюсь снова и оно виднее. Пока все.
 
Вы знаете, вроде все как надо сработало, и отрисовало все, даже то, что я раньше не видел! А в связи с этим вопрос- скажите пожалуста, а с приходом нового тика программа прирывает свою работу досрочно? 
 
Dimka-novitsek: а с приходом нового тика программа прирывает свою работу досрочно? 
 См. Справочник, поисковое слово: NewTick
 

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

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

Yedelkin , 2011.04.30 08:47

Вопрос

ENUM_DEAL_ENTRY

 

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

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

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

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_STATE

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

Что такое " статусная запись", и когда может потребоваться (необходимо использовать) признак этой записи?
Urain :
Статусная записть это зачисление на счёт средств, например на любом счёте первой строкой идёт balance, это и есть статусная запись.

Это, кажется, не правда.


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

Возвращает:

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

Кто знает, что это за DEAL_ENTRY_STATE ?

 
angevoyageur:

 Это, кажется, не правда.

Если рассуждать логически, то если у balace направление DEAL_ENTRY_IN, то почему тогда не указано in в столбце "Направление"\Direction?!

 

как это указано например для buy, у которого в данном случае тоже направление DEAL_ENTRY_IN

 
A100:

Если рассуждать логически, то если у balace направление DEAL_ENTRY_IN, то почему тогда не указано in в столбце "Направление"\Direction?!

 

как это указано например для buy, у которого в данном случае направление тоже 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

Question remains, what is DEAL_ENTRY_STATE ? Вопрос остается, что такое DEAL_ENTRY_STATE?