Блог им. diamante |Buy High стратегия

Тест стратегии из поста http://smart-lab.ru/blog/343965.php 

Формализовал стратегию так, как я ее понял. 

1. Входа на следующий день, после обновления исторического хая. Тут есть неточности — историю брал с 2005 года. Не факт, что all time high был на этом промежутке. 
2. Предыдущее обновление хая было больше 90 дней назад и менее чем 200 дней назад. 
3. Примерно 500 ликвидных бумаг с NYSE/NASDAQ/AMEX. Без учета делистинга, без учета комиссий, без учета платы за плечо. Вроде бы без дивидендов (не уверен), дейли дата взята с Google Finance. 

4. Стоп в примере — 3%. Тейк — 90%. Можно взять больше стоп, результаты не критично меняются. 
5. Вход фиксированным BP на позицию. (взял 1000 на позу)

Код Multicharts.Net 

using System;
using System.Drawing;
using System.Linq;
using PowerLanguage.Function;
using ATCenterProxy.interop;

namespace PowerLanguage.Strategy {
        public class _INTEST_by_high_daily : SignalObject {
                public _INTEST_by_high_daily(object _ctx):base(_ctx){}
                private IOrderMarket buy_order;
                private IOrderMarket sell_order;
                double previous_high;
                double previous_high_low_range;
                double all_time_high;
                protected override void Create() 
                {
                        // create variable objects, function objects, order objects etc.
                        buy_order = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy));
                        sell_order = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell));
                }
                protected override void StartCalc() {
                        all_time_high =0;
                }
                protected override void CalcBar()
                {
                        // strategy logic 
                        if (Bars.High[0]>previous_high && previous_high_low_range<previous_high && previous_high == all_time_high)
                        {
                            buy_order.Send();
                        }
                        
                        if (StrategyInfo.MarketPosition>0 && Bars.Close[0]>StrategyInfo.AvgEntryPrice*1.9)
                                sell_order.Send();
                        
                        previous_high = Bars.High.Highest(200);
                        previous_high_low_range = Bars.High.Highest(90);
                        if (Bars.High[0]> all_time_high) all_time_high = Bars.High[0];
                        
                }
        }
}


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

Блог им. diamante |Бектестинг и подгонка эквити.

Случайно наткнулся на интересную статью по оверфиттингу и подгонке эквити. В принципе, информация не новая, но полезная.

Наслаждайтесь: Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance

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