Избранное трейдера AmiGator
Три года назад пришла идея реализовать один торговый алгоритм. Привлекали диагональные уровни поддержки/сопротивления, которые явно визуально видны, но не было графического индикатора для многих терминалов, чтобы автоматизировать процесс.
Была найдена информация на эту тему, созданы методы расчета, тестеры программы симуляционной торговли, и полностью автономный робот на базе терминала Квик.
Что выяснилось? Эти системы работают в реале и существует множество способов «обыгрывания» диагональных уровней. Для их торговли применял фильтры ложного-неложного пробоя по Л. Рашке; метод Сперандро (там уровни чуть по другому рассчитываются) и т.д… Здесь иногда появлялись посты на эту тему, торгуют их. Например misa с его простой и гениальной системой.
Метод постепенно эволюционировал, оброс диверсификацией, мани-менеджментом и т.п.
Все это я реально использовал в своих торговых алгоритмах, которые зарабатывали продолжительное время. Затем доходность упала (весна 2016, снижение волатильности в Си, которая была ведущим инструментом в портфеле) мани-менеджмент «порезал» плечи, робот «мумифицировался» и был отключен. Я перешел на другие методы торговли, а недавно протестировал некоторые незаслуженно заброшенные системы диагональных уровней – работают.
Добавляю код сделанного мной индикатора Parabolik в котором параметр ускорение зависит от волатильности. Чем больше волатильность, тем больше увеличивается ускорение и индикатор быстрее «догоняет» цену. Подобные есть на просторах интернета для метатрейдера (и не бесплатно), для квика не встречал.
Видно, что он дает меньше перескоков (красный), чем обычный Parabolik (черный). Хорошо себя зарекомендовал для выходов из позиций, открытых по тренду. На вход в боковике конечно будет давать ложные сигналы, как и обычный Parabolik (но меньше!), создатель которого не рекомендовал только его использовать для открытия позиций.
Код индикатора:
Settings = { Name = "Parabolic ATR", Period_ATR=14, line = {{ Name = "Parabolic ATR", Type = TYPE_POINT, Color = RGB(255,0,0), Width = 2 } } } old_idx=0 long=false short=false revers=false function Init() return 1 end function OnCalculate(idx) if idx<Settings.Period_ATR then return nil else if idx==Settings.Period_ATR then psar={} psar[idx]=L(idx) long=true hmax=H(idx) per_ATR=Settings.Period_ATR local TR=0 for js=(idx-per_ATR),idx-1 do TR=(TR+H(js)-L(js)) end Old_ATR=TR/per_ATR revers=true else if idx~=old_idx then local TR=0 for js=(idx-per_ATR),idx-1 do TR=(TR+H(js)-L(js)) end local ATR=TR/per_ATR af=ATR/(Old_ATR+ATR) af=af/10 Old_ATR=ATR if long then if hmax<H(idx-1) then hmax=H(idx-1) end psar[idx]=psar[idx-1]+af*(hmax-psar[idx-1]) end if short then if lmin>L(idx-1) then lmin=L(idx-1) end psar[idx]=psar[idx-1]+af*(lmin-psar[idx-1]) end revers=true end if long and L(idx)<psar[idx] and revers then psar[idx]=hmax short=true long=false lmin=L(idx) af=Step revers=false end if short and H(idx)>psar[idx] and revers then psar[idx]=lmin long=true short=false hmax=H(idx) af=Step revers=false end end old_idx=idx return psar[idx] end end
Расширенная форма оператора for
В расширенной форме оператора for для последовательного получения значений переменной цикла используется вызов итератора. Цикл завершается, когда итератор возвращает nil.
Примечание
Под итератором понимается любая конструкция, позволяющая перебирать элементы некоторого набора. При каждом обращении к итератору он возвращает очередной элемент набора. В Lua итераторы обычно реализуются в виде функций.
Расширенная форма оператора for имеет следующий вид:
for var1, var2, …, varN in <explist> do
… — тело цикла
end
где:
var1, var2, ..., varN — список переменных, получающих значения на каждом шаге цикла. Список может состоять из одной или нескольких переменных, разделённых запятыми. Первую в списке переменную называют управляющей переменной цикла. Когда эта переменная получает возвращённое итератором значение nil, цикл завершается. Остальные переменные на ход выполнения цикла влияния не оказывают;
<explist> — список выражений, разделённых запятыми. Обычно список состоит из единственного выражения — вызова функции-фабрики итераторов. Такая функция возвращает функцию-итератор, состояние и начальное значение управляющей переменной цикла.
Приветствую.
Нашёл несколько ссылок, выполняющие автозапуск Quik на непонятном мне языке.
Есть ли у кого-то код на распространённых языках программирования, выполняющий автозапуск Quik и автозапуск lua-скриптов к нему?