Ошибки, баги, вопросы - страница 572

 
Interesting:

А где и как формируется MarketWatch?

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

Но если эксперт мульт значит добавляться должны несколько валютных пар (что из приведенного выше примера не видно).

Этот код находится в цикле по валютным парам, Exp_Symbol на каждом проходе, кроме первого, "чужая" валютная пара. Если валютных пар пять, то SymbolSelect(Exp_Symbol, true) сработает пять раз, для пяти разных символов.

В коде у меня обращение к функциям SymbolSelect() , SymbolIsSynchronized(), CopyRates() по "чужим" символам (следовательно история должна подкачаться). При первом тестировании данные есть, а при повторном их нет и эксперт в тестере вылетает с ошибкой.

 
Konstantin83:

Этот код находится в цикле по валютным парам, Exp_Symbol на каждом проходе кроме первого "чужая" валютная пара. В коде у меня обращение к функциям SymbolSelect() , SymbolIsSynchronized(), CopyRates() по "чужим" символам (следовательно история должна подкачаться). При первом тестировании данные есть, а при повторном их нет и эксперт в тестере вылетает с ошибкой.


Можете в сервисдеск прислать эксперта и описание настроек оптимизации/тестирования?
 
alexvd:
Можете в сервисдеск прислать эксперта и описание настроек оптимизации/тестирования?
Создал.
 
Вот только сейчас  опять  на демо счете котировки зависли. Связь есть, а движения нет. 
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 

Хочу выгрузить данные за январь 2009 года. Данные по часовикам и 15-ти минуткам выгрузил,а по 5-ти минуткам не выгружается, пишет нет истории. Почему не подкачивается история по 5-ти минуткам?

void OnStart()
  {
   int size = 25;
   datetime dateFrom;
   datetime dateTo;
   MqlRates rates[];
   MqlDateTime stDate;
   int FileHandle;
  
   stDate.day  = 1;
   stDate.hour = 0;
   stDate.mon  = 1;
   stDate.year = 2009;
   dateFrom    = StructToTime( stDate );
   stDate.day  = 31;
   dateTo      = StructToTime( stDate );
  
  
   ArraySetAsSeries(rates,true);
  
   int copied=CopyRates(Symbol(), PERIOD_M5, dateFrom, dateTo, rates);
   for(int i=0;i<100;i++)
     {
      if(GetLastError()!=0)
       {
        Sleep(5000);
        copied=CopyRates(Symbol(), PERIOD_M5, dateFrom, dateTo, rates);
       }
      else
       {
        break;
       }
      Print("Нет истории, проход № " + i);
     }
   if(copied>0)
     {
      Print("Скопировано баров: "+IntegerToString(copied));
      //string format="open = %G, high = %G, low = %G, close = %G, volume = %d";
      string out;
      size = ArraySize(rates);
      ResetLastError();
     
      FileHandle=FileOpen("Data.csv",FILE_WRITE|FILE_CSV);
      if(FileHandle==INVALID_HANDLE)
        {
         Print("Ошибка " + IntegerToString((GetLastError())));
        }
      for(int i=size-1;i>=0;i--)
        {
         FileWrite(FileHandle, TimeToString(rates[i].time), DoubleToString(rates[i].open, _Digits), DoubleToString(rates[i].high, _Digits), DoubleToString(rates[i].low, _Digits), DoubleToString(rates[i].close, _Digits));
        }
     
      Print("size = " + FileSize(FileHandle));
      FileFlush(FileHandle);
      FileClose(FileHandle);
     }
   else
    {
     Print("Не удалось получить исторические данные по символу ",Symbol());
     Print("Ошибка " + GetLastError());
    }
  }

 

Решил проверить как работает функция ArrayResize со всеми параметрами. Компилируеся без проблем, автоторговля везде разрешена, но эксперт выгружается с графика, даже не заходя в OnInit.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Print(__FUNCTION__);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Print(__FUNCTION__);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
   double ZZ[][2];
//==============================================   
   Print(__FUNCTION__);
   
   ResetLastError();
   ArrayResize(ZZ,5,5);
   for(int i=0;i<10;i++) {
      ZZ[i][0]=i;
      Print("i=",i,"; ZZ=",ZZ[i][0]);
      Print(GetLastError());
   }
   return;
}
//+------------------------------------------------------------------+

В чем дело, ума не приложу.

1

2

 
Talex:

Решил проверить как работает функция ArrayResize со всеми параметрами. Компилируеся без проблем, автоторговля везде разрешена, но эксперт выгружается с графика, даже не заходя в OnInit.

В чем дело, ума не приложу.


Банальное out of range, посмотрите во вкладке "Эксперты"
Резервирование не есть аллокация, у Вас массив как был так и остаётся на пять элементов, хотя память выделена под 10.

 
mql5:

Банальное out of range, посмотрите во вкладке "Эксперты"
Резервирование не есть аллокация, у Вас массив как был так и остаётся на пять элементов, хотя память выделена под 10.

Точно, спасибо. Не ту вкладку смотрел, сижу болею, видимо сказывается.
 
Talex:

Решил проверить как работает функция ArrayResize со всеми параметрами. Компилируеся без проблем, автоторговля везде разрешена, но эксперт выгружается с графика, даже не заходя в OnInit.

Вообще говоря, на приведенном скриншоте показан Журнал терминала. А то что Вы ищете, находится на закладке Эксперты.
 

Здравствуйте,

У меня,после тест и включения оптимизации выходит ето:

Core 1 genetic pass (127, 1195) tested with error "critical runtime error 

Тест нормально.

Причина обращения: