Может просто не быть данных на запрашиваемую дату.
Я смотрю только предыдущий бар относительно текущего. Как может
не быть?
Прежде чем использовать слово "глюк" по отношению к терминалу,
проведите полный анализ своего кода и своих данных.
А если ошибку проверять сразу же после ее возникновения?
int GetInfo(string OurSymbol, int Bar) { int OurDigits = MarketInfo(OurSymbol, MODE_DIGITS); double KValue; KValue = iCustom(OurSymbol, 0, INDICATOR_NAME, false, 0.0, 0.0, 0.0, 0.0, BoldRed1, BoldRed2, 2, Bar); if(KValue == EMPTY_VALUE) { Print("KValue = EMPTY_VALUE"); return (STATUS_WAIT); } KValue = NormalizeDouble(KValue, OurDigits + 1); double OpenSymb = iOpen(OurSymbol, 0, 1); if(OpenSymb == 0.0) {Ведь вызов функции GetLastError() сбрасывает в ноль внутренюю переменную, содержащую код последней ошибки:
Print("OpenSymb " + DoubleToStr(OpenSymb, 8) + " iOpen error GLE: " + GetLastError()); }
double CloseSymb = iClose(OurSymbol, 0, 1); if(CloseSymb == 0.0) {
Print("CloseSymb " + DoubleToStr(CloseSymb, 8) + " iClose error GLE: " + GetLastError()); }
double Av = MinMax(OpenSymb, CloseSymb, OurDigits); double Result = KValue - Av; Result = NormalizeDouble(Result, OurDigits + 1); if(Result < 0.00000) { Print(OurSymbol + " BUY " + Result); return (OP_BUY); } if(Result > 0.00000) { Print(OurSymbol + " SELL " + Result); return (OP_SELL); } if(Result == 0.00000) { Print(OurSymbol + " WAIT " + Result); return (STATUS_WAIT); } }//+---------------------------------------------------------------------------------------------+
Функция возвращает код последней ошибки, после чего значение специальной переменной last_error, в которой хранится код последней ошибки обнуляется. Так что
последующий вызов GetLastError() вернет значение 0. Пример:
int err;
int handle=FileOpen("somefile.dat", FILE_READ|FILE_BIN);
if(handle<1)
{
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
return(0);
}
Посмотрите пример по функции ArrayCopySeries
мне нужно каждый раз связывать массивы с помощью ArrayCopySeries или этого будет достаточно на этапе инициализации?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
тестер выдает что почему то iOpen и iClose бывают равны 0 и иногда даже GetLastError() возвращает 0 при этом.
Bar = 1