Можно ли привязать индикатор корреляции к реальным тикам?

 

Добрый день, уважаемые разбирающиеся во всяких умных вопросах люди :)

Несколько лет назад я увлекался программированием советников и индикаторов (не своими силами, а силами программистов), потом перестал заниматься трейдингом, но вот сейчас успешный друг-трейдер втянул меня в тему корреляции валютных пар. Захотелось написать индикатор корреляции, который помогал бы найти ситуации входа и выхода не по ценам закрытия, а по любым ценам на свечах коррелирующихся пар, если это возможно. Насколько я помню, было какое-то затруднение, когда я пытался делать такую привязку раньше. То ли в МТ4 такого нет, а в МТ5 возможно, то ли что-то еще... Не подскажете, можно ли это сделать? Нужна ведь реальная последовательность тиков. Она где-нибудь как-нибудь регистрируется?

 
Eduard Minosian:

Добрый день, уважаемые разбирающиеся во всяких умных вопросах люди :)

Несколько лет назад я увлекался программированием советников и индикаторов (не своими силами, а силами программистов), потом перестал заниматься трейдингом, но вот сейчас успешный друг-трейдер втянул меня в тему корреляции валютных пар. Захотелось написать индикатор корреляции, который помогал бы найти ситуации входа и выхода не по ценам закрытия, а по любым ценам на свечах коррелирующихся пар, если это возможно. Насколько я помню, было какое-то затруднение, когда я пытался делать такую привязку раньше. То ли в МТ4 такого нет, а в МТ5 возможно, то ли что-то еще... Не подскажете, можно ли это сделать? Нужна ведь реальная последовательность тиков. Она где-нибудь как-нибудь регистрируется?

В mql5 можно. https://www.mql5.com/ru/docs/series/copyticks

int  CopyTicks(
   string           symbol_name,           // имя символа
   MqlTick&         ticks_array[],         // массив для приёма тиков
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков
   ulong            from=0,                // дата, начиная с которой запрашиваются тики
   uint             count=0                // количество тиков, которые необходимо получить
   );

или https://www.mql5.com/ru/docs/series/copyticksrange

int  CopyTicksRange(
   const string     symbol_name,           // имя символа
   MqlTick&         ticks_array[],         // массив для приёма тиков
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков
   ulong            from_msc=0,            // дата, начиная с которой запрашиваются тики
   ulong            to_msc=0               // дата, по которую запрашиваются тики
   );
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
  • www.mql5.com
[out]  Cтатический или динамический массив MqlTick для приема тиков. Если в статический массив не вмещаются все тики из запрошенного интервала времени, то будет получено столько тиков, сколько помещается в массив. При этом функция сгенерирует ошибку ERR_HISTORY_SMALL_BUFFER (4407) . ERR_NOT_ENOUGH_MEMORY – не хватает памяти для получения...
 
Спасибо за ответ. Можете уточнить для простых смертных, какая проблема с памятью может возникнуть? Что значит нехватка памяти в статическом массиве и т. д.? Как решается эта проблема? Решается ли она? К примеру, мне нужна полная точная последовательность тиков (именно та последовательность, в которой эти тики осуществлялись на рынке) за период 3-4 месяца по двум парам, которые должен анализировать индикатор. Также предполагается находить точки максимального расхождения курсов на свечах в момент времени. Именно тик этого момента и нужно искать. Реально ли это? Или достоверную информацию я не смогу так получить?    
 
Eduard Minosian:
Спасибо за ответ. Можете уточнить для простых смертных, какая проблема с памятью может возникнуть? Что значит нехватка памяти в статическом массиве и т. д.? Как решается эта проблема? Решается ли она? К примеру, мне нужна полная точная последовательность тиков (именно та последовательность, в которой эти тики осуществлялись на рынке) за период 3-4 месяца по двум парам, которые должен анализировать индикатор. Также предполагается находить точки максимального расхождения курсов на свечах в момент времени. Именно тик этого момента и нужно искать. Реально ли это? Или достоверную информацию я не смогу так получить?    

