Тики в реальном времени - страница 9

 
Andrey Khatimlianskii:

Посмотрел внимательно, несколько раз.

В 13:40:50.839 в OnTick были получены тики, которые дошли до OnBookEvent только в 13:40:50.853

Это не прокомментируете? )

 
Andrey Khatimlianskii:

Находит только такой:

Но не открывает там счет.

Сбросьте инвест, запущу тест у себя.

Как это сделать?

 
Andrey Khatimlianskii:

Находит только такой:

Но не открывает там счет.

Сбросьте инвест, запущу тест у себя.

Счёт нужно открывать у них на сайте.

 
Andrey Khatimlianskii:

Это не прокомментируете? )

Вы лучше это прокомментируйте


Налицо явные пропуски в OnTick()

Андрей!

Зачем Вам счет, я выложил лог, или Вы думаете, что я его подправлял?

Добавлено

И еще, у вас в коде есть неточность

if ( CopyTicks( _Symbol, cur_ticks, COPY_TICKS_ALL, 0, 1 ) > 0 )
                {
                        last_tick_time = cur_ticks[0].time_msc;
                        last_tick = cur_ticks[0];
                }

А если CopyTicks() возвращает "0"

У Вас не обрабатывается эта ситуация, а при использовании OnBookEvent()

такая ситуация встречается часто, она происходит, когда в стакан ставится (удаляется) отложенный

ордер с уже существующей ценой, OnBookEvent() срабатывает, а вот OnTick()  - нет

В моей реализации это учитывается

result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0);
      if(result > 0)
      {
        if(result > t_cnt)
        {
          mem_cnt = t_cnt;
          t_cnt = 0;
          for(int i= 0; i<(result - int(mem_cnt)); i++)
          {
            if(ticks[i].time_msc == ticks[0].time_msc) t_cnt++;
            Print(GetTickDescription(ticks[i]));
          } 
          if(last_time == ulong(ticks[0].time_msc))
          {
            t_cnt += int(mem_cnt);
          }
          else last_time = ulong(ticks[0].time_msc + 1);
        }
        else
        {
          t_cnt = 0;
          last_time++;
        }
      }
      else
      {
        t_cnt = 0;
        last_time++;
      }
 else
      {
        t_cnt = 0;
        last_time++;
        Print("CopyTicks return ", result);
      }
2020.01.31 15:09:11.824	Ticks_test (GOLD-3.20,M1)	2020.01.31 15:09:05.627 Ask=1585.4 
2020.01.31 15:09:11.872	Ticks_test (GOLD-3.20,M1)	2020.01.31 15:09:05.627 Ask=1585.4 
2020.01.31 15:09:12.118	Ticks_test (GOLD-3.20,M1)	2020.01.31 15:09:05.790 Ask=1585.5 
2020.01.31 15:09:12.463	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0
2020.01.31 15:09:13.135	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0
2020.01.31 15:09:13.556	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0
2020.01.31 15:09:14.496	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0
2020.01.31 15:09:15.482	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0
2020.01.31 15:09:15.674	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0
2020.01.31 15:09:15.696	Ticks_test (GOLD-3.20,M1)	CopyTicks return 0

 
prostotrader:

Вы лучше это прокомментируйте


Налицо явные пропуски в OnTick()

Пропусков не видел, а задержки - в обе стороны.

Но это не я выдвигал тезис, что в ОнБук тики приходят быстрее, а вы. Лог показал, то бывает и наоборот.

Поэтому комментариев жду от вас.


prostotrader:

Андрей!

Зачем Вам счет, я выложил лог, или Вы думаете, что я его подправлял?

Да нет, просто интересно сравнить свои результаты с вашими в одних условиях.


prostotrader:

И еще, у вас в коде есть неточность

А если CopyTicks() возвращает "0"

У Вас не обрабатывается эта ситуация, а при использовании OnBookEvent()

такая ситуация встречается часто, она происходит, когда в стакан ставится отложенный

ордер с уже существующей ценой, OnBookEvent() срабатывает, а вот OnTick()  - нет

И зачем этот "тик"? Это и не тик вовсе, если использовать общепринятую терминологию.

Мой вариант просто пропускает тики, у которых не изменилось время или одна из цен. Так как для анализа тикового потока они не нужны (нужны для анализа стакана, но о нем сейчас речи не идет).

 
prostotrader:

Как это сделать?

На закладке Почта есть письмо про открытие счета, там есть логин и 2 пароля - трейдерский и инвесторский.

 
Andrey Khatimlianskii:



И зачем этот "тик"? Это и не тик вовсе, если использовать общепринятую терминологию.

Мой вариант просто пропускает тики, у которых не изменилось время или одна из цен. Так как для анализа тикового потока они не нужны (нужны для анализа стакана, но о нем сейчас речи не идет).

Сразу видно, что Вы поклонник ФОРЕКС,

а на ФОРТС очень часто анализируется весь стакан (все его изменения), это важно для торговли на Бирже!

 
Andrey Khatimlianskii:

На закладке Почта есть письмо про открытие счета, там есть логин и 2 пароля - трейдерский и инвесторский.

Investor  : FfiR87ty (read only password)

 
Andrey Khatimlianskii:

Пропусков не видел, а задержки - в обе стороны.


Как это не видел?

А это что?


Вообщем, для меня все давно было очевидно, пусть каждый сам выбирает что ему "по душе"!

Добавлено

OnBookEvent() специально создана для работы со стаканом.

Вызывается в индикаторах и экспертах при наступлении события BookEvent.
Функция предназначена для обработки изменений стакана цен (Depth of Market).

А на бирже стакан всему "голова"!

Добавлено

Вы, думаю что не специально, берете только один тик

if ( CopyTicks( _Symbol, cur_ticks, COPY_TICKS_ALL, 0, 1 ) > 0 )
                {
                        last_tick_time = cur_ticks[0].time_msc;
                        last_tick = cur_ticks[0];
                }

Тем самым пропускаете, все что было до этого времени (0, т.е текущее время)!

В моей реализации учитываются ВСЕ тики

result = CopyTicks(Symbol(), ticks, COPY_TICKS_ALL, last_time, 0);

Ваш код не годится для подобного тестирования!

 
prostotrader:

Сразу видно, что Вы поклонник ФОРЕКС,

а на ФОРТС очень часто анализируется весь стакан (все его изменения), это важно для торговли на Бирже!

Поклонник здесь один, и это вы.

Я работаю с технической информацией.

Задачи анализировать стакан в этой теме не стояло, от слова совсем. Тики без изменений цен не нужны по условиям задачи.

Причина обращения: