Избранное трейдера oktb

по

SWT-робот. Блокировка при аномальной волатильности

Есть новости ожидаемые, перед которыми лучше не использовать автоматическую торговлю.
И есть новости неожиданные, по типу вчерашнего выступления Йеллен, которая внесла сумятицу в рынки.
Индикаторные роботы при всплеске волатильности торгуют плохо. Инерционность индикаторов, которая помогает держать позицию в обычных условиях, не реагируя на ценовой шум, в условиях всплеска волатильности работает против робота. И это неизбежно ухудшает показатели торговли. И с этим надо бороться, фиксируя убытки и не брезгуя дополнительной прибылью.

Для начала подумаем о том, как будем фиксировать убыток.
В качестве основы возьмем волатильность часовых трендов, т.е. колебаний рынка со средним периодом 50-70 минут. Величина этого параметра измеряется индикатором волатильности на графике минутного масштаба и в обычных условиях для большинства инструментов находится в пределах 80-100пп с небольшими отклонениями.
Если в ходе движения цены в течение минуты ушли на величину больше волатильности часового тренда, то это уже признак чего-то ненормального (численный критерий может быть и другим, но в качестве основы наших экспериментов для начала мы возьмем именно этот).

Поясним на примере из данных вчерашнего, что и как мы будем делать.

SWT-робот. Блокировка при аномальной волатильности

Итак, жизнь неспешно идет своим чередом, в 16:59 сформирован минутный бар с ценой Low в 17:00 открывает рот Йеллен, еще никто ничего не услышал, но уже начинается сумасшедший дом.


( Читать дальше )

«Алгоритмические системы». Куда пойти куда податься (часть 3)

Следующим этапом стала автоматизация. Поиск программы для генерации и исполнению торговых сигналов с риск менеджментом и прочим, заняло приличное время и убило много серых клеток, ну это естественно. Описывать  и впадать в детализацию не буду, очень много и скучно, а про опыт с LUA да же упоминать не хочется.

Первым, что пошло в дело стал TSLab. Интересное решение, вспомним 5-6 класс, но эти кубики, стрелочки, просто убивают. К сожалению меня это просто не возбудило )))«Алгоритмические системы». Куда пойти куда податься (часть 3)

(Картинку для примера позаимствовал, т.к. похоже на, то что получалось у меня. Свои к сожалению удалил в порыве, как дурной сон).

 Помучившись около месяца, перешел к следующей программе CoFITE. Через три дня, эпикриз: то же самое только в профиль или найди 10 отличий. Безусловно, есть плюсы в этих программах и они значительные, но это все не то, что было нужно. Следующим был tradematic и мне действительно понравился интерфейс. Все было хорошо и приятно удивило его мобильное приложение. После настройки и запуска, повылазили существенные ошибки, ну как же без этого?.. Связанны были прежде всего с тем самым Quik. Я думаю, что если бы не торговая платформа в связке, все было бы намного интересней.  Спустя не один месяц экспериментов с tradematic и еще одновременно с Wealth-Lab, прикрепленным к системе автоследования получилась такая структура:



( Читать дальше )

Алгоритмические системы, куда пойти куда податься (часть 1)

 

Попробую описать очень простые действия, чем пользоваться можно, а что из себя представляет полный кошмар, так же свой опыт по данному пути.

 На рынке я очень давно и пережил то, что и врагу не пожелаешь. Но моя история не одна такая много людей убили свое серое вещество подстраиваясь под наш замечательный рынок. Но здесь я хочу рассказать, как я пришел к роботам HFT и прочим гадалкам)))

Первого робота который попался в руки, несмотря на то, что торговал полностью на Московской бирже, был никто иной как «Мартин Гейл» и сделан он под MT4. Смерть а не робот. В то время я был страшным скептиком по отношении к всему невиданному и непонятному и показывал приличные результаты ручной торговли. Но жуткий интерес заставил включить этого «умного советника» в розетку. Зная какой алгоритм и условия заложены в данного советника, было просто интересно посмотреть, как он работает. Установил, включил и наблюдаю, работает, но не возбуждает. Смысла в действиях нет никакого, как и ожидалось, НО он выставляет заявки и делает сделки.  И понимая, что если задать правильные условия, можно получить очень хороший автоматический агрегатов для торговли. В итоге проработав на моем ноутбуке неделю я понял, что эксперимент окончен.



