Избранное трейдера 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-скриптов к нему?