Ну так если открыт график и создаётся индикатор по текущему ТФ, то данные уже должны быть готовы при открытии графика. Разве нет?
не совсем правильно выразился. Бары да - скорей всего готовы. Но нет гарантии, что индикатор пересчитался для всех этих баров в первый заход в OnCalculate, когда prev_calculated == 0. Можно запустить такой индикатор, чтобы в этом убедиться. Только нужно это делать, когда идут котировки. Если рынок закрыт, то рассогласования не увидите. Поэтому сейчас на выходных это лучше пробовать на криптовалюте, которая в движухе. Если Size of Buffer array = -1, то значит буфер индикатора еще не пересчитан и значение BS будет не верным.
datetime a = D'2021.04.08 10:00:00';
int handle;
double Buffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
handle = iCustom(_Symbol, PERIOD_CURRENT, "Examples\\ATR.ex5", 14);
::Print(__FUNCTION__ + "| PERIOD_CURRENT = ", EnumToString(_Period));
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
if(handle != INVALID_HANDLE)
{
::CopyBuffer(handle, 0, a, 1, Buffer);
double BS = ::NormalizeDouble(Buffer[0], _Digits);
::Print(__FUNCTION__ + "| a = ", a);
::Print(__FUNCTION__ + "| BS ", BS);
int total_bars = iBars(NULL,PERIOD_CURRENT);
int size = CopyBuffer(handle, 0, 0, total_bars, Buffer);
Print("Total Bars = " + string(total_bars) + ", Size of Buffer array = " + string(size));
handle = INVALID_HANDLE;
}
// return value of prev_calculated for next callreturn(rates_total);
}
если это делать на следующем заходе в OnCalculate (когда prev_calculated>0) то такой проблемы уже не будет.
Я имел ввиду данные для расчёта индикатора. Не ёрничай))))
Открываешь новый график символа. Свечи на нём видишь. Запускаешь индикатор, а он данных не видит и выходит из обработчика до следующего тика. На следующем тике видит данные и рассчитывается.
Это работает. Был еще совет, но я не нахожу сейчас этот пост. Тоже действует. Спасибо.
Полагаю, что разработчики должны были бы отразить подобное изменение в документации. Иначе простое действие может вызывать некоторое недоумение - определяю время между двумя событиями и получаю:
Print(iTime(0,0,0)-iTime(0,0,3)); // Результат: 1970.01.04 00:00:00// Разобраться можно, но выглядит странно.
Что значит ошибка в тестере "occupied by another terminal" ? нигде нет ответа. Каким другим терминалом занято? Облако отключено у меня, идет одна оптимизация.
Кто-нибудь в курсе, что означают два разных объема ордера через слеш в одной сделке?
И второй вопрос: счет подписан на сигнал, и у провайдера эти две сделки еще открыты. Почему же они были закрыты у меня? Прикладываю, что выдавал журнал во время открытия сделок.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Ну так если открыт график и создаётся индикатор по текущему ТФ, то данные уже должны быть готовы при открытии графика. Разве нет?
О, сколько нам открытий чудных готовит ... дальшесампродолж
Ну так если открыт график и создаётся индикатор по текущему ТФ, то данные уже должны быть готовы при открытии графика. Разве нет?
не совсем правильно выразился. Бары да - скорей всего готовы. Но нет гарантии, что индикатор пересчитался для всех этих баров в первый заход в OnCalculate, когда prev_calculated == 0.
Можно запустить такой индикатор, чтобы в этом убедиться.
Только нужно это делать, когда идут котировки. Если рынок закрыт, то рассогласования не увидите.
Поэтому сейчас на выходных это лучше пробовать на криптовалюте, которая в движухе.
Если Size of Buffer array = -1, то значит буфер индикатора еще не пересчитан и значение BS будет не верным.
если это делать на следующем заходе в OnCalculate (когда prev_calculated>0) то такой проблемы уже не будет.
ЗЫ в коде была ошибка - исправил
О, сколько нам открытий чудных готовит ... дальшесампродолж
Я имел ввиду данные для расчёта индикатора. Не ёрничай))))
Я имел ввиду данные для расчёта индикатора. Не ёрничай))))
Обманываешь.
Обманываешь.
Это работает. Был еще совет, но я не нахожу сейчас этот пост. Тоже действует. Спасибо.
Полагаю, что разработчики должны были бы отразить подобное изменение в документации. Иначе простое действие может вызывать некоторое недоумение - определяю время между двумя событиями и получаю:
скрывается и комментарий чарта?
Думал, что если он кому-то мешает, то его можно затереть самому.
Добрый вечер!
Кто-нибудь в курсе, что означают два разных объема ордера через слеш в одной сделке?
И второй вопрос: счет подписан на сигнал, и у провайдера эти две сделки еще открыты. Почему же они были закрыты у меня? Прикладываю, что выдавал журнал во время открытия сделок.
Что это может быть за чертовщина?