Избранное трейдера TechnoStar
Всех приветствую.
Сегодня без видео! хотел записать в белой теме, но возникли сложности, и без мата не получалось записать.
В целом ничего сложного, на примере обычного хай лоу робота, я реализовал стандартную трейдерскую фантазию, «А что если нарисовать вручную некий канал, в котором робот торгует по заданной логике?!»
Сказанно — сделанно!
сам скрипт выложен на форуме TSLab http://forum.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=79922 (скопируйте ссылку в браузер, такая странная особенность)
В скрипте помимо стандартного хайлоу, добавленны только интерактивные линии, это непосредственно те самые линии которые можно вручную нарисовать на графике и добавить в логику агента.
в итоге получилась такая картина
Данных много (8лет ртс) потому на дневном графике рисовал каналы, а на минутке уже основная статистика.
Картинка эквити (40п на круг) при торговле если растущий канал то только лонг если падающий то только шорт
Два дня назад моя система показала всплеск дивергенций MACD (кому интересно — скриншоты здесь и здесь). Для меня это было предупреждением, что краткосрочный тренд скоро может смениться. Именно это вчера произошло: на рынке акций США началась коррекция и как началась — не иначе как bloody Friday (S&P 500 map здесь). Очевидно, что нас еще ждет продолжение, но это тема еженедельных обзоров S&P 500. А сейчас речь о сигналах MACD и их разворотной силе.
Статья специально для тех кто застрял в шортах сбербанка. От программиста и кванта.
Во первых
Сбербанк — один из самых трендовых инструментов на Московской бирже. Любой алгоритмист Вам об этом расскажет. Это первое что ты понимаешь, когда начинаешь использовать статистический подход к трейдингу.
Вот так выглядит эквити трендового робота на акциях Cбербанка:
Нормально, да?
Между прочим, вот ссылка, на моём сайте Вы можете скачать его совершенно бесплатно!
Во вторых
Застрял в шортах Сбербанка после нескольких лет торговли — прекрати торговать!
Серьёзно. Если такие простые и очевидные вещи о которых можно почитать и посмотреть из каждого утюга не уложились в голове за много лет активного трейдинга — ну пора наверное делать выводы какие-то.
Индекс относительной силы (RSI от англ. relative strength index) — индикатор технического анализа, определяющий силутренда и вероятность его смены. Популярность RSI обусловлена простотой его интерпретации. Индикатор может рисовать фигуры технического анализа — «голова-плечи», «вершина» и другие, которые часто анализируют наравне с графиком цены
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
Небольшая статья с ресурса http://www.talaikis.com/ о построении простой стратегии, использующую наивный байесовский классификатор при создании процесса возврата к среднему. Весь код в статье приведен на языке Python.
Это достаточно большая область исследований, но расскажем все очень кратко. Мы попытаемся найти взаимоотношение между временными сериями (в данном случае возьмем в качестве сигнала взаимный фонд XLF из финансового сектора, сдвинутый по времени на 1 день назад), а нашей целью будет фьючерс S&P500 в форме CFD. Будем входить в длинную позицию по этой бумаге при нулевой вероятности приращения. Логически нулевая вероятность ни о чем не говорит, другими словами, будем покупать возврат к среднему.
1. Получение данных
Y = read_mongo(dbase, "S&P5001440") X = read_mongo(dbase, syms[s]).shift() #готовим набор данных res = pd.concat([X.CLOSE, Y.CLOSE], axis=1, join_axes=[X.index]).pct_change().dropna() res.columns = ['X', 'Y']