| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 16.653% Drawdown 9.600% Expectancy 0 Net Profit 0% Sharpe Ratio 1.34 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.016 Beta 0.984 Annual Standard Deviation 0.12 Annual Variance 0.014 Information Ratio 0.89 Tracking Error 0.016 Treynor Ratio 0.163 Total Fees $2.55 |
namespace QuantConnect
{
public class MultiTimeFrameMovingAverageAlgorithm : QCAlgorithm
{
private Dictionary<int, SimpleMovingAverage> _sma = new Dictionary<int, SimpleMovingAverage>();
private Dictionary<int, RelativeStrengthIndex> _rsi = new Dictionary<int, RelativeStrengthIndex>();
public override void Initialize()
{
SetStartDate(2016, 1, 1);
AddEquity("SPY", Resolution.Minute);
foreach(var minute in new int[]{ 5, 10, 15, 20, 30 })
{
// Create Consolidator
var consolidator = new TradeBarConsolidator(TimeSpan.FromMinutes(minute));
// Create indicators
var sma = new SimpleMovingAverage(22);
var rsi = new RelativeStrengthIndex(14);
// Register indicators to the consolidator to be updated at its frequency
RegisterIndicator("SPY", sma, consolidator);
RegisterIndicator("SPY", rsi, consolidator);
// Add the consolidator to the subscription manager to get updated with data from security
SubscriptionManager.AddConsolidator("SPY", consolidator);
// Add SMA and RSI to Dictionaries
_sma.Add(minute, sma);
_rsi.Add(minute, rsi);
}
}
public override void OnData(Slice data)
{
if (!Portfolio.HoldStock) SetHoldings("SPY", 1);
}
// At end of day, plot the indicators for visual sanity check
public override void OnEndOfDay()
{
foreach(var kvp in _sma)
{
Plot("SMA", "M" + kvp.Key, kvp.Value);
}
foreach(var kvp in _rsi)
{
Plot("RSI", "M" + kvp.Key, kvp.Value);
}
}
}
}