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

по

Богатеем медленно (Часть 3, и последняя)

Богатеем медленно (Часть 3, и последняя)

Продолжение. Начало здесь.

Эксперименты

Но как же изменится среднее отклонение оптимизированного портфеля за пределами выборочного контроля, по сравнению с с 1/N? Ниже приведен скрипт для проведения экспериментов с различными структурами портфеля, периодами возврата, ограничениями значений и отклонениями:

Богатеем медленно (Часть 3, и последняя)

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

Что лучше - давать прибыли течь или все сделки торговать в плюс?

Навеяно сегодняшним постом Хомяка. Не хочется делать ему рекламу, так как для меня является неприемлемым тот стиль обращения к читателю, который он использует в своих постах, но приходится его цитировать, т.к. он проповедует в торговле метод «ни одной сделки в минус».
     Каждый, кто задается вопросом «как он это делает, черт его побери? не должен попадать в ловушку мнимой привлекательности подобной торговли, т.к. такой подход предполагает пересиживание в убыточной позиции. Вы же не думаете, что Хомяк встает в позицию, которая сразу начинает приносить бумажную прибыль и наращивает эту прибыль?
     Так что его посты я воспринимаю с юмором, и как рекламу своего псевдочудометода с тем, чтобы охмурять учить своих учеников в Ленинке. Чтобы не быть голословным обвинителем, я предложу нечто конкретное, а именно — формулу расчета эффективности торговли, которая поможет вам рассчитать эффективность сделки. Вот она:

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

Модификации на тему Price Channel (QUIK LUA)

Может кому нибудь будет интересен модифицированный Price Channel в Квике
Модификации на тему Price Channel (QUIK LUA)

Settings = 
{
        Name = "xPc5",
        period = 24,
        line=
        {
                {
                        Name = "xPc5",
                        Color = RGB(0, 128, 0),
                        Type = TYPE_LINE,
                        Width = 2
                },
        
                {
                        Name = "xPc5",
                        Color = RGB(255, 64, 64),
                        Type = TYPET_BAR,
                        Width = 3
                },
                {
                        Name = "xPc5",
                        Color = RGB(64, 64, 255),
                        Type = TYPET_BAR,
                        Width = 3
                }
        
        }
}

----------------------------------------------------------
function c_FF()


        return function(ind, _p)
                local period = _p
                local index = ind
                local MAX_ = 0
                local MIN_ = 0
                local MAX2_ = 0
                local MIN2_ = 0         

                if index == 1 then
                        MAX_ = C(index)
                        MIN_ = C(index)
                        MAX2_ = C(index)
                        MIN2_ = C(index)
                        return nil
                end
----------------------------------------------------------------------
                period = _p
                if index < period then period = index end
                MAX_ = H(index)
                MIN_ = L(index)
                MAX2_ = 0
                MIN2_ = 0
                for i = 0, (period-1) do
                        if MAX_ < H(index-i) then    MAX_ = H(index-i)       end
                        if MIN_ > L(index-i) then    MIN_ = L(index-i)       end
                        MAX2_ = MAX2_ + MAX_
                        MIN2_ = MIN2_ + MIN_
                end
                MAX2_ = MAX2_/(period)
                MIN2_ = MIN2_/(period)
                return (MAX2_+MIN2_)/2, MAX2_, MIN2_
        end             
end


function Init()
        myFF = c_FF()
        return 3
end
function OnCalculate(index)
        return myFF(index, Settings.period)
end

Альтернатива стандартному Болинджеру - Болинджер через линейную регрессию

Добрый вечер.

При одних и тех же периодах — намного информативней и интересней...

Альтернатива стандартному Болинджеру - Болинджер через линейную регрессию

Settings = 
{
        Name = "xBollinger_LinReg",
        period = 40,
        deviation=2,
        line=
        {
                {
                        Name = "xBollinger_LinReg",
                        Color = RGB(0, 0, 255),
                        Type = TYPE_LINE,
                        Width = 2
                },
                {
                        Name = "xBollinger_LinReg",
                        Color = RGB(192, 0, 0),
                        Type = TYPE_LINE,
                        Width = 2
                },
                {
                        Name = "xBollinger_LinReg",
                        Color = RGB(0, 128, 0),
                        Type = TYPE_LINE,
                        Width = 6
                }
        
        }
}


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)
                                                                
                        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



Книга которая понравилась сразу

