| 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 Probabilistic 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 -10.684 Tracking Error 0.136 Treynor Ratio 0 Total Fees $0.00 |
using System;
using System.Collections.Concurrent;
using System.Linq;
using QuantConnect.Data.Market;
using QuantConnect.Data.UniverseSelection;
using QuantConnect.Indicators;
namespace QuantConnect.Algorithm.CSharp
{
public class yunotwork : QCAlgorithm
{
public override void Initialize()
{
UniverseSettings.Resolution = Resolution.Minute; // doesn't matter, still gives wrong current price :(
UniverseSettings.ExtendedMarketHours = false; // doesn't matter
//UniverseSettings.FillForward = true; // doesn't matter
UniverseSettings.DataNormalizationMode = DataNormalizationMode.Raw; //can only compare x.Price to History request with Raw data
SetStartDate(2020, 6, 2);
SetEndDate(2020, 6, 4);
SetCash(100000);
AddUniverse(CoarseFilterFunction, FineSelectionFunction);
}
IEnumerable<Symbol> CoarseFilterFunction(IEnumerable<CoarseFundamental> coarse) {
var _symbols = coarse
.Where(x => x.HasFundamentalData)
.Where(x => x.DollarVolume > 800000)
.Where(x => x.Price > 2)
.Where(x =>
{
var history = History(x.Symbol, 1, Resolution.Daily);
var close = history.FirstOrDefault()?.Close;
// If history is empty, close will be null. In this case, we will not consider the security
if (close == null) { return false; }
if (x.Symbol.Value == "GNUS") {
Debug("=========");
Debug($"'Current price': {x.Price.ToString()}");
Debug($"'1dayago price': {close.ToString()}");
Debug("---------");
}
return (x.Price> (decimal)1.3 * close);
})
.Select(x => x.Symbol).Take(5);
return _symbols;
}
IEnumerable<Symbol> FineSelectionFunction(IEnumerable<FineFundamental> fine) {
var _symbols = fine
.Where(x => x.EarningReports.BasicAverageShares.ThreeMonths > 0)
.Where(x =>
{
var averageShares = x.EarningReports.BasicAverageShares.ThreeMonths;
var history = History(x.Symbol, 1, Resolution.Daily);
var close = history.FirstOrDefault()?.Close;
if (close == null) { return false; }
var marketcap = averageShares * close;
// MarketCap > 25m
return (marketcap > 25000000);
})
.Select(x => x.Symbol).Take(5);
return _symbols;
}
}
}