Mark Johnson 02 June 2001
Знакомимся с классикой системостроительства для портфеля фьючерсов -- простейшая система Thirteen. Система всегда в рынке, то есть реверсивная -- из лонга переходит в шорт и наоборот. Вход осуществляется при пересечении индикатора MACD с параметрами 13 и 130 нулевой линии. Это, по сути, то же самое что система, построенная на пересечении двух скользящих средних, что доказывает что, по крайней мере до 2001 года можно было легко зарабатывать на пересечении двух средних скользящих.
Как видим, на периоде с 1980 до 2000 года система стабильно зарабатывала. Тест на основных американских фьючерсах одним контрактом:
Но с 2001 года, когда она была опубликована, ее стало лихорадить и стабильность пропала.
А вот простейший код для Омеги, подтверждающий тезис что код робастной системы должен помещаться на спичечном коробке:
---------------------------------------
vars: mysignal(0);
mysignal = MACD(Close, 13, 130);
if (mysignal > 0.0) then buy tomorrow at the market;
if (mysignal < 0.0) then sell tomorrow at the market;
---------------------------------------
А это для WL4:
---------------------------------------
{$I 'MACDEx'}
var MPane, MEx, MHist, MPane1, MEx1, MHist1, MPane2, MEx2, MHist2, MPane3, MEx3, MHist3: integer;
var Bar, p: integer;
var bLongSAR: boolean;
MEx := MACDExSeries( #Close, 13, 130 );
MHist := SubtractSeries( MEx, EMASeries( MEx, 9 ) );
MEx1 := MACDExSeries( #Close, 13, 130 );
MHist1 := SubtractSeries( MEx1, EMASeries( MEx1, 9 ) );
MEx2 := MACDExSeries( #Close, 13, 130 );
MHist2 := SubtractSeries( MEx2, EMASeries( MEx2, 9 ) );
MEx3 := MACDExSeries( #Close, 13, 130 );
MHist3 := SubtractSeries( MEx3, EMASeries( MEx3, 9 ) );
MPane := CreatePane( 100, true, true );
PlotSeries( MEx, MPane, #Maroon, #Thick );
PlotSeries( EMASeries( MEx, 9 ), MPane, 111, #Thin );
PlotSeries( MHist, MPane, #Black, #Histogram );
DrawLabel( 'MACDEx(13,130) and 9 period Signal Line', MPane );
for Bar := 130 to BarCount - 1 do
begin
if LastPositionActive then
begin
p := LastPosition;
bLongSAR := PositionLong( p );
if PositionLong( p ) then
begin
if CrossUnderValue( Bar, MEx1, 0 ) then
begin
SellAtMarket( Bar + 1, p, '' );
end;
end;
if PositionShort( p ) then
begin
if CrossOverValue( Bar, MEx3, 0 ) then
begin
CoverAtMarket( Bar + 1, p, '' );
end;
end;
end;
if not bLongSAR then
begin
if CrossOverValue( Bar, MEx, 0 ) then
begin
BuyAtMarket( Bar + 1, '0' );
end;
end;
if bLongSAR then
begin
if CrossUnderValue( Bar, MEx2, 0 ) then
begin
ShortAtMarket( Bar + 1, '4' );
end;
end;
end;
----------------------------------------
Edited at 2010-05-24 08:57 (UTC)
Возьмем полуидеальный вариант -- систему стали играть 30-50% участников. В этом случае в точке входа купят все, если на каждого покупателя найдется продавец. А что дальше? На этом покупатели закончились, так как все кто хотел, уже купили. Поэтому, покупателей уже нет, цена больше вверх не идет, и кто-то начнет фиксировать небольшую прибыль или даже безубыток -- начинается паника, сброс, обвал. Система перестала работать.
То есть, для системы важно, чтобы были те, кто готов принять на себя груз поражений, так как если вы выигрываете, то кто-то должен проиграть. А дураков на рынке мало, поэтому все не так просто.
Это мое объяснение, но есть и другие популярные версии -- например, против известных систем начинают играть роботы, мегакукл, маркетмейкеры и прочие проф.участники рынка и др.
Edited at 2010-05-24 08:54 (UTC)
а можно график по wallmart если не трудно
Re: а можно график по wallmart если не трудно
Почему именно WMT? Вообще, система для фьючерсов.
Третий аспект -- различное применение капитала для торговли. Если для акций возможно плечо всего лишь 1:2, то для фьючерсов все по-другому -- имея 5 000 долларов, можно купить фьючерс стоимостью, например 65 000. Из-за этого получаются разные риски и доходности. Именно по этой причине долгосрочные трендовые системы для акций дают очень небольшой доход, редко перекрывающий доход по стратегии купил-и-держи-индекс.
Edited at 2010-05-24 10:48 (UTC)