| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
using QuantConnect.Data;
using QuantConnect.Data.Consolidators;
using QuantConnect.Data.Market;
using QuantConnect.Data.UniverseSelection;
using QuantConnect.Indicators;
using System;
using System.Collections.Generic;
namespace QuantConnect.Algorithm.CSharp
{
public class ForumHistory : QCAlgorithm
{
private const int SmaPeriod = 140;
private TimeSpan _barPeriod;
private List<string> _instrumentNames = new List<string> { "SPY", "TLT" };
private Dictionary<Symbol, SimpleMovingAverage> _indicators = new Dictionary<Symbol, SimpleMovingAverage>();
private Dictionary<Symbol, IDataConsolidator> _consolidators = new Dictionary<Symbol, IDataConsolidator>();
public override void Initialize()
{
SetStartDate(2013, 10, 8); //Set Start Date
SetEndDate(2013, 10, 18); //Set End Date
SetCash(100000); //Set Strategy Cash
// We need to operate 15-min bars
_barPeriod = TimeSpan.FromMinutes(15);
RefreshSymbols();
Schedule.On(DateRules.EveryDay(), TimeRules.At(11, 00), RefreshSymbols);
}
private void RefreshSymbols()
{
System.Console.WriteLine("Refreshing symbols");
foreach (var symbol in Portfolio.Securities.Keys)
{
System.Console.WriteLine("Liquidating " + symbol.Value.ToString());
if (Portfolio[symbol].Invested)
{
Liquidate(symbol);
}
Securities.Remove(symbol);
}
foreach (var symbol in _instrumentNames)
{
System.Console.WriteLine("Adding " + symbol);
AddEquity(symbol);
}
}
private void OnNewBar(object sender, IBaseData baseData)
{
var symbol = baseData.Symbol;
_indicators[symbol].Update(baseData);
if (_indicators[symbol].IsReady && _indicators[symbol].Current.Price > baseData.Price)
SetHoldings(symbol, 0.2);
}
// this event fires whenever we have changes to our universe
public void OnSecuritiesChanged(SecurityChanges changes)
{
if (changes.AddedSecurities.Count > 0)
{
foreach (var security in changes.AddedSecurities)
{
var symbol = security.Symbol;
if (!_indicators.ContainsKey(symbol))
{
var consolidator = (IDataConsolidator)new TradeBarConsolidator(_barPeriod);
var SMA = new SimpleMovingAverage(CreateIndicatorName(symbol, "SMA" + SmaPeriod, Resolution.Minute), SmaPeriod);
consolidator.DataConsolidated += OnNewBar;
SubscriptionManager.AddConsolidator(symbol, consolidator);
_consolidators.Add(symbol, consolidator);
/* SOMEWHERE HERE I NEED TO FILL MY INDICATOR HISTORY */
/* BUT I DON't KNOW HOW */
var history = History<TradeBar>(symbol, TimeSpan.FromMinutes(15 * 140), Resolution.Minute);
}
}
}
if (changes.RemovedSecurities.Count > 0)
{
foreach (var security in changes.RemovedSecurities)
{
var symbol = security.Symbol;
SubscriptionManager.RemoveConsolidator(symbol, _consolidators[symbol]);
_indicators.Remove(symbol);
_consolidators.Remove(symbol);
}
}
}
}
}