Library for AmiBroker
SignalGraph

Анализатор входов/выходов

Идея вычитана мною в статье
Олег Пожарков (Uncle), Илья Зябрев (Goodman)
"Статистическое превосходство. Где его искать?"
.

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

Библиотека разработана в виде плагина для Амиброкер. Плагин написан на C++ VisualStudio 2005.
В библиотеке всего одна функция BBL_SignalGraph().

Основные возможности

Функция позволяет в графическом виде представить зависимость прибыли от времени после сигнала на покупку, продажу, закрытие, изменение размера позиции.

Список функций

BBL_SignalGraph( arSource, iCount, iSpread);

arSource - Массив цен по которым вычисляется статистика
В обычном режиме, это Close, но в приведенном ниже примере, сюда подставляется специально созданный массив.
iCount - Количество точек на графике
iSpread - спред в пунктах. Все графики в окошке должны начинаться с этого значения (со знаком минус)
Скрытым параметром являетсяTickSize, значение которого устанавливается в меню Symbol->Information. Для евро 0.0001, для йены 0.01.
Замечание. Для расчета статистики по всем имеющимся данным следует в текст AFL вставить строку
SetBarsRequired( 100000, 100000);
График не должен двигаться при прокрутке в окне цен.

Описание

Довольно простая и полезная функция. Для её использования нужна программа GraphWindow.exe. Эта программа представляет собой окно, принимающее информацию от плагина и отображающее эту информацию в графическом виде. В окне отображается зависимость средней по всем сделкам данного вида (Buy, Sell, Short и Cover) прибыли (с учетом спреда) в зависимости от времени.

Зачем это нужно? Некоторые считают, что полностью сделку можно разделить на открытие, закрытие и сопровождение позиции. И, даже, можно представить себе следующий способ построения стратегии. Берем некоторое множество входов и выбираем из него наилучший. Затем аналогично подбираем наилучший способ ведения позиции и наилучший способ закрытия. Мне этот способ представляется сомнительным, и вот почему. Во первых, у стратегии должна быть своя собственная идея. Идея эта может вполне однозначно определить типы входов, выходов и ведения позиции вполне однозначно. Кроме того, есть мнение, что наличие уже нескольких параметров у стратегии приводит к её неустойчивости и подгону бэктестинга под кривую. В случае же отдельного тестирования входов, выходов и сопровождения, необходимо наличие хотя бы одного параметра для каждого теста. Здесь можно сказать, что параметры могут быть равными, но идея то другая - выбрать три лучших способа и их объединить.

Так вот, теперь представьте, что Вы имеете возможность, прицепить анализатор непосредственно к своей стратегии и увидеть, допустим, что вся прибыль вашей стратегии получается за счет правильного ведения позиции, а все открытия носят случайный характер и не вносят в стратегию совершенно никаких положительных свойств. Что Вы будете делать?

Для пояснения действий программы создадим тестовый график такого вот вида.


Вот как его можно сделать


short_step = 0.001*Param( "Short Sin Period", 10, 1, 100);
short_size = TickSize*30*Param( "Short Sin Size", 10, 0, 100);

ungle = 0.001*TickSize*Param( "Ungle", 43, 1, 5000);

long_step = 0.0001*Param( "Long Sin Period", 10, 1, 100);
long_size = TickSize*20*Param( "Long Sin Size", 25, 0, 200);

x1 = 0;
x2 = 0;
u = 0;
for(i=0; i<BarCount; i++)
{
	short_sin[i] = sin( x1);
	short_source[i] = short_size * short_sin[i];
	long_source[i] = long_size * sin( x2) + u;
	x1 = x1 + short_step;
	x2 = x2 + long_step;
	u = u + ungle;
}

source = short_source + long_source;

Покупать будем по зеленым сигналам, а продавать - по красным. Очевидно, после каждого сигнала на покупку или продажу мы пойдем в плюс, а дальнейшая судьба нашей позиции, если её вовремя не закрыть, будет зависеть от того, в каком месте следующего графика мы находимся.


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

Кроме того, заметьте, что весь график наклонен вверх, поэтому любой лонг даст плюс, если его как следует подержать.

А как же определить качество наших входов? Да очень просто, нужно посмотреть, куда в среднем пойдет цена после открытия сделки. Вот как это будет выглядеть


По горизонтальной оси - количество свечей, после открытия

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


Вот, теперь всё понятно стало. Надо закрывать любую позицию примерно через 300 свечей. Само собой. Не нужно смотреть, что будет через 3000 свечей с прибылью. Это дело случайное. Я думаю, примерно так. Если Вы строите стратегию на пересечении двух средних с периодами 24 и 120, то и смотрите на поведение графика в пределах 200 первых свечей.

Download

BBL_SignalGraph.dll

GraphWindow.exe

Пример с синусом на AFL

Возможно, без этого не будет работать (библиотеки Microsoft)

Хостинг от uCoz