Избранное трейдера 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