Вчера начал читать книгу "Кванты. Как волшебники от математики заработали миллиарды и чуть не обрушили фондовый рынок, сразу скажу, книга зацепила с первых строк (про того же Ливермора зацепило только спустя 3-4 страницы), читается легко, на уровне художественной литературы, в общем крайне рекомендую, ссылку на скачивание прилагаю, хотя сам купил электронную версию, в благодарность за труды автора:
cloud.mail.ru/public/GY3T/Ru53rH4c3 (поправил ссылку на своё облако)

PS: добавлю ещё, то что лежит на моём аккаунте литрейса (магазин эл книг)
Подлые рынки и мозг ящера: Как заработать деньги, используя знания о причинах маний, паники и крахов на финансовых рынках
cloud.mail.ru/public/8DhM/fTLZ4VWpn

Черный лебедь. Под знаком непредсказуемости (сборник)
cloud.mail.ru/public/JFMJ/7TpS2ej8t

Антихрупкость. Как извлечь выгоду из хаоса
cloud.mail.ru/public/2P36/Yzprdfky3

Будни алготрейдера 03072016

    • 03 июля 2016, 14:02
    • |
    • kvazar
  • Еще
Доброго, коллеги!

Активный поиск работающих идей продолжается, код алго меняется, что нехорошо отражается на эквити) Заодно и рынок поменялся. Правда, учитывая размер счета, пока это не заботит.
Пока отказался от уровней, мин/макс и т.д. Остаются трендовые с постоянным нахождением в рынке.
Переписываю структуру БД и подпрограммы в более красивый код, в планах запустить стратегии с ТФ 3, 5 дней, с переносом позиций.
Без визуализации не совсем удобно, нужно видеть что творят алгоритмы, заодно и это «допилить».
Как доделаю выложу как это выглядит.
Задача: выйти к ЛЧИ с тем, что задумано.

Удачи!


По следам .Net Core 1.0

Для начала, хотел бы сказать спасибо пользователю crazyFakir для отслеживания темы c# в Линукс. Последняя его заметка рассказала нам об официальном релизе шарпа в Линукс.

  Для чего?

      Ну наверное для того, чтобы расширить возможности c++. Это не говорит о том, что с++ не все силен, просто нам теперь дают возможность более быстро решать задачи в виде большого количества оберток с заглавной вывеской .Net. Я честно пытался решить массу задач на c++, но бросил эти затеи, оставшись на c# под Windows. Игра в данном случае не стоит свеч.

  Когда использую C#

     Шарп использую для обслуживания трейдинга. Я очень много выкачиваю данных для анализа. А именно:
  • Выкачивание cme отчетов и парсинг pdf. Складирование все БД;
  • Парсинг yohoo, nymex для ведения истории ОИ опционов американских акций;
  • Парсинг micex на предмет все возможных данных, складирование все в БД;
  • Выкачивание и парсинг с ftp micex, складирование все в БД;
  • Парсинг всевозможных банковских курсов валют;
  • … другой разбор рыночных данных.


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

Для QUIK индикатор Parabolik учитывающий волатильность

   Добавляю код сделанного мной индикатора Parabolik в котором параметр ускорение зависит от волатильности. Чем больше волатильность, тем больше увеличивается ускорение и индикатор быстрее «догоняет» цену. Подобные есть на просторах интернета для метатрейдера (и не бесплатно), для квика не встречал.

 Для QUIK индикатор 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



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

Совместная покупка датафида.

Всем привет.

Есть такое предложение: скинуться и купить американский датафид.

Нормальный датафид нынче дорог. Но у меня есть и сервера и возможность писать коннекторы/ретрансляторы.
Одному покупать дороговато.
Сейчас покупаю у ритмика, но там и косяков куча, и ограничения есть.
(если кто хочет, может поучавствовать в покупке у ритмика)
Мне нужно CME GROUP. если будут желающие можно и еще что то докупить.

Если кому интересно, то пишите в скайп: odmin01

Легендарный Гарвардский курс CS50 на русском

Легендарный Гарвардский курс CS50 на русском


Трейдеру не обязательно быть программистом, но общие знания и основы желательны.
Более 30 лет существует суперпопулярный курс основ программирования переведен на многие языки, рассчитанный на слушателей от 12 лет)) и непрофильных студентов. На русском не было.
На хабре нашел статью, ребята из javarush занялись переводом на русский( не просто субтитры, а качественный перевод). В комментах пишут, что даже жена Сергея Брина прослушав этот курс, переехала в Кремниевую  долину и стала исполнительным директором Ютюба.
25  бесплатных лекций по 45 минут — рекоммендую

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