Избранное трейдера Sergey Pavlov

по

Для 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



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

Расчет бета-коэффициентов на R двумя способами

    • 14 июня 2016, 03:38
    • |
    • SciFi
  • Еще
Посчитал беты акций своего инвест. портфеля двумя способами — с помощью пакета PortfolioAnalytics и через линейную регрессию с индексом ММВБ. Результаты расчетов совпали. 

Затем я составил таблицы для бет, взяв две истории — с 2012 года по настоящее время и с 2015.

Таблицы

Расчет бета-коэффициентов на R двумя способами
С 2012 г.

Расчет бета-коэффициентов на R двумя способами
C 2015 г.

Видно, что Роснефть и Норникель бегают за рынком. ФосАгро, Акрон и банк Открытие не зависят от рыночных настроений.

Код на R:



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

Анализ TWIME против PLAZA2

    • 11 июня 2016, 09:53
    • |
    • Viking
  • Еще

Анализ TWIME против PLAZA2

Все использованные далее замеры проведены 7 июня 2016 года.

Рис 1. 
Анализ TWIME против PLAZA2
На рисунке 1 раунд трип заявки на выставление (микросекунды): серым — TWIME, желтым – PLAZA2, синим – фикс срочного рынка.
Видно, что клиенты подключены к одному и тому же пром-серверу, т.к. графики сильно коррелируют.
Средний раунд трип в этот день: фикс 989 мкс, PLAZA2 842 мкс, TWIME 841 мкс
В данной ситуации TWIME на одну-две заявки опережает PLAZA2 по скорости выставления, а PLAZA2 опережает фикс. Видно так же, что TWIME менее стабилен, чем фикс и PLAZA2. Из-за этого среднее время раунд трипа у TWIME и PLAZA2 почти одинаковое.
Такими же обнадеживающими были наши замеры TWIME в первые две недели его работы, на основе которых мы стали рекомендовать его клиентам.

Но, как выяснилось теперь, не всегда графики коррелируют. Посмотрите на следующий рисунок.



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

Ревизия торговых систем

    • 06 июня 2016, 12:29
    • |
    • SenSoR
  • Еще
Решил сделать, т.к. давно не делал.
Все системы торгуют в режиме он-лайн, только риски там поменьше будут. А на другом счете я допускаю макс просадку в ~50 тыр на каждую ТС.

Итак, большинство систем обновили свой хай по эквити, что очень радует в такое непростое время!

Условные обозначения: Т — трендовая тс, Р — реверсная тс.
Ревизия торговых систем
Ревизия торговых систем



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

Анализ торгового журнала и стратегий с помощью R

    • 05 июня 2016, 17:34
    • |
    • SciFi
  • Еще
Сегодня я решил провести анализ своего торгового журнала средствами и возможностями языка R.

Я понимаю, что есть специальные сервисы, которые позволяют анализировать торговый журнал. Но во-первых, они платные. Во-вторых, я веду свой журнал сам в Excel и мне удобнее было написать собственную программу. Тем более, что средствами R можно делать то, чего не будет в этих платных сервисах.

Взял все сделки на ФОРТС с 1 января по 1 июня 2016 года (за полгода). Их у меня было 565 штук. Торгую я роботом и руками по разным стратегиям, но записываю в журнал, почему открыл и закрыл каждую сделку. Стратегий было много разных, но я решил выделить все сделки в две группы — где я торговал роботом и где руками. 

Предварительно подготовил данные в Excel — выбрал только те столбцы, которые я планировал анализировать: дата сделки, маржа, номер стратегии (0 и 1 для ручной и робот. торговли). Создал файл CSV. И приступил к анализу в среде R. 

Далее я построил гистограммы маржи за каждую сделку для трех случаев — для всех сделок, для сделок роботом и сделок руками. Наложил синие линии — аппроксимацию. А также вывел описательную статистику для этих трех случаев. 

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

Анализ коинтеграции пар активов на R и можно ли торговать RTS только по Brent

    • 02 июня 2016, 06:47
    • |
    • SciFi
  • Еще
Продолжаю изучать R и делиться кодом. На этот раз проанализируем коинтегрированность. Вообще, торговать корреляции опасно, так как они могут оказаться случайными. Гораздо безопаснее коинтеграцию. Хотя и она может ломаться.

Далее используется тест Энгла-Грэнджера. Тест основан на коинтеграционном уравнении, оценённом с помощью обычного МНК. Идея теста заключается в том, что если остатки этой модели нестационарны (имеют единичный корень), то коинтеграция временных рядов отсутствует. Нулевая гипотеза — отсутствие коинтеграции, то есть наличие единичного корня в ошибках модели (коинтеграционного уравнения). Для проверки гипотезы единичного корня применяется статистика расширенного теста Дики-Фулера, однако в отличие от классического случая этого теста в данном случае критические значения статистики иные, они больше по абсолютной величине.


Коинтеграция Si со спотом
 

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

Код для формирования минуток из таблицы всех сделок квика для спота

Порядок действий

1. Формируем в квике таблицу всех сделок со следующими параметрами

Код для формирования минуток из таблицы всех сделок квика для спота

Фильтром отбираем нужные инструменты.

2. Скачиваем из Интернета свободно распространяемый DDE сервер от Морошкина с прилагаемыми dll.
3. В соответствующих местах кода заменяем код на вот этот

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Timers;
using System.Threading;
using XlDde;

