то, что Bid и Close это одно и то же, я уже усвоил за 8 лет на форексе))) Сейчас вопрос в том, как получить все Бидыиз пакета.
А то может оказаться, что придёт пакет, скажем, с тремя разными Бидами. OnCalculate будет вызван 3 раза, но каждый раз в переменной Bid, из которой я буду читать, будет храниться первое или последнее значение из этого пакета. А мне все нужны.
то, что Bid и Close это одно и то же, я уже усвоил за 8 лет на форексе))) Сейчас вопрос в том, как получить все Бидыиз пакета.
А то может оказаться, что придёт пакет, скажем, с тремя разными Бидами. OnCalculate будет вызван 3 раза, но каждый раз в переменной Bid, из которой я буду читать, будет храниться первое или последнее значение из этого пакета. А мне все нужны.
Получите все три. Единственный минус - у всех тиков будет одно и то же время - TimeCurrent().
Получите все три. Единственный минус - у всех тиков будет одно и то же время - TimeCurrent().
Сейчас проверил. Видимо, уже нет этой фишки. Проверял так:
Подключил индикатор к графику.
Перезагрузил терминал.
При загрузке получил 13 срабатываний OnCalculate. Все ценовые значения одинаковые.
Таким образом, тики ловятся, но цену каждого из них в отдельности получить невозможно. Получаем цену только последнего из них. В таймсериях - то же самое.
Сейчас проверил. Видимо, уже нет этой фишки. Проверял так:
Подключил индикатор к графику.
Перезагрузил терминал.
При загрузке получил 13 срабатываний OnCalculate. Все ценовые значения одинаковые.
Таким образом, тики ловятся, но цену каждого из них в отдельности получить невозможно. Получаем цену только последнего из них. В таймсериях - то же самое.
Повесил на выходные на отдельные графики Биткойна советника и индиктора с одинаковым кодом
tick_count++;
Comment(tick_count);
За сутки индикатор вырвался вперёд на 20 тиков. Это уже что-то. Ещё буду проверять в деле. Потом отчитаюсь.
Повесил на выходные на отдельные графики Биткойна советника и индиктора с одинаковым кодом
За сутки индикатор вырвался вперёд на 20 тиков. Это уже что-то. Ещё буду проверять в деле. Потом отчитаюсь.
Да, я тоже постоянно фиксирую превышение количества тиков на некоторых барах по сравнению с тем количеством, которое дает ДЦ. В чем дело - не разобрался до сих пор. Я понимаю еще, когда фиксируется меньше количество тиков (не дошли до сети/терминала), а вот большее количество никак не укладывается в голове.
Да, я тоже постоянно фиксирую превышение количества тиков на некоторых барах по сравнению с тем количеством, которое дает ДЦ. В чем дело - не разобрался до сих пор. Я понимаю еще, когда фиксируется меньше количество тиков (не дошли до сети/терминала), а вот большее количество никак не укладывается в голове.
Просто происходит отражение, эхо, повтор, размножение. Посмотрите, там же та самая цена и то же самое время. Есть минимальный интервал между тиками - кажется 20 мс. Если предусмотрено разработчиками - должна быть ловушка. Однажды у нас был случай, когда сеть случайно закольцевалась - сигналы шли по кольцу, и на каждом круге дублировались. Сеть переполнилась. Пришлось высылать специалиста.Чаще всего это бывает в аппаратуре Киске = Cisco. Сообщайте брокерам, пусть принимают меры.
Да, я тоже постоянно фиксирую превышение количества тиков на некоторых барах по сравнению с тем количеством, которое дает ДЦ. В чем дело - не разобрался до сих пор. Я понимаю еще, когда фиксируется меньше количество тиков (не дошли до сети/терминала), а вот большее количество никак не укладывается в голове.
Если ещё интересен этот вопрос, отчитываюсь, как и обещал ))
Повесил вот такой индикатор
#property strict#property indicator_chart_windowdatetime curoptime = 0;
long mytickvol = 0;
//+------------------------------------------------------------------+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(time[0] > curoptime)//новый бар
{
curoptime = time[0];//запоминаем время открытия нового бара
mytickvol = 0; //обнуляем свой счётчик тиков
}
mytickvol++;
// Сразу после запуска может давать Алерт до конца бара, а дальше, должно срабатывать только если будет пакет ценif(mytickvol != tick_volume[0]) Alert("mytickvol ",mytickvol," tick_volume[0] ", tick_volume[0], " Bid ", Bid, " close[0] ", close[0]);
//Просто интересно бывает ли, что Bid и close[0] отличаютсяif(Bid != close[0]) Alert("Bid ", Bid, " close[0] ", close[0], "mytickvol ",mytickvol," tick_volume[0] ", tick_volume[0]);
return(rates_total);
}
Результат показал, что OnCalculate(), к сожалению, тоже вызывается только для одной цены из пакета. Особенно хорошо это видно в красных рамочках, когда между двумя вызовами OnCalculate() цена Bid остаётся неизменной, а разрыв между tick_volume[0] и mytickvol возрастает.
Если ещё интересен этот вопрос, отчитываюсь, как и обещал ))
Повесил вот такой индикатор
Результат показал, что OnCalculate(), к сожалению, тоже вызывается только для одной цены из пакета. Особенно хорошо это видно в красных рамочках, когда между двумя вызовами OnCalculate() цена Bid остаётся неизменной, а разрыв между tick_volume[0] и mytickvol возрастает.
Я чуть выше показал, что при пакетном приеме невозможно получить цену каждого тика из пакета. Раньше я как-то делал это. Видимо, все-таки, Bid менялся при каждом вызове OnCalculate. Сейчас такого поведения не наблюдаю.
Ну а по сути приведенного Вами рисунка выводы неправильные. Ведь одна и та же цена зафиксирована в разное время. То есть это не пакет тиков, а нормальны приход тиков один за другим. То, что у них цены Bid одинаковые, ни о чем не говорит. Новый тик не обязан отличаться по цене от предыдущего, что не мешает быть ему другим тиком. Кроме того, в указанных тиках могла быть разная цена Ask. Выведите еще и ее, чтобы отследить этот момент.
Игорь, спасибо! Это очень хорошая новость) Я обязательно проверю! Т.е. вот этот код гарантированно запишет все тики, пришедшие в терминал?
Или вместо Bid надо что-то другое применить?
текущий bid - это текущий close
текущий bid - это текущий close
то, что Bid и Close это одно и то же, я уже усвоил за 8 лет на форексе))) Сейчас вопрос в том, как получить все Биды из пакета.
А то может оказаться, что придёт пакет, скажем, с тремя разными Бидами. OnCalculate будет вызван 3 раза, но каждый раз в переменной Bid, из которой я буду читать, будет храниться первое или последнее значение из этого пакета. А мне все нужны.
то, что Bid и Close это одно и то же, я уже усвоил за 8 лет на форексе))) Сейчас вопрос в том, как получить все Биды из пакета.
А то может оказаться, что придёт пакет, скажем, с тремя разными Бидами. OnCalculate будет вызван 3 раза, но каждый раз в переменной Bid, из которой я буду читать, будет храниться первое или последнее значение из этого пакета. А мне все нужны.
Получите все три. Единственный минус - у всех тиков будет одно и то же время - TimeCurrent().
Получите все три. Единственный минус - у всех тиков будет одно и то же время - TimeCurrent().
Сейчас проверил. Видимо, уже нет этой фишки. Проверял так:
Сейчас проверил. Видимо, уже нет этой фишки. Проверял так:
Повесил на выходные на отдельные графики Биткойна советника и индиктора с одинаковым кодом
tick_count++; Comment(tick_count);За сутки индикатор вырвался вперёд на 20 тиков. Это уже что-то. Ещё буду проверять в деле. Потом отчитаюсь.
Повесил на выходные на отдельные графики Биткойна советника и индиктора с одинаковым кодом
За сутки индикатор вырвался вперёд на 20 тиков. Это уже что-то. Ещё буду проверять в деле. Потом отчитаюсь.
Да, я тоже постоянно фиксирую превышение количества тиков на некоторых барах по сравнению с тем количеством, которое дает ДЦ. В чем дело - не разобрался до сих пор. Я понимаю еще, когда фиксируется меньше количество тиков (не дошли до сети/терминала), а вот большее количество никак не укладывается в голове.
Да, я тоже постоянно фиксирую превышение количества тиков на некоторых барах по сравнению с тем количеством, которое дает ДЦ. В чем дело - не разобрался до сих пор. Я понимаю еще, когда фиксируется меньше количество тиков (не дошли до сети/терминала), а вот большее количество никак не укладывается в голове.
Просто происходит отражение, эхо, повтор, размножение. Посмотрите, там же та самая цена и то же самое время. Есть минимальный интервал между тиками - кажется 20 мс. Если предусмотрено разработчиками - должна быть ловушка. Однажды у нас был случай, когда сеть случайно закольцевалась - сигналы шли по кольцу, и на каждом круге дублировались. Сеть переполнилась. Пришлось высылать специалиста.Чаще всего это бывает в аппаратуре Киске = Cisco. Сообщайте брокерам, пусть принимают меры.
Да, я тоже постоянно фиксирую превышение количества тиков на некоторых барах по сравнению с тем количеством, которое дает ДЦ. В чем дело - не разобрался до сих пор. Я понимаю еще, когда фиксируется меньше количество тиков (не дошли до сети/терминала), а вот большее количество никак не укладывается в голове.
Если ещё интересен этот вопрос, отчитываюсь, как и обещал ))
Повесил вот такой индикатор
Результат показал, что OnCalculate(), к сожалению, тоже вызывается только для одной цены из пакета. Особенно хорошо это видно в красных рамочках, когда между двумя вызовами OnCalculate() цена Bid остаётся неизменной, а разрыв между tick_volume[0] и mytickvol возрастает.
Если ещё интересен этот вопрос, отчитываюсь, как и обещал ))
Повесил вот такой индикатор
Результат показал, что OnCalculate(), к сожалению, тоже вызывается только для одной цены из пакета. Особенно хорошо это видно в красных рамочках, когда между двумя вызовами OnCalculate() цена Bid остаётся неизменной, а разрыв между tick_volume[0] и mytickvol возрастает.
Я чуть выше показал, что при пакетном приеме невозможно получить цену каждого тика из пакета. Раньше я как-то делал это. Видимо, все-таки, Bid менялся при каждом вызове OnCalculate. Сейчас такого поведения не наблюдаю.
Ну а по сути приведенного Вами рисунка выводы неправильные. Ведь одна и та же цена зафиксирована в разное время. То есть это не пакет тиков, а нормальны приход тиков один за другим. То, что у них цены Bid одинаковые, ни о чем не говорит. Новый тик не обязан отличаться по цене от предыдущего, что не мешает быть ему другим тиком. Кроме того, в указанных тиках могла быть разная цена Ask. Выведите еще и ее, чтобы отследить этот момент.