| 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.Algorithm.CSharp
{
public class ResistanceTransdimensionalSplitter : QCAlgorithm
{
private Dictionary<Symbol, Indicators.SimpleMovingAverage> _indicators = new Dictionary<Symbol, Indicators.SimpleMovingAverage>();
public override void Initialize()
{
SetStartDate(2018, 11, 5); //Set Start Date
SetCash(100000); //Set Strategy Cash
UniverseSettings.Resolution = Resolution.Daily;
// AddEquity("SPY", Resolution.Minute);
AddUniverse(coarse =>
{
var sortedByDollarVolume = coarse
.Where(x => x.HasFundamentalData)
.OrderByDescending(x => x.DollarVolume);
// take the top entries from our sorted collection
var selection = sortedByDollarVolume.Take(1000);
// we need to return only the symbol objects
return selection.Select(x => x.Symbol);
}, fine =>
{
var sortedByPeRatio = fine.OrderByDescending(x => x.ValuationRatios.PERatio);
// take the top entries from our sorted collection
var topFine = sortedByPeRatio.Take(5);
// we need to return only the symbol objects
return topFine.Select(x => x.Symbol);
});
}
/// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
/// Slice object keyed by symbol containing the stock data
public override void OnData(Slice data)
{
foreach(var key in data.Keys)
{
if (Time.Hour == 15 && Time.Minute == 50)
{
if (_indicators.ContainsKey(key))
{
// You can use the indicator here by indexing the dictionary
// i.e.
var indicator = _indicators[key];
if (indicator.IsReady)
{
Log($"{key} SMA current value: {indicator}");
};
}
}
}
}
// sort the data by daily dollar volume and take the top 'NumberOfSymbols'
public override void OnSecuritiesChanged(SecurityChanges changes)
{
// Loop through securities added to the universe
foreach (var security in changes.AddedSecurities)
{
// Create SMA indicator (or other indicator, depending on what you want in the algorithm)
var indicator = SMA(security.Symbol, 14, Resolution.Daily);
// Warm-up the indicator using a historical data call
var history = History(security.Symbol, 14, Resolution.Daily);
foreach (var bar in history)
{
indicator.Update(bar.EndTime, bar.Close);
};
// Add the indicator to the dictionary, keyed by the security's Symbol
_indicators.Add(security.Symbol, indicator);
Log($"Indicator created for {security.Symbol}");
}
// Loop through securities removed from the universe
foreach (var security in changes.RemovedSecurities)
{
// If the Symbol has an indicator
if (_indicators.ContainsKey(security.Symbol))
{
// Remove the Symbol's indicator from the dictionary
_indicators.Remove(security.Symbol);
}
Log($"Indicator deleted for {security.Symbol}");
}
}
}
}