Overall Statistics |
Total Trades 2684 Average Win 0% Average Loss 0% Compounding Annual Return 11.161% Drawdown 0.400% Expectancy 0 Net Profit 0.087% Sharpe Ratio 3.882 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.168 Beta 0.177 Annual Standard Deviation 0.02 Annual Variance 0 Information Ratio 8.835 Tracking Error 0.068 Treynor Ratio 0.43 Total Fees $49885.41 |
using System; using System.Collections.Generic; using System.Linq; using QuantConnect.Data; using QuantConnect.Data.Consolidators; using QuantConnect.Data.Market; using QuantConnect.Indicators; using QuantConnect.Indicators; using QuantConnect.Orders; using QuantConnect.Algorithm.Framework.Alphas; using QuantConnect.Algorithm.Framework.Execution; using QuantConnect.Algorithm.Framework.Portfolio; using QuantConnect.Algorithm.Framework.Selection; namespace QuantConnect { public partial class Base : QCAlgorithm { public QCAlgorithm algorithm {get; set;} public static TimeSpan BP1m = TimeSpan.FromMinutes(1); public readonly int SMAP = 6; public static int RLLWS = 1440; public static Symbol _BTCUSD; public static Dictionary<string, SY1D> D1D = new Dictionary<string, SY1D>(); public override void Initialize() { SetStartDate(2020, 7, 11); SetEndDate(DateTime.Now - TimeSpan.FromDays(1)); SetAccountCurrency("USD"); SetCash("USD", 25000000); // SetCash("BTC", 1m); //SetBrokerageModel(BrokerageName.FxcmBrokerage); SetBrokerageModel(BrokerageName.AlphaStreams); _BTCUSD = "BTCUSD"; var BTCUSD_crypto = AddCrypto("BTCUSD", Resolution.Minute, Market.Bitfinex); D1D.Add(_BTCUSD, new SY1D(BTCUSD_crypto.Symbol, BP1m, RLLWS)); foreach (var kvp in D1D) { var SY1D = kvp.Value; var consolidator1D_Q = (IDataConsolidator)new QuoteBarConsolidator(BP1m); consolidator1D_Q.DataConsolidated += (sender, baseData) => { var bar = (QuoteBar)baseData; SY1D.BQ.Add(bar); }; SubscriptionManager.AddConsolidator(SY1D.Symbol, consolidator1D_Q); } AddAlpha(new Alpha_BTCUSD(_BTCUSD)); } public override void OnOrderEvent(OrderEvent orderEvent) { Debug(Time + " " + orderEvent); } public void OnInsightsGeneratedVerifier(IAlgorithm algorithm, GeneratedInsightsCollection insightsCollection) { if (insightsCollection.Insights.Count(insight => insight.Symbol.Value.Equals("BTCUSD")) != 1) { throw new Exception("Unexpected insights were emitted"); } } } public class SY1D { public readonly Symbol Symbol; public readonly RollingWindow<QuoteBar> BQ; public readonly TimeSpan BP1m; public SimpleMovingAverage SMA; public SY1D(Symbol symbol, TimeSpan bP1m, int RLLWS) { Symbol = symbol; BP1m = bP1m; BQ = new RollingWindow<QuoteBar>(RLLWS); } public bool BQIsReady { get {return BQ.IsReady;} } public bool WasJustUpdated(DateTime current) { var compare = DateTime.Compare(current, BQ[0].EndTime); return BQ.Count > 0 && compare == 0; } } }
namespace QuantConnect { public partial class Base { public class Alpha_BTCUSD : AlphaModel { private readonly Symbol _symbol; public Alpha_BTCUSD(Symbol symbol) { _symbol = symbol; } public override IEnumerable<Insight> Update(QCAlgorithm algorithm, Slice data) { foreach (var SY1D in D1D.Values) { if ((SY1D.BQIsReady) && SY1D.WasJustUpdated(algorithm.UtcTime)) { algorithm.Debug("dgssdff" + SY1D.Symbol); if (SY1D.Symbol.Equals("BTCUSD")) { var prices_ASK_Open = SY1D.BQ.Select(x => x.Ask.Open).ToList(); algorithm.Debug("dgssdff" + prices_ASK_Open[0]); yield return Insight.Price(SY1D.Symbol, Resolution.Daily, 7, InsightDirection.Down); algorithm.MarketOrder(SY1D.Symbol, 1, false, "BTCUSD_OCO1_Entry_TP1"); yield break; } } } } } } }