? ?

jc_trader


JC-TRADER

Биржевые игры. Системные Спекуляции.


Previous Entry Поделиться Пожаловаться Next Entry
Опыты на Трейдстейшн :)
jc_trader
Типичная картинка распределения одной и той же торговой системы по таймфреймам. Самые разнообразные системы (не фуфло) прогонял для этих таймфреймов -- получается примерно одинаковая картина -- чем ниже таймфрейм тем больше убытки. Здесь приведен типичный пример для фьючерса на Евро с комиссионными 2,5 и проскальзыванием 1 тик.

Дневки:


240 мин:


60 мин:


15 мин:


5 мин:


Сразу оговорюсь что эта закономерность не относится к фьючерсу на РТС -- на нем работают все системы на любых таймфреймах :)



  • 1
Почему один и тот же алгоритм должен работать на разных тайм фреймах?

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

(Удалённый комментарий)
(Удалённый комментарий)
(Удалённый комментарий)
Да, это так. Поэтому всегда тестирую только на портфеле инструментов. На одном инструменте положительный результат может получиться случайно.

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

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

Кстати

(Анонимно)

если допустим рынок открывается с гепом вниз, то на графике РИ открытие всегда происходит на уровне закрытия предыдущего дня, короче я так понял на графике отображаются сделки из премаркета, как с этим бороться?

Не использовать в тестах цену открытия, раз она ложная.

(Анонимно)
как повысят комиссию на РТС так все скальперы пойдут дворы мести))

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

(Удалённый комментарий)
Ну хорошо, вот у меня 999 систем -- по Вашей логике некоторые должны работать на дневках, некоторые на минутках. Но ведь, как ни странно, ни одна система даже близко не заработала на фреймах ниже часа, а в основном и ниже дневок.

Да 1 тик проскальзывание для Евро это нормально.

(Удалённый комментарий)
(Удалённый комментарий)
(Удалённый комментарий)

Может поможет

Уважаемый jc_trader, я много экспериментировал и пришел опытным путем, что нужно вычислять меру гладкости данных (пока она не станет положительной) и посмотреть на
каком уровне агрегации данных система начинает сливать или работать .
То есть давным давно (не буду врать, по-моему Гренжер и Хатанака в 1976 году) придумали эту меру,
на Matlab выходная переменная r, Level - уровень агрегирования, Arr_C - вектор котировок. Могу и картинки прикрепить :).

>>Level=1;plot(aggregation_a(Arr_C,Level)); h=wfbmesti(aggregation_a(Arr_C,Level));[l,r]=k_g(aggregation_a(Arr_C,Level)); [r h(1)]

ans =

-48.2402 0.2465

>> Level=5;plot(aggregation_a(Arr_C,Level)); h=wfbmesti(aggregation_a(Arr_C,Level));[l,r]=k_g(aggregation_a(Arr_C,Level)); [r h(1)]

ans =

-9.4988 0.5208

>> Level=60;plot(aggregation_a(Arr_C,Level)); h=wfbmesti(aggregation_a(Arr_C,Level));[l,r]=k_g(aggregation_a(Arr_C,Level)); [r h(1)]

ans =

-0.9052 0.6452

>> Level=240;plot(aggregation_a(Arr_C,Level)); h=wfbmesti(aggregation_a(Arr_C,Level));[l,r]=k_g(aggregation_a(Arr_C,Level)); [r h(1)]

ans =

0.3358 0.5402

%==============================================================================

function [xaggreg]=aggregation_a(x,m)
% Функция вычисляет m-агрегированный временной ряд xaggreg, усредняя
% исходный временной ряд по неперекрывающимся блокам размера m,
% заменяя каждый блок его средним значением.
%=========================================================
%
% Входные значения:
% x - входной ряд (сигнал),
% m - уровень агрегации.
%
% Выходные значения:
% m-агрегированный ряд (сигнал).

