В этой заметке я начинаю сказ о своем языке программирования торговых стратегий роботов- Language of trade strategies robots (LTSR).

Изучение и работа в различных программах технического анализа и торговых терминалах , в которых реализованы различные как универсальные, так и специализированные языки , позволили выявить недостатки существующих языков применительно к задачам создания торговых роботов для фондовых рынков.

Универсальные языки, такие как С++,С# содержат много абстракций и предназначены для программирования любых задач. Изучение и применение их на практике является сложным и длительным процессом.

Скриптовые языки, такие как LUA, MT,AFL более просты в изучении.

Однако, во всех вышеуказанных языках, вопрос практического применения сводится к созданию библиотек прикладных функций или классов, реализующих определенные технические операции.

Эти языки не позволяют мыслить категориями прикладной области , в данном случае — категориями торговли и прогнозирования рынков.

Поэтому описание торговых стратегий обычно сводится к словесному описанию некоторых действий, которые, по мнению автора такой стратегии,  необходимо сделать торговому роботу.

Но проблема в том, что описание таких действий , как правило , носит умозрительный, субъективный характер.

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

Часто умозрительный образ автора такой стратегии очень далек от умозрительного представления разработчика этой программы.

Язык, который я разрабатываю ,  направлен на устранение перечисленных выше проблем.

Задача данного языка обеспечить однозначное описание желаемой стратегии , что позволяет в дальнейшем однозначно реализовать ее на любом языке программирования.

 

продолжение следует …

В первой части описания конструктора был реализован алгоритм формирования торговых сигналов на основе пересечения двух скользящих.

Результат с произвольно выбранными периодами 20 и 100 соответственно,  для 3000 свечей с интервалом 5 минут составил:

успешных сделок 31.7%
прибыль  -0.16% (т е убыток)
сделок всего  41

—————————————

Прежде, чем оптимизировать параметры данного алгоритма, предлагаю внимательно рассмотреть полученный график:

160503_002

 

 

 

 

 

 

 

———————————————————————————————

На представленном участке движения цен, нетрудно заметить, что торговые сигналы создаются с существенным запаздываем относительно желаемого момента.

Это обусловлено тем, что сигналы генерируются на основе скользящих средних.

Так как скользящее среднее — это фильтр нижних частот, то максимальное быстродействие такого генератора будет определяться минимальным из значений периодов.

——————————————————-

Можно  существенно улучшить данный алгоритм.

Например, предпочитаю строить подобные алгоритмы на основе пересечения цены со скользящей средней.

Т е вместо двух скользящих применяем одну.

Вот один из моих простых алгоритмов генерации торговых сигналов
Если Low закрытой свечи выше скользящей и позиция short или вне рынка, то покупаем.
Если High ниже скользящей и позиция long или вне рынка, то продаем.
Кроме того, исключим генерацию сигналов вне торговой сессии.

——————————————————————

теперь запрограммируем этот алгоритм:

файл intS.lua:

Settings.nki =‘EMA(Y,C,N)’;
Settings.nks=’nk_test_sig.lua’; 
Settings.N =100;

———————————————————

файл nk_test_sig.lua
— S — последний торговый сигнал.
—L,H — Low,High последней закрытой свечи
 =1,  L>Y  and  S<=0
=-1,  H<Y  and  S>=0
————————————————————————

И вот что получилось в результате:

160503_003

 

 

 

 

 

 

 

——————————————————————————————

В результате получили:

успешных сделок 28.8%
прибыль  2.41%
сделок всего  59

—————————————————————————————-

продолжение следует …