Форум трейдеров » Торговые роботы, советники, индикаторы » Исследование корреляций времени прихода которовок c ценой
+ Подписаться
Страница 1 из 2 12 ПоследняяПоследняя
  1. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей

    Исследование корреляций времени прихода которовок c ценой

    Тот кто продолжительное время наблюдал за тиковым графиком наверняка заметил, что интервалы времени между соседними тиками отличаются по величине на порядки. То цена стоит как вкопанная, то меняется с невероятной скоростью. Кроме того при более тщательном наблюдении можно заметить что в местах разворота цены скорость прихода тиков неким образом стабилизируется. Лет пять назад я заинтересовался этим явлением и решил его исследовать. Времени на исследование катастрофически не хватало и не доведя его до логического конца пришлось свернуть все начинания. В этой ветке я постараюсь осветить все наработки по этому вопросу и продолжить исследование, рассчитывая на помощь заинтересовавшихся лиц.
    Для начала я выложу несколько необходимых для исследования индикаторов собственного изобретения. Прошу не судить строго коды программ, поскольку я по профессии физик, а не программист. Если профессионалы поправят коды , буду очень признателен. Тем не менее все индикаторы рабочие и функционально отрабатывают свои назначения.
    Поскольку в МТ4 нет тиковых графиков, то в первую очередь пришлось написать примитивный индикатор ticks. Индикатор рисуется в первом подокне любого графика, на который его бросить. Выглядит это примерно так :
     
    Вложения Вложения
    • Тип файла: rar ticks.rar (357 байт, Просмотров: 9)
    Недоступно! Pro 2
    Поделиться
    Просмотров: 5,834
  2. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Второй индикатор kvant - это логарифмы интервалов времени между соседними тиками. Вот его код:
    #property indicator_separate_window
    #property indicator_buffers 1
    #property indicator_color1 Lime
    double x[];
    double time1,time2;
    int init()

    {
    IndicatorBuffers(1);
    SetIndexStyle(0,DRAW_HISTOGRAM);
    SetIndexBuffer(0,x);
    SetIndexDrawBegin(0,0);
    SetIndexLabel(0,"x");
    SetIndexShift(0,0);
    time1=GetTickCount();
    GlobalVariableSet("T",time1);
    return(0);
    }

    int start()
    {
    int j;
    double t;
    time2=GetTickCount();
    time1=GlobalVariableGet("T");
    t=time2-time1;
    GlobalVariableSet("T",time2);
    Alert("Время между тиками(мсек) = ",t);
    x[0]=MathLog(t);
    time1=time2;
    for(j=2000;j>=1;j--){x[j]=x[j-1];}
    return(0);
    }
    Логарифмы взяты потому, что слишком большая разница между различными интервалами и в линейном масштабе практически не видно малых времен.
    Вместе с тиковым графиком это выглядит примерно так:
     
  3. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Далее, если присмотреться внимательно, то можно заметить что минимальные интервалы времени - это 15 или 16 миллисекунд. Оказывается "Функция GetTickCount() возвращает количество миллисекунд, прошедших с момента старта системы. Счетчик ограничен разрешающей способностью системного таймера..."
    Разрешающая способность системного таймера для большинства Windows систем составляет примерно 15-16 миллисекунд.
    "Примерно", потому что Windows не является системой реального времени и не гарантирует точность при передаче управления пользовательскому потоку.
    Другими словами, для обычных Windows систем промежутки времени, измеряемые с помощью GetTickCount(), просто не могут быть меньше 15-16 миллисекунд.
    Таким образом мы выяснили что функция GetTickCount() возвращает то чётное число миллисекунд, то нечётное.
    Вот тут и возникает неожиданный, я бы сказал невероятный эффект. Оказывается что чередование чётных и нечётных значений не стохастично, т.е. не подчиняется вероятностному закону орла и решки, а является детерменированной функцией. Мало того эта функция непостижимым образом коррелирует с ценой.
    Определим эту функцию следующим образом: если функция GetTickCount() выдает чётное значение, то функция увеличивается на единицу, если нечётное, то уменьшается на единицу.
    Код такого индикатора (corelation) следующий:
    #property indicator_separate_window
    #property indicator_buffers 1
    #property indicator_color1 Yellow
    double x[];
    int sum=0;
    int init()

    {
    IndicatorBuffers(1);
    SetIndexStyle(0,DRAW_LINE);
    SetIndexBuffer(0,x);
    SetIndexDrawBegin(0,0);
    SetIndexLabel(0,"x");
    SetIndexShift(0,0);
    return(0);
    }

    int start()
    {
    int j,time,t;
    time=GetTickCount();
    t=time%2;
    if(t==0){sum=sum+1;}
    if(t==1){sum=sum-1;}
    x[0]=sum;
    for(j=2000;j>=1;j--){x[j]=x[j-1];}
    return(0);
    }

    Выглядит это примерно так:
     
  4. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Или например такая картинка:
     
  5. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Назовём эту непонятную функцию условно "временной", с ударением на букву о.
    Насколько временная функция коррелирует с ценой нам и предстоит выяснить. Простейший путь - это эмпирический. Надо набрать достаточно большое количество значений функции.
  6. 2,140
    Комментарии
    25
    Темы
    2437
    Репутация Pro
    Аватар для ТИЛЬ  
    Мастер форумных наук

    6 Медалей
    интересно ...(".....прихода котИровок.." , может так ?)
  7. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Цитата Сообщение от ТИЛЬ Посмотреть сообщение
    интересно ...(".....прихода котИровок.." , может так ?)
    Согласен, опечатка. Как исправить не знаю.
    Прошу модераторов исправьте пожалуйста опечатку в названии темы.
  8. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Обнаружил ещё один пока не объяснимый эффект. Какое то время отсутствовала связь с сервером и при возобновлении связи произошёл скачок цены. Временная функция повела себя следующим образом. После возобновления связи она выдала "шип" вверх примерно на 120 единиц. Это значит что за небольшой промежуток времени после подключения к серверу пришло более 120 котировок с чётными временами. Картинка получилась следующая:
     
  9. 334
    Комментарии
    26
    Темы
    325
    Репутация Pro
    Аватар для Mechta  
    В начале пути

    4 Медалей
    Таким образом 120 вверх и тут же 100 вниз.
  10. 1,549
    Комментарии
    16
    Темы
    2441
    Репутация Pro
    Аватар для NikShel  
    Мастер форумных наук

    6 Медалей
    Цитата Сообщение от Mechta Посмотреть сообщение
    Обнаружил ещё один пока не объяснимый эффект. Какое то время отсутствовала связь с сервером и при возобновлении связи произошёл скачок цены. Временная функция повела себя следующим образом. После возобновления связи она выдала "шип" вверх примерно на 120 единиц. Это значит что за небольшой промежуток времени после подключения к серверу пришло более 120 котировок с чётными временами. Картинка получилась следующая:
    Тиковый график очень похож на осциллограмму. Кажется, интегральные цепочки давали такую картинку, реакция на задний фронт импульса.
    Давно не брал я в руки осциллограф.

Вверх
РегистрацияX

чтобы писать, читать, комментировать