maxp=length(x);
k=floor(maxp/m);
xaggreg=[];
for i1=1:k
xaggreg=[xaggreg 1/m*sum(x((i1-1)*m+1:i1*m))];
end
return % end of function aggregation_a

%==============================================================================

function [L, r]=k_g(Signal,Param,H)
%==============================================================================
% Функция вычисляет меру гладкости данных.
%==============================================================================
%
% Входные значения:
% Signal - данные для которых нужно рассчитать меру гладкости данных.
% Param - может принимать значения 'constant' или 'linear'
% H - расстояние между замерами.
%
% Выходные значения:
% L - содержит оценку меру гладкости данных.
% L=-1 - означает ошибку.

L=-1; nbIn=nargin;
if nbIn < 1
error('Not enough input arguments.');
elseif nbIn > 3
error('Too many input arguments.');
elseif (nbIn>2)
if (strcmp(Param,'constant')==0 && strcmp(Param,'linear')==0) || H<=0 || length(Signal)<2
error('Wrong of arguments');
else
y=detrend(Signal,Param);
end;
elseif nbIn>1
if (strcmp(Param,'constant')==0 && strcmp(Param,'linear')==0) || length(Signal)<2
error('Wrong of arguments');
else
y=detrend(Signal,Param);
H=1;
end;
elseif nbIn==1
y=detrend(Signal,'constant');
H=1;
end;

Len=length(Signal);
L=(Len-1)*H.^2;
yy=diff(y).^2;
IL=(ones(1,Len-1)*H).^2;
L=IL+yy;
L=sum(L.^.5);
r=1-(L-(Len-1)*H.^2)/(2*var(Signal)); % мера корреляции по Гренжеру и Хатанака.
return % end of function k_g

Re: Может поможет

Спасибо, действительно интересная идея.

Ваша система на ALU как фильтр + внутридневная система изходя из предполагаемого движения :)

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

" + внутридневная система изходя из предполагаемого движения"

Считаю внутридневные движения непредсказуемыми, поэтому что с внутридневной системой что без системы :)

(Удалённый комментарий)
(Удалённый комментарий)

Александр

(Анонимно)
Здравствуйте, Юрий!
Хотел задать пару вопросов.
1. Вы уже несколько раз упомянули про фьючерс на индекс РТС. Для своих исторических тестов на данном инструменте Вы используете, наверное, котировки т.н. "склеенного" фьючерса? Если да, то не пробовали оценить, насколько результаты такого тестирования будут адекватными для Ваших систем? (а я предполагаю, что тут сильно будет зависеть от того, какая система)

2. Как у Вас технически реализовано получение котировок акций с ММВБ в программы теханализа и тестирования? Для разовых тестов можно и вручную загрузить, а чтобы ловить сигналы даже по 20..30 бумагам, нужна же какая-то автоматизация. Я так понимаю, что на данный момент хорошие платные поставщики котировок типа E-signal этих данных не дают и люди вынуждены использовать всякие извращенные способы, чтобы получать котировки из того же Quik в TradeStation, например. Кстати, посмотрел, у того же E-signal есть какие-то котировки с РТС (по неадекватной цене ИМХО), а ММВБ нет.

Заранее спасибо.
Пишите еще - с удовольствием читаю Ваш журнал.

Re: Александр

Добрый вечер.
1. Фьючерсом на РТС занимался очень кратковременно. Для тестов использовал данные склееноого фьючерса с Финама. Потом еще тестировал в реалтайме -- в Квике есть экспорт котировок в WLD4.
2. С ММВБ все просто. Программа WLD6 получает данные с Финама. В конце дня прогоняю систему и выдаются ордера на покупку или продажу. На следующий день исполняю эти ордера вручную.

Re: Александр (Анонимно) Развернуть
Re: Александр (Анонимно) Развернуть
Юрий, вот тут множество внутридневных систем на длительном отрезке времени зарабатывают - акции ММВБ.
https://tc.finam.ru/

  • 1