Избранное трейдера oktb
Следующим этапом стала автоматизация. Поиск программы для генерации и исполнению торговых сигналов с риск менеджментом и прочим, заняло приличное время и убило много серых клеток, ну это естественно. Описывать и впадать в детализацию не буду, очень много и скучно, а про опыт с LUA да же упоминать не хочется.
Первым, что пошло в дело стал TSLab. Интересное решение, вспомним 5-6 класс, но эти кубики, стрелочки, просто убивают. К сожалению меня это просто не возбудило )))(Картинку для примера позаимствовал, т.к. похоже на, то что получалось у меня. Свои к сожалению удалил в порыве, как дурной сон).
Помучившись около месяца, перешел к следующей программе CoFITE. Через три дня, эпикриз: то же самое только в профиль или найди 10 отличий. Безусловно, есть плюсы в этих программах и они значительные, но это все не то, что было нужно. Следующим был tradematic и мне действительно понравился интерфейс. Все было хорошо и приятно удивило его мобильное приложение. После настройки и запуска, повылазили существенные ошибки, ну как же без этого?.. Связанны были прежде всего с тем самым Quik. Я думаю, что если бы не торговая платформа в связке, все было бы намного интересней. Спустя не один месяц экспериментов с tradematic и еще одновременно с Wealth-Lab, прикрепленным к системе автоследования получилась такая структура:
Попробую описать очень простые действия, чем пользоваться можно, а что из себя представляет полный кошмар, так же свой опыт по данному пути.
На рынке я очень давно и пережил то, что и врагу не пожелаешь. Но моя история не одна такая много людей убили свое серое вещество подстраиваясь под наш замечательный рынок. Но здесь я хочу рассказать, как я пришел к роботам HFT и прочим гадалкам)))
Первого робота который попался в руки, несмотря на то, что торговал полностью на Московской бирже, был никто иной как «Мартин Гейл» и сделан он под MT4. Смерть а не робот. В то время я был страшным скептиком по отношении к всему невиданному и непонятному и показывал приличные результаты ручной торговли. Но жуткий интерес заставил включить этого «умного советника» в розетку. Зная какой алгоритм и условия заложены в данного советника, было просто интересно посмотреть, как он работает. Установил, включил и наблюдаю, работает, но не возбуждает. Смысла в действиях нет никакого, как и ожидалось, НО он выставляет заявки и делает сделки. И понимая, что если задать правильные условия, можно получить очень хороший автоматический агрегатов для торговли. В итоге проработав на моем ноутбуке неделю я понял, что эксперимент окончен.
Так как работа калькулятора построена на динамике значений основных фондовых индексов Московской биржи (индексы акций: индекс ММВБ, индекс акций второго эшелона; индексы облигаций: государственные, муниципальные и корпоративные облигации), то приведение их к сопоставимости позволило осуществить совместный их анализ лишь с начала 2006 года.
Принцип его функционирования следующий:
Хотите добиться успеха и изменить свою жизнь в лучшую сторону? Перечитывайте почаще этот текст.
1.Страшно всем.
Начинать новое. Выходить из привычного круга. Рисковать. Делать что-то, к чему еще не привык. Страшно за близких. За дело. За свою жизнь, если прижмет. И много чего еще.
Страх будет и дальше. Сколько бы ни было опыта, практики, уверенности, признания, денег, таланта, но каждый раз замахиваясь на новую высоту, каждый раз выходя на сцену, каждый раз, оборачиваясь на близких — в той или иной степени будет страх. Это нормально. Это значит, что ты еще жив. И значит, нужно идти вперед. Через страх. А не пытаться полностью от него избавиться.
2. Жизни без перемен не существует.
Стабильность иллюзорна. Состояние «плато» абсурдно. Мы постоянно находимся в движении. Но это, конечно, толерантная банальность, потому что на деле мы постоянно стареем. И можно сказать еще жестче, но это уже вотчина Пелевина. Не полезу.
Settings =
{
Name = "xLinRegP",
period = 128,
deviation=2,
line=
{
{
Name = "xLinRegP",
Color = RGB(128, 128, 255),
Type = TYPE_LINE,
Width = 4
},
{
Name = "xLinRegP",
Color = RGB(192,128,128),
Type = TYPE_LINE,
Width = 4
},
{
Name = "xLinRegP",
Color = RGB(96, 128,96),
Type = TYPE_LINE,
Width = 4
}
}
}
----------------------------------------------------------
----------------------------------------------------------
----------------------------------------------------------
function cached_FF()
local AMA={}
local CC={}
local II2 = 0
local II4 = 0
return function(ind, _p,_ddd)
local period = _p
local index = ind
local vol = 0
local sigma = 0
local sigma2 = 0
local sigma3 = 0
local sigma4 = 0
local aav = 0
local aa = 0
local bb = 0
local cc = 0
local ZZZ = 0
local ttt = 0
if index == 1 then
AMA={}
CC={}
CC[index]=(C(index)+H(index)+L(index))/3
AMA[index]=(C(index)+O(index))/2
II2=0
II4=0
for i = 0, period-1 do
ttt=(-(period-1)/2+i)^2
II2=II2+ttt
II4=II4+ttt^2
end
return nil
end
------------------------------
AMA[index]=AMA[index-1]
----------------------------------
CC[index]=(C(index)+H(index)+L(index))/3
---------------------
if index < (Size()-2) then return nil end
----------------------------------------------------
sigma=0
sigma2=0
sigma3=0
sigma4=0
aav=0
ZZZ=0
for i = 0, period-1 do
ZZZ=CC[index+i-period+1]
aav=aav+ZZZ
sigma=sigma+ZZZ*(-(period-1)/2+i)
ttt=(-(period-1)/2+i)^2
sigma3=sigma3+ZZZ*ttt
end
------------------------
bb=sigma/II2
cc=(sigma3-aav*II2/period)/(II4-II2*II2/period)
aa=(aav-cc*II2)/period
aav=aav/period
AMA[index]=aa+bb*((period-1)/2)+cc*((period-1)/2)^2 ------- парабола
-------------------------------
sigma=0
sigma2=0
sigma3 = 0
for i = 0, period-1 do
ZZZ=CC[index+i-period+1]
sigma2=aa+bb*(-(period-1)/2+i)+cc*(-(period-1)/2+i)^2 ------- парабола
sigma=sigma+(ZZZ-sigma2)^2
end
sigma=(sigma/period)^(1/2)
for i = 1, period-1 do
ZZZ=aa+bb*(-(period-1)/2+i)+cc*(-(period-1)/2+i)^2
SetValue(index+i-period+1, 3, ZZZ)
SetValue(index+i-period+1, 2, ZZZ+sigma*_ddd)
SetValue(index+i-period+1, 1, ZZZ-sigma*_ddd)
end
SetValue(index+0-period+1, 3, nil)
SetValue(index+0-period+1, 2, nil)
SetValue(index+0-period+1, 1, nil)
----------------------------------
return AMA[index]-sigma*_ddd,AMA[index]+sigma*_ddd, AMA[index]
end
end
---------------------------- ---------------------------- ----------------------------
---------------------------- ---------------------------- ----------------------------
---------------------------- ---------------------------- ----------------------------
function Init()
myFF = cached_FF()
return 3
end
function OnCalculate(index)
return myFF(index, Settings.period,Settings.deviation)
end
Settings =
{
Name = "xLinReg",
period = 128,
deviation=2,
line=
{
{
Name = "xLinReg",
Color = RGB(0, 0, 255),
Type = TYPE_LINE,
Width = 3
},
{
Name = "xLinReg",
Color = RGB(192, 0, 0),
Type = TYPE_LINE,
Width = 3
},
{
Name = "xLinReg",
Color = RGB(0, 128, 0),
Type = TYPE_LINE,
Width = 3
}
}
}
----------------------------------------------------------
----------------------------------------------------------
----------------------------------------------------------
function c_FF()
local AMA={}
local CC={}
return function(ind, _p,_ddd)
local period = _p
local index = ind
local vol = 0
local sigma = 0
local sigma2 = 0
local aav = 0
local bb = 0
local ZZZ = 0
if index == 1 then
AMA={}
CC={}
CC[index]=(C(index)+H(index)+L(index))/3
AMA[index]=(C(index)+O(index))/2
return nil
end
------------------------------
AMA[index]=AMA[index-1]
CC[index]=(C(index)+H(index)+L(index))/3
---------------------
if index < (_p) then return nil end
----------------------------------------------------
period =_p
if index < period then period = index end
---------------
sigma=0
sigma2=0
aav=0
ZZZ=0
for i = 0, period-1 do
ZZZ=CC[index+i-period+1]
aav=aav+ZZZ
sigma=sigma+ZZZ*(-(period-1)/2+i)
sigma2=sigma2+(-(period-1)/2+i)^2
end
------------------------
bb=sigma/sigma2
aav=aav/period
AMA[index]=aav+bb*((period-1)/2) ---------линейная регрессия
-------------------------------
sigma=0
sigma2=0
sigma3 = 0
for i = 0, period-1 do
ZZZ=CC[index+i-period+1]
sigma2=aav+bb*(-(period-1)/2+i)
sigma=sigma+(ZZZ-sigma2)^2
end
sigma=(sigma/period)^(1/2)
for i = 1, period-1 do
ZZZ=aav+bb*(-(period-1)/2+i)
SetValue(index+i-period+1, 3, ZZZ)
SetValue(index+i-period+1, 2, ZZZ+sigma*_ddd)
SetValue(index+i-period+1, 1, ZZZ-sigma*_ddd)
end
SetValue(index+0-period+1, 3, nil)
SetValue(index+0-period+1, 2, nil)
SetValue(index+0-period+1, 1, nil)
----------------------------------
return AMA[index]-sigma*_ddd,AMA[index]+sigma*_ddd, AMA[index]
end
end
---------------------------- ---------------------------- ----------------------------
---------------------------- ---------------------------- ----------------------------
---------------------------- ---------------------------- ----------------------------
function Init()
myFF = c_FF()
return 3
end
function OnCalculate(index)
return myFF(index, Settings.period,Settings.deviation)
end
По большому счету — это обычный трендовый индикатор, который своими точками указывает на момент разворота тренда, пусть и не всегда удачно, но идеальных индикаторов не существует. Для формирования торговых сигналов используется стандартный индикатор Larry Williams` Percent Range.
Параметр у данного индикатора всего один, но он очень важен, так как отвечает за частоту появления точек на графике. Этот параметр не может быть меньше «3», так как индикатор начинает работать нестабильно и часто неправильно. Но при увеличении значения не значит, что сделки будут появляться часто, как раз наоборот, фильтр становится жестче и сигналов становится меньше, что позволяет отлавливать более затяжные тренды.
Взято отсюда: http://findicators.com/indikator-asctrend