( Читать дальше )

Калькулятор рынка портфельных инвестиций

Калькулятор рынка акций есть (посмотреть можно здесь), а вот калькулятора для портфеля с разными типами активов — не встречал.

И ведь действительно, порой интересно – «… а инвестиции в какой тип инструмента на определенном горизонте показали бы большую доходность при заранее заданном, приемлемом уровне риска»?

В результате появился «Калькулятор рынка портфельных инвестиций»

Калькулятор рынка портфельных инвестиций

Так как работа калькулятора построена на динамике значений основных фондовых индексов Московской биржи (индексы акций: индекс ММВБ, индекс акций второго эшелона; индексы облигаций: государственные, муниципальные и корпоративные облигации), то приведение их к сопоставимости позволило осуществить совместный их анализ лишь с начала 2006 года.

Принцип его функционирования следующий:



( Читать дальше )

Экономический календарь прошлого

А есть возможность посмотреть календарь эконом. новостей типа этого
ru.investing.com/economic-calendar/
за прошлые дни, недели месяцы, может кто знает?

Добавить в избранное и перечитывать раз в неделю.

Хотите добиться успеха и изменить свою жизнь в лучшую сторону? Перечитывайте почаще этот текст.


1.Страшно всем.

 

Начинать новое. Выходить из привычного круга. Рисковать. Делать что-то, к чему еще не привык. Страшно за близких. За дело. За свою жизнь, если прижмет. И много чего еще.

 

Страх будет и дальше. Сколько бы ни было опыта, практики, уверенности, признания, денег, таланта, но каждый раз замахиваясь на новую высоту, каждый раз выходя на сцену, каждый раз, оборачиваясь на близких — в той или иной степени будет страх. Это нормально. Это значит, что ты еще жив. И значит, нужно идти вперед. Через страх. А не пытаться полностью от него избавиться.

2. Жизни без перемен не существует.

 

Стабильность иллюзорна. Состояние «плато» абсурдно. Мы постоянно находимся в движении. Но это, конечно, толерантная банальность, потому что на деле мы постоянно стареем. И можно сказать еще жестче, но это уже вотчина Пелевина. Не полезу.



( Читать дальше )

Нефть. Ничего личного. Просто графики.

Графики среднедневных нефти марки Брент расчетной (синяя) и фактической (красная):

01/01/2015-31/03/2017
Нефть. Ничего личного. Просто графики.

01/01/2016-31/03/2017
Нефть. Ничего личного. Просто графики.

( Читать дальше )

Индикатор "Параболическая регрессия/тренд" (Бонус к линейной)

Предыдущая часть: smart-lab.ru/blog/337952.php

Для всех QUIKеров в свободное пользование индикатор «Параболическая регрессия/тренд» (LUA).

Индикатор "Параболическая регрессия/тренд" (Бонус к линейной)

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




Линейная регрессия в помощь...

Добрый день!

Для всех QUIKеров в свободное пользование индикатор линейной регрессии (LUA).
Линейная регрессия в помощь...
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


Продолжение: http://smart-lab.ru/blog/337978.php



Индикаторы для QUIK - ASCTrend

После семинара В. Олейника захотелось в своем квике получить индикатор ASCTrend, но т.к. на просторах интернета не смог его найти, то решил сделать свой путем переработки кода для MT5. На авторство не претендую, просто вдруг кому пригодится.
Синяя точка под свечой — сигнал на покупку, красная над свечой — сигнал на продажу.

Краткое описание.

По большому счету — это обычный трендовый индикатор, который своими точками указывает на момент разворота тренда, пусть и не всегда удачно, но идеальных индикаторов не существует. Для формирования торговых сигналов используется стандартный индикатор Larry Williams` Percent Range.
Параметр у данного индикатора всего один, но он очень важен, так как отвечает за частоту появления точек на графике. Этот параметр не может быть меньше «3», так как индикатор начинает работать нестабильно и часто неправильно. Но при увеличении значения не значит, что сделки будут появляться часто, как раз наоборот, фильтр становится жестче и сигналов становится меньше, что позволяет отлавливать более затяжные тренды.
Взято отсюда: http://findicators.com/indikator-asctrend



( Читать дальше )

....все тэги
UPDONW
Новый дизайн