Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Эта ошибка выходит не при компиляции, а когда цепляю индикатор к графику, или меняю таймфрейм.
Это сообщение об ошибке воспроизводится постоянно, или со временем исчезает?
Парни! А MT5 к любому ДЦ можно подключить?
Нет. Торговать через МТ5 возможно через того брокера, который предоставляет возможность торговли через эту платформу, например, ВТБ24 и Альфа-форекс.
Это сообщение об ошибке воспроизводится постоянно, или со временем исчезает?
Это сообщение об ошибке воспроизводится постоянно, или со временем исчезает?
Это сообщение об ошибке воспроизводится постоянно, или со временем исчезает?
FinEngineer:
Один раз, когда цепляю индикатор к графику...
Ну тогда у Вас всё отлично. Когда Вы только-только цепляете программу к графику или меняете таймфрейм, в терминале нет никаких новых рассчитанных данных для индикатора RSI или любого другого. И терминалу требуется некоторое время, чтобы рассчитать нужные индикаторные буферы. Посмотрите внимательно свой код (понимаю, что он написан по чьему-то образцу, но тем не менее): у Вас там при недостаточности рассчитанных данных для RSI функция OnCalculate() прекращает свою работу ('return(0);') и дожидается нового тика. Как только на очередном тике индикаторные буферы для RSI будут полностью рассчитаны, Ваш индикатор начнёт работать в обычном режиме. Что и происходит, судя по Вашим словам.
Вы также можете вставить проверку с BarsCalculated() в функцию OnInit() - тогда и ошибка будет возникать очень редко (если вообще будет появляться). Пример приведён в описании функции BarsCalculated().
По поводу этой ошибки я Вам уже вчера написал. (Не забудьте вставить код правильно :) )
Убрал кусок кода который отвечает за недостаточность данных(ниже)
int calculated=BarsCalculated(RSI1_Handle);
if(calculated<rates_total)
{
Print("Not all data of RSI1_Handle is calculated (",calculated,"bars ). Error",GetLastError());
return(0);
}
calculated=BarsCalculated(RSI2_Handle);
if(calculated<rates_total)
{
Print("Not all data of RSI2_Handle is calculated (",calculated,"bars ). Error",GetLastError());
return(0);
Подскажите как куски кода выделять в сообщении?
Теперь выходит ошибка:
2012.12.22 15:14:00 Pair_delta_RSI (EURGBP,M1) Getting RSI1 is failed! Error4806Вставить код правильно.
Да нормально он у Вас там работал, этот "кусок кода, который отвечает за недостаточность данных". И правильно сообщал, что при поступлении первого тика данные для RSI ещё не рассчитаны терминалом. Если не нравится получать сообщения об ошибке, то попробуйте сделать, как указано выше, а именно: проверять наличие рассчитанных данных не только в OnCalculate(), но и в OnInit(). Иными словами, попробуйте в OnInit() дождаться расчёта данных для выбранных Вами технических индикаторов (дождаться посредством конечного цикла), а затем уже переходить к обработке тиков в OnCalculate(), когда данные для индикаторов будут гарантированно рассчитаны.
Добавление. В конце концов, удаление части проверочного кода совершенно не способствует увеличению количества рассчитываемых данных индикатора :)