Если всё так просто сделайте пример, простой до безобразия, без учёта подкачки истории.
Задача: Первый тик пропускаем. На втором работаем. На третьем и всех последующих курим бамбук. С каждым следующим баром всё повторяется.
вот набросал, проверять не хочу, но логику этого кода думаю поймете:
staticint tick=0;
staticdatetime t=0;
if(t!=time[1])
{
tick++; // эту строчку нужно или тут или в конце этого условия - проверить!if(tick>=2)
{
t=time[1];
tick=0;
}
}
ждем новый бар, но запоминать время нового бара будем только по прошествии Х тиков
Так время-то будет одно и то-же при каждом тике. Эти кубики тоже в моём мозгу не сложились. Сколько не смотри время, а оно неизмено до следующего бара.
Встречал-ли кто ситуацию, что с первым тиком бара tick_volume[0] был-бы больше единицы?
Мысль такая.
if(rates_total > prev_calculated)
{
if(tick_volume[rates_total-1] == 1)
return(rates_total-1);
// при следующем входе будет второй тик. А дальше не будет нового бара
}
ps; Это код из mql5. Проверяю в тестере на исторических данных. Для mql4 должно быть tick_volume[0]
Заменить tick_volume[rates_total-1] на static int счётчик.
Заменить tick_volume[rates_total-1] на static int счётчик.
тут не подскажу, проверять поведение нужно, все лучше проверить сразу и забыть )))
я так проверил и использую всегда для обнаружения нового бара исключительно время бара №1, я а многие запоминают время бара №0 - я проверял, когда то бывает синхронизация и время бара №0 может сбрасываться, а бар №1 он как бы всегда уже синхронизирован
проверяйте, другой вопрос что сегодня рынок не работает, нужно на биткоине проверить, кажется робо... дает биткоин торговать - он на выходных "тикает"
тут не подскажу, проверять поведение нужно, все лучше проверить сразу и забыть )))
я так проверил и использую всегда для обнаружения нового бара исключительно время бара №1, я а многие запоминают время бара №0 - я проверял, когда то бывает синхронизация и время бара №0 может сбрасываться, а бар №1 он как бы всегда уже синхронизирован
проверяйте, другой вопрос что сегодня рынок не работает, нужно на биткоине проверить, кажется робо... дает биткоин торговать - он на выходных "тикает"
Мне проще на исторических реальных тиках проверить в тестере МТ5.
я так проверил и использую всегда для обнаружения нового бара исключительно время бара №1, я а многие запоминают время бара №0 - я проверял, когда то бывает синхронизация и время бара №0 может сбрасываться, а бар №1 он как бы всегда уже синхронизирован
Вполне себе рабочий вариант. Проверять равенство времени без разницы на каком баре, главное чтоб не разные. А с приходом нового бара оно и на предыдущих сместится.
Мне проще на исторических реальных тиках проверить в тестере МТ5.
у Вас задача другая, Вам не тики нужны, а события терминала, тестер МТ5 хорош, но событийной модели я почему то ему не доверяю
Konstantin Nikitin:
Вполне себе рабочий вариант. Проверять равенство времени без разницы на каком баре, главное чтоб не разные. А с приходом нового бара оно и на предыдущих сместится.
я не спорю, но мне бар №1 больше нравится бара №0... так сказать дело вкуса )))
у Вас задача другая, Вам не тики нужны, а события терминала, тестер МТ5 хорош, но событийной модели я почему то ему не доверяю
Как не тики если в заголовке темы написано именно о тиках?
Немного расшарю задачу. На двух терминалах, подключенных к разным брокерам один и тот-же индикатор показывает иногда разные, а иногда одинаковые значения. Задача отловить одинаковые значения индикатора на разных счетах. Решил делать через запись в файл. При первом тике бара "писатель" пишет, а читатель читает этот файл. Но иногда бывает, что писатель ещё не записал, а читатель уже пытается прочесть. В этот момент вылетает ошибка открытия файла. Для предотвращения такой ошибки и было решено чтение отложить до второго тика. Так сказать дать время писателю на запись файла. Пропуск одного тика читателя, ни на что не влияет.
Если всё так просто сделайте пример, простой до безобразия, без учёта подкачки истории.
Задача: Первый тик пропускаем. На втором работаем. На третьем и всех последующих курим бамбук. С каждым следующим баром всё повторяется.
вот набросал, проверять не хочу, но логику этого кода думаю поймете:
ждем новый бар, но запоминать время нового бара будем только по прошествии Х тиковТак время-то будет одно и то-же при каждом тике. Эти кубики тоже в моём мозгу не сложились. Сколько не смотри время, а оно неизмено до следующего бара.
??? Может так.
P.S. Для администрации!!! С правкой кода проблема. Некоторые строки сливает, а некоторые переводит в одну строку.вот набросал, проверять не хочу, но логику этого кода думаю поймете:
ждем новый бар, но запоминать время нового бара будем только по прошествии Х тиковВозможно получится объединить эту идею с моей
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Пропустить первый тик бара.
Alexey Viktorov, 2019.06.08 09:05
Встречал-ли кто ситуацию, что с первым тиком бара tick_volume[0] был-бы больше единицы?
Мысль такая.
ps; Это код из mql5. Проверяю в тестере на исторических данных. Для mql4 должно быть tick_volume[0]Проблема решена. Всем спасибо. Все кубики сложились.
И никак не зависим от количества тикового объёма пришедшего за один тик.
В моём случае подкачка пропущенных баров не интересует, как минимум до определённого момента испытаний.
Возможно получится объединить эту идею с моей
тут не подскажу, проверять поведение нужно, все лучше проверить сразу и забыть )))
я так проверил и использую всегда для обнаружения нового бара исключительно время бара №1, я а многие запоминают время бара №0 - я проверял, когда то бывает синхронизация и время бара №0 может сбрасываться, а бар №1 он как бы всегда уже синхронизирован
проверяйте, другой вопрос что сегодня рынок не работает, нужно на биткоине проверить, кажется робо... дает биткоин торговать - он на выходных "тикает"
тут не подскажу, проверять поведение нужно, все лучше проверить сразу и забыть )))
я так проверил и использую всегда для обнаружения нового бара исключительно время бара №1, я а многие запоминают время бара №0 - я проверял, когда то бывает синхронизация и время бара №0 может сбрасываться, а бар №1 он как бы всегда уже синхронизирован
проверяйте, другой вопрос что сегодня рынок не работает, нужно на биткоине проверить, кажется робо... дает биткоин торговать - он на выходных "тикает"
Мне проще на исторических реальных тиках проверить в тестере МТ5.
Igor Makanu:
я так проверил и использую всегда для обнаружения нового бара исключительно время бара №1, я а многие запоминают время бара №0 - я проверял, когда то бывает синхронизация и время бара №0 может сбрасываться, а бар №1 он как бы всегда уже синхронизирован
Вполне себе рабочий вариант. Проверять равенство времени без разницы на каком баре, главное чтоб не разные. А с приходом нового бара оно и на предыдущих сместится.
Мне проще на исторических реальных тиках проверить в тестере МТ5.
у Вас задача другая, Вам не тики нужны, а события терминала, тестер МТ5 хорош, но событийной модели я почему то ему не доверяю
Вполне себе рабочий вариант. Проверять равенство времени без разницы на каком баре, главное чтоб не разные. А с приходом нового бара оно и на предыдущих сместится.
я не спорю, но мне бар №1 больше нравится бара №0... так сказать дело вкуса )))
у Вас задача другая, Вам не тики нужны, а события терминала, тестер МТ5 хорош, но событийной модели я почему то ему не доверяю
Как не тики если в заголовке темы написано именно о тиках?
Немного расшарю задачу. На двух терминалах, подключенных к разным брокерам один и тот-же индикатор показывает иногда разные, а иногда одинаковые значения. Задача отловить одинаковые значения индикатора на разных счетах. Решил делать через запись в файл. При первом тике бара "писатель" пишет, а читатель читает этот файл. Но иногда бывает, что писатель ещё не записал, а читатель уже пытается прочесть. В этот момент вылетает ошибка открытия файла. Для предотвращения такой ошибки и было решено чтение отложить до второго тика. Так сказать дать время писателю на запись файла. Пропуск одного тика читателя, ни на что не влияет.