Сможете. Пробуйте.

 
Eduard Minosian:
Спасибо за ответ. Можете уточнить для простых смертных, какая проблема с памятью может возникнуть? Что значит нехватка памяти в статическом массиве и т. д.? Как решается эта проблема? Решается ли она? К примеру, мне нужна полная точная последовательность тиков (именно та последовательность, в которой эти тики осуществлялись на рынке) за период 3-4 месяца по двум парам, которые должен анализировать индикатор. Также предполагается находить точки максимального расхождения курсов на свечах в момент времени. Именно тик этого момента и нужно искать. Реально ли это? Или достоверную информацию я не смогу так получить?    

Я думаю это обычная перестраховка, типа защита от дурака. Ведь нельзя исключить вариант, что кто-то запустит МТ на компе с памятью 2гб. и запросит все тики за всю историю... А сколько тиков может уместиться в такой памяти... Одно значение типа double занимает 8 байт... вот и считайте, да минус размер памяти занимаемой ОС и МТ. Это как минимум, без учёта запущенных ещё каких-то программ, например антивирус.

 

Для оценки корреляции нужны не тики, а элементарные, причём фрактальные  структуры.

Именно так оценивается корреляция в теории импульсного равновесия.

 
Aleksandr Masterskikh:

Для оценки корреляции нужны не тики, а элементарные, причём фрактальные  структуры.

Именно так оценивается корреляция в теории импульсного равновесия.

так, всеобщую теорию цены уже задвинули, квантовые тренды у нас тоже были..

кластерную волатильность двигает Чё, аттракторы оценили в 1 бакс

а это уже что-то новое :-)

 
Eduard Minosian:
Спасибо за ответ. Можете уточнить для простых смертных, какая проблема с памятью может возникнуть? Что значит нехватка памяти в статическом массиве и т. д.? Как решается эта проблема? Решается ли она? К примеру, мне нужна полная точная последовательность тиков (именно та последовательность, в которой эти тики осуществлялись на рынке) за период 3-4 месяца по двум парам, которые должен анализировать индикатор. Также предполагается находить точки максимального расхождения курсов на свечах в момент времени. Именно тик этого момента и нужно искать. Реально ли это? Или достоверную информацию я не смогу так получить?    

можете и за 20 лет на компе с 2 гигами. Только не нужно оба массива тиков загружать сразу полностью. По частям и анализировать по частям.

 
Всем спасибо за ответы :) Вот что удалось выяснить в процессе работы с программистом... Тиковая история действительно кушает довольно много оперативки. У меня Windows используется на маке посредством Parallels Desktop. Так как Windows сейчас используется только для одного МТ5, под эту ОС отдано только 4 Гб оперативки. В индикаторе прописали загрузку тиковой истории за устанавливаемый трейдером этап. Получилось так, что для сравнения двух курсов (GOLD и GOLDEURO у брокера Fxpro) у меня загружалось количество тиков, не превышающее примерно 70 дневных свечей, после чего возникало сообщение о нехватке памяти. При чем проблема обнаружилась не в нехватке оперативки, отданной под Windows... Как предположил программист, с которым работаю, это связано с ограничением памяти, которую "имеет право" потреблять одна mql-программа... Так ли это, он не уверен. Он сказал, что где-то что-то такое попадалось ему про 32-битные ОС, а насчет 64-битных он не уверен. Но по факту у меня оставалось еще более 1 Гб оперативки в момент, когда индикатор уже кричал о нехватке памяти... Вот такие пироги.

Теперь учим индикатора удалять из памяти все загруженные тики сразу после загрузки тиков по каждой конкретной свече, запоминая только ту информацию, которая важна для стратегии.
 
Aleksandr Masterskikh:

Для оценки корреляции нужны не тики, а элементарные, причём фрактальные  структуры.

Именно так оценивается корреляция в теории импульсного равновесия.

очень интересно, какая корреляция мажорных пар между собой по этой теории?

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