Приветствую публику смартлаба!
Для проверки автоматических систем и вообще для расширения кругозора бывает необходимость в случайных котировках.
Но дело в том, что не все случайные данные так уж случайны.
Чтобы получить истинно случайные котировки (насколько это возможно) я обратился к ресурсу random.org. Как утверждают эти ребята их данные получены из атмосферных колебаний, которые являются абсолютно случайными.
Для наглядности пример с ихнего ресурса.
Далее эти данные были приведены к формату биржевых котировок (как это было сделано описано ниже).
Строим графики в NT7, ниже пример как все получилось (Daily, 60m, 5m, 2Range).
Ну а затем уже можно строить индикаторы на этих котировках, и прогонять стратегии.
Я прикрепляю к статье ссылки:
Атмосферные колебания: https://yadi.sk/d/1eX15kILiWyio
Готовые котировки для NT7: https://yadi.sk/d/JHQF-CZFiWytM
Стратегия для создания котировок в формате NT7: https://yadi.sk/i/ZTtRvtJeiX2uo
Панорамные скриншоты различных графиков: https://yadi.sk/d/lZeiWqG7iXhmQ
Надеюсь, что данная информация кому ни будь пригодится. Был бы признателен за повышение рейтинга, т.к. не имею возможности писать личные сообщения.
Далее представленны технические подробности.
Как создать инструмент в NT7 со случайными котировками.
Заходим в tools -> instrument Manager
Далее выбираем New
Далее вводим название нового инструмента и ставим галочку в столбце «Exchanges» напротив любой биржи.
Далее переходим на вкладку Misc. В Symbol map напротив Yahoo (или какой то другой) пишем название нашего нового инструмента.
Жмем «Ок».
Теперь новый инструмент доступен для выбора.
Следующий шаг — это импорт наших котировок в данный инструмент.
Tools->Historical Data Manager -> вкладка Import -> Start Import
Обращаю ваше внимание на то что файл для импорта должен содержать название вашего инструмента. Для данного примера он будет выглядеть так: SMARTLAB.Last.txt
Описание архива со случайными данными.
Данные представляют 100 текстовых файлов, упакованных в RandomOrg.zip.
Размер упакованного архива 24 004 495 байт (~23 Mb).
Размер каждого файла 1 196 032 байт.
Размер распакованного архива примерно 119 603 200 байт (~114 Mb).
Содержимое каждого файла – нули и единицы группами по 8 шт, группы разделены одним пробелом.
Пример: «00011111 10111000 11111111 10111011 00001000 00001010 11100101 10000010»
Таким образом, каждый файл содержит около 1 046 528 случайных нулей и единиц и 149 504 пробелов.
Все файлы содержат около 105 699 328 случайных нулей и единиц.
Описание архива со случайными котировками для NinjaTrader 7.
Архив содержит 1 файл с именем RND.Last.txt и содержит тиковую историю пригодную для импорта в NT. Файл упакован в RND.Last.zip.
Размер упакованного архива 110 936 406 байт (~100 Mb)
Размер распакованного архива примерно 2 667 160 487 байт (~2.4 Gb).
Первые 25 строк файла:
20120605 170146;100.00;1
20120605 170146;100.01;1
20120605 170146;100.00;7
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;34
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.00;1
20120605 170146;100.01;1
20120605 170146;100.01;1
20120605 170146;100.01;60
20120605 170146;100.01;23
20120605 170146;100.01;1
20120605 170146;100.01;1
20120605 170146;100.01;1
20120605 170146;100.00;1
Описание стратегии, формирующей тиковые котировки для NinjaTrader 7 из архива со случайными данными
Пути к файлам:
Стратегия ищет все файлы по адресу D:\\RandomOrg\\RandomBinData\\*.txt во всех вложенных папках, с любыми именами и расширением *.txt
Из всех найденных файлов извлекаются только нули и единицы.
Результирующий файл со случайными котировками для NT создаётся по адресу D:\\RandomOrg\\RND.Last.txt
Как формируется время тика
Берётся фактическое время тиков того инструмента, на котором запускается стратегия.
Соответственно, для успешной работы стратегии требуется тиковая история с количеством тиков не менее количества случайных нулей и единиц в папке D:\\RandomOrg\\RandomBinData\\
Как формируется цена тика:
Берётся стартовая цена (задаётся в параметрах, по умолчанию StartPrice = 100) и на каждом тике к этой цене прибавляется приращение со случайным знаком (зависящим от данных полученных от Random.org)
Затем эта сумма округляется в соответствии с параметром My_Tick_Size (для котировок — аналога нефти, это 0.01) и получается случайная цена на данном тике.
Как формируется приращение.
Согласно проведенным расчётам, 1 тик CL в среднем меняет цену на 0.2 тика (так как есть много тиков, имеющих одну и ту же цену). Условно назовём это коэффициентом трендовости. Он задаётся в параметрах стратегии (Trend_K).
При Trend_K = 1, например, средняя дневная волатильность котировок, сформированных на основе CL, будет составлять около 1000 тиков.
Если для каждого тика использовать одинаковое приращение, то сформируются котировки с более-менее постоянной волатильностью.
Поэтому, приращение вычисляется как случайное число (используется ГСЧ C#) между 0 и Trend_K умноженное на 2.
Как формируется объём тика
Примерно 90% тиков CL имеют объём 1 контракт. Остальные – больше )).
Поэтому сначала генерируется случайное число (используется ГСЧ C#) от 0 до 100 и, если оно менее 90, объём тика считаем равным 1 контракту. Иначе (если число 90 и более) формируем второе случайное число (используется ГСЧ C#) от 1 до 100 и это число будет объёмом тика.
Запускать только на 1-тиковом графике.
С графика берётся только время тиков.
Требуется около 2.5 лет тиковой истории по CL.
Время работы – около 10 минут. В основном, время требуется NT для формирования тиковых баров.
На полном наборе данных стратегия может работать «через раз», в случае подвисания необходимо перезапустить NТ.
Во время работы стратегия пишет мини-лог в Output Window. Рекомендую держать это окно на виду.
Туда же выводятся сообщения об ошибках (не найдены файлы, мало тиков и т.д.)
Писалось для себя и на скорую руку – камни не бросать, замечания –делать.