| Overall Statistics |
|
Total Trades 11 Average Win 1.50% Average Loss -0.98% Compounding Annual Return 9.221% Drawdown 7.900% Expectancy 0.512 Net Profit 9.227% Sharpe Ratio 0.977 Loss Rate 40% Win Rate 60% Profit-Loss Ratio 1.52 Alpha 0.086 Beta 0.047 Annual Standard Deviation 0.095 Annual Variance 0.009 Information Ratio -0.279 Tracking Error 0.143 Treynor Ratio 1.966 Total Fees $57.06 |
using System.Collections.Concurrent;
namespace QuantConnect
{
public class RollingWindowAlgorithm : QCAlgorithm
{
private const string symbol = "SPY";
private const int WindowSize = 50;
// the RollingWindow type allows us to easily build history
private readonly RollingWindow<TradeBar> History = new RollingWindow<TradeBar>(WindowSize);
public override void Initialize()
{
SetStartDate(2014, 01, 01);
SetEndDate(2015, 01, 01);
AddSecurity(SecurityType.Equity, symbol, Resolution.Daily);
}
public override void OnData(Slice data)
{
// verify the new data exists in the slice object
TradeBar spy;
if (!data.Bars.TryGetValue(symbol, out spy)) return;
// add the new data to our history
History.Add(spy);
if (!History.IsReady) return;
// History is full and ready with data
// History[0] is the most recently added piece of data
// History[n] is the data added n periods ago
// History[30] is the data added 30 trading days a
int quantity = Portfolio[symbol].Quantity;
if (quantity <= 0 && History[0].Close > History[30].Close)
{
SetHoldings(symbol, 1.0);
}
else if (quantity >= 0 && History[0].Close < History[30].Close)
{
SetHoldings(symbol, -1.0);
}
}
}
}