Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А где и как формируется MarketWatch?
как я понял этот блок пытается добавить символ в список, с проверкой результата.
Но если эксперт мульт значит добавляться должны несколько валютных пар (что из приведенного выше примера не видно).
Этот код находится в цикле по валютным парам, Exp_Symbol на каждом проходе, кроме первого, "чужая" валютная пара. Если валютных пар пять, то SymbolSelect(Exp_Symbol, true) сработает пять раз, для пяти разных символов.
В коде у меня обращение к функциям SymbolSelect() , SymbolIsSynchronized(), CopyRates() по "чужим" символам (следовательно история должна подкачаться). При первом тестировании данные есть, а при повторном их нет и эксперт в тестере вылетает с ошибкой.
Этот код находится в цикле по валютным парам, Exp_Symbol на каждом проходе кроме первого "чужая" валютная пара. В коде у меня обращение к функциям SymbolSelect() , SymbolIsSynchronized(), CopyRates() по "чужим" символам (следовательно история должна подкачаться). При первом тестировании данные есть, а при повторном их нет и эксперт в тестере вылетает с ошибкой.
Можете в сервисдеск прислать эксперта и описание настроек оптимизации/тестирования?
Хочу выгрузить данные за январь 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.
В чем дело, ума не приложу.
Решил проверить как работает функция ArrayResize со всеми параметрами. Компилируеся без проблем, автоторговля везде разрешена, но эксперт выгружается с графика, даже не заходя в OnInit.
В чем дело, ума не приложу.
Банальное out of range, посмотрите во вкладке "Эксперты"
Резервирование не есть аллокация, у Вас массив как был так и остаётся на пять элементов, хотя память выделена под 10.
Банальное out of range, посмотрите во вкладке "Эксперты"
Резервирование не есть аллокация, у Вас массив как был так и остаётся на пять элементов, хотя память выделена под 10.
Решил проверить как работает функция ArrayResize со всеми параметрами. Компилируеся без проблем, автоторговля везде разрешена, но эксперт выгружается с графика, даже не заходя в OnInit.
Здравствуйте,
У меня,после тест и включения оптимизации выходит ето:
Core 1 genetic pass (127, 1195) tested with error "critical runtime error
Тест нормально.