namespace ConsoleApplication2
{
class Program
{
const string service = «myDDE»;
const string candleSPOT = «SPOT»;


static void Main(string[] args)
{

using (XlDdeServer server = new XlDdeServer(service))
{

server.AddChannel(candleSPOT, new SPOTChannel());
server.Register();

Console.WriteLine(«DDE server ready. Press Enter to exit.\n\n»);
Console.ReadLine();
}



}
}


// **********************************************************************
// * Классы DDE каналов с обработчиками данных *
// **********************************************************************


class SPOTChannel: XlDdeChannel
{
//static int time2 = 1000;
static int em = 7;
static int m = 1200;
static int[] NM = new int[em];
static int NMM = 0;
static int LastMinute = 0;
static int mm = 1638400;
static double[] Price_trade = new double[mm];
string[] EM_trade = new string[mm];
static int[] Time_trade_I = new int[mm];
static int[] Volume_trade = new int[mm];
static int[,] Time = new int[em,m];
static double[,] O = new double[em,m];
static double[,] H = new double[em,m];
static double[,] L = new double[em,m];
static double[,] C = new double[em,m];
static double[,] V = new double[em,m];

protected override void ProcessTable(XlTable xt)
{

//int time3 = 1000;
int[] nach = new int[em];
int nach1 = 0;
int i = 0;
int j = 0;
int s = 0;
int curHour = 0;
int curMin = 0;
int curDay = 0;
int curSec = 0;
int curDay_1 = 0;
string name;
string[] bf;
string[] EM = new string[em];
DateTime moment;
string[] Time_trade = new string[mm];



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

К вопросу об Альфе

Классический расчет α управления осуществляется через линейную регрессию:


ΔSt=βΔBt+α+εt,

где ΔS — приращение счета в %, «очищенное» от вводов-выводов (для фондов — приращение стоимости «пая» или акций фонда),
ΔB  — приращение бенчмарка в %,
εt — ошибка линейной регрессии.

Как видите, «лучше бенчмарка» на росте или на падении ничего не говорит нам о знаке α. Потому что быть лучше бенчмарка на росте можно за счет β>1 даже с отрицательной альфой, а на падении — за счет β<1. И только одновременный «обыгрыш» бенчмарка и на росте и на падении приведет к тому, что α, рассчитанная по всему периоду будет положительна. Более того, α может быть положительна и при проигрыше бенчмарку на росте и только при проигрыше бенчмарку на падении она с большой вероятностью будет отрицательна.

Но все, кто хоть раз считал α и β, прекрасно знают, что они нестационарны по времени и их значения, вычисляемые, например, по 100 тактам, временами сильно отличаются от результатов расчетов на всей истории. Но это хоть можно наглядно отследить, построив «альфа-бета карту» относительно бенчмарка. Вот, например, 100-дневная «альфа-бета карта» для нашего расчетного портфеля, ранее называвшегося «Суперриск»:

К вопросу об Альфе
относительно бенчмарка, определенного здесь (аналог рублевого buy&hold на фьючерсе, только рассчитываемый по значениям самого индекса)

К вопросу об Альфе

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

Как создать торгового робота для Московской биржи MOEX на MetaTrader 5?

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

 

Торговать на бирже с помощью роботов — это просто

Язык MQL5 изначально поддерживает все торговые возможности платформы MetaTrader 5 — в нем множество торговых функций для работы с ордерами, позициями и торговыми запросами. При этом не имеет значения, на каком рынке вы торгуете -  фьючерсы, акции, опционы и т.д.

Средствами MQL5 вы можете создать торговый запрос и отослать его на сервер с помощью функций OrderSend() или OrderSendAsync(), получить результат его выполнения, просмотреть торговую историю, узнать спецификацию контракта для инструмента, обработать



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

К вопросу о коинтеграции в парном трейдинге

Перевод с http://www.tradesignalmachine.com/blog/cointegration-for-pairs-trading-part-1
-------------
Это пост появился в результате моего собственного опыта и разочарования за последние пару месяцев, пока я разрабатывал парную торговую стратегию. После исследований я понял, что не следует искать не «коррелированные» пары инструментов для торговли, а пары, которые «коинтегрированы».

Основная проблема, которую я испытывал, состояла в том, что математика, которая требуется для описания и измерения коинтеграции, была достаточно сложной. Каждая статья, которую я прочитал, была наполнена словами и понятиями, с которыми я не был знаком, поэтому я был вынужден прочитать их очень много, прежде чем я наконец-то почувствовал, что понял. В конце концов, после многих бессонных ночей, я, наконец, смог поставить свое приобретенное знание на службу алгоритмам моей торговой системы. Уверен, что я не единственный, кто был этим разочарован.

После того, как, наконец, получил хорошее представление о предмете, я решил написать статью, которой мне не хватало в то время. Она пытается ответить на все вопросы, которые я задавал тогда, в одном месте. Хотя я надеюсь, что я объяснил все необходимые понятия и принципы, вы все равно должны быть понимать математику на уровне здравого смысла! Я надеюсь, вы найдете это полезным.

Итак, коррелированные инструменты имеют тенденцию двигаться подобным образом. Если один движется вверх в течение дня, то другой, вероятно, тоже пройдет день вверх (и наоборот.) Тем не менее, с течением времени, соотношение цен (или спрэд) между этими двумя инструментами может значительно отличаться. Смотрите график AUDUSD против NZDUSD ниже. Ясно, что они коррелируют, но обратите внимание, как конечное соотношение между ценами составляет почти 5%, т.е. цены сильно отличаются в конце периода наблюдения по сравнению с началом.

 К вопросу о коинтеграции в парном трейдинге



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

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