| 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 |
namespace QuantConnect
{
/*
* Basic Template Algorithm
*
* The underlying QCAlgorithm class has many methods which enable you to use QuantConnect.
* We have explained some of these here, but the full base class can be found at:
* https://github.com/QuantConnect/Lean/tree/master/Algorithm
*/
public class BasicTemplateAlgorithm : QCAlgorithm
{
private SecurityChanges _changes = SecurityChanges.None;
private int _todayCount = 0;
private DateTime _lastDate = DateTime.MinValue;
public override void Initialize()
{
// backtest parameters
SetStartDate(2017, 2, 1);
SetEndDate(2017, 2, 7);
// cash allocation
SetCash(25000);
UniverseSettings.Resolution = Resolution.Minute;
AddUniverse(CoarseSelectionFunction, FineSelectionFunction);
}
public IEnumerable<Symbol> CoarseSelectionFunction(IEnumerable<CoarseFundamental> coarse)
{
Debug("COURSE SELECTION BEGIN");
var filtered = (from cf in coarse
where cf.Symbol.Value == "SPY"
select cf.Symbol);
return filtered;
}
public IEnumerable<Symbol> FineSelectionFunction(IEnumerable<FineFundamental> fine)
{
Debug("FINE SELECTION BEGIN");
var filtered = (from cf in fine
where cf.Symbol.Value == "SPY"
select cf.Symbol);
return filtered;
}
public void OnData(TradeBars data)
{
if(Time.Date != _lastDate){
_lastDate = Time.Date;
_todayCount = 0;
}
_todayCount ++;
if(_todayCount > 5)
return;
//Get just this bar.
var spyBar = data.Values.Where(e=>e.Symbol.Value=="SPY").FirstOrDefault();
if(spyBar != null){
Debug($"ONDATA {spyBar.Symbol}: open={spyBar.Open}; close={spyBar.Close}; endtime={spyBar.EndTime}");
}
if (_changes == SecurityChanges.None) return;
if (!Portfolio.HoldStock)
{
SetHoldings("SPY", 1);
Debug("Purchased SPY on " + Time.ToShortDateString());
}
_changes = SecurityChanges.None;
}
// this event fires whenever we have changes to our universe
public override void OnSecuritiesChanged(SecurityChanges changes)
{
_changes = changes;
if(changes.AddedSecurities.Count > 0){
Debug($"Added {changes.AddedSecurities.Count} securities at : {Time}");
}
foreach (var sec in changes.AddedSecurities)
{
Securities[sec.Symbol].SetDataNormalizationMode(DataNormalizationMode.Raw);
var symbolData = sec.Symbol;
var consolidator = (IDataConsolidator)new TradeBarConsolidator(TimeSpan.FromMinutes(1440));
consolidator.DataConsolidated += (sender, baseData) =>
{
var bar = (IBaseDataBar)baseData;
if(bar.Symbol.Value == "SPY"){
Debug($"CONSOLIDATOR {bar.Symbol}: open={bar.Open}; close={bar.Close}; endtime={bar.EndTime}");
}
};
SubscriptionManager.AddConsolidator(sec.Symbol, consolidator);
}
}
}
}