Добрый день, коллеги!
На вчерашней встрече клуба Эдуарда Ланчева мне предложили протестировать простую торговую систему. Далее много буквок, но приведен иллюстрированный пример как из «сливающей» трендовой сделать прибыльную контртрендовую систему.
Это только идея, а не конечный вариант. Заготовка, так сказать.
Правила торговой системы:
1. Если цена три бара подряд растет, при этом цена последнего бара выше значения скользящей средней некоторого периода — покупаем.
2. Если цена два бара подряд падает — продаем.
Любое моделирование накладывает на нас некоторые ограничения, поэтому немного изменим правила:
1. Если цена выше трех предыдущих баров, при этом цена последнего бара выше значения скользящей средней некоторого периода — покупаем.
2. Если цена ниже двух предыдущих баров — продаем.
Моделирование производим по следующим параметрам:
размер счета безграничен;
в одной сделке используем 1 единицу ценной бумаги (не лот) — получим результаты в пунктах цены без учета размеров лотов;
работаем только в лонг (это у меня традиционно, плюс усложняет задачу);
тестируем только идею без правил удержания, стопов и прочего — как есть;
период бара — дневки;
период времени с 1 января 2012 года по н.в.
период средней — 5 (простая скользящая);
тестовые активы:
а) Сбербанк (ао)
б) Портфель: Сбербанк, Роснефть, Газпром, Северсталь, Мечел, Уралкалий.
Результаты теста:
Сбербанк с 1 января 2012 года
Портфель с 1 января 2012 года
Рассматриваемая система является представителем трендследящих систем. В тоже время ни для кого не секрет, что российский рынок в последние годы находится в боковике. Следовательно, естественно эта система будет «сливать».
Но, перевернув правила, из нее можно сделать контртрендовую систему.
Для этого применим следующие правила:
1. Если цена ниже трех предыдущих баров, при этом цена последнего бара ниже значения скользящей средней некоторого периода — покупаем.
2. Если цена выше двух предыдущих баров — продаем.
Условия теста те же.
Результаты:
Сбербанк с 1 января 2012 года
Портфель с 1 января 2012 года
Сбербанк с 1 января 2008 года
Портфель с 1 января 2008 года
2 я бы взял максимально ликвидные бумаги из индекса ммвб30… первую десятку или списка 13 бумаг доступные для шорта по т+2
Молодец, пиши еще!
Которую конечно можно загнать в плюс подборкой параметра скользящей средней и игнорированием комиссии.
Но с тем же успехом это можно сделать то же самое и с трендовой версией.
То есть имеем банальную подгонку. Если повозиться ещё минут 10 с условиями, то можно сделать эквити идеальное на истории, но которое, естественно, работать не будет в будущем. Потому как переоптимизация и подгонка — путь к сливу.
2. Это далеко не полноценная торговая система. Цель статистического моделирования выявить потенциал системы. Если заложенная «идея» теоретически прибыльная, то ее можно брать за основу разработки практической торговой системы.
3. Во всех приведенных примерах прибыль измеряется в пунктах цены. Для этого не ставиться предела по размеру счета, но 1 сделка = 1 контракту (бумаге, даже не лоту).
4. Оптимизация не проводилась. Совсем. Тестировалось как есть, при этом я осознаю что в системе как минимум 3 переменных: параметр средней, количество баров используемых для входа и выхода.
Это только пример как из трендовой сделать контртрендовую систему. На той же идее. И что в итоге может получиться.
public class MyStrategy: WealthScript
{
protected override void Execute()
{
DataSeries ma = SMA.Series(Close, 5);
PlotSeries(PricePane,SMA.Series(Close,5),Color.Blue,LineStyle.Solid,2);
for(int bar = GetTradingLoopStartBar(6); bar < Bars.Count; bar++)
{
if (Close[bar] < Close[bar — 1])
{
if (Close[bar] < Close[bar — 2])
{
if (Close[bar] < Close[bar — 3])
{
if (Close[bar] < ma[bar])
{
BuyAtClose(bar, «Buy»);
}
}
}
}
for(int _pos = ActivePositions.Count — 1; _pos >= 0; _pos--)
{
Position p = ActivePositions[_pos];
if (p.Active)
{
if (p.EntrySignal.Contains(«Buy»))
{
if (Close[bar] > Close[bar — 1])
{
if (Close[bar] > Close[bar — 2])
{
SellAtClose(bar, p, «Sell»);
}
}
}
}
}
}
И самое главное — Использование комбинации двух стратегий паралельно .(а лучше трёх=четырёх).
Причём Трендследящих тс должно быть больше в группе, с разными параметрами (рынок меняет волатильность- средняя сгаживается)