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 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using QuantConnect.Data.Market; using QuantConnect.Orders; using QuantConnect.Orders.Fees; using QuantConnect.Orders.Fills; using QuantConnect.Orders.Slippage; using QuantConnect.Securities; using QuantConnect.Securities.Option; namespace QuantConnect.Algorithm.CSharp { public class AutomatonTrade : QCAlgorithm { // Universe symbols. private static readonly string[] SYMBOLS = { "TSLA" }; // Historical storage. private Dictionary<string, RollingWindow<decimal>> dailyCloses = new Dictionary<string, RollingWindow<decimal>>(); public override void Initialize() { // Initialize. this.SetStartDate(2020, 9, 1); this.SetEndDate(2020, 9, 2); this.SetCash(10000); this.SetTimeZone(TimeZones.NewYork); this.SetWarmUp(50, Resolution.Daily); // Setup brokerage. this.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin); // Add everything. foreach (string symbol in AutomatonTrade.SYMBOLS) { // Setup the equity and options. Equity equity = this.AddEquity(symbol, Resolution.Minute); equity.SetDataNormalizationMode(DataNormalizationMode.Raw); Option option = this.AddOption(symbol, Resolution.Minute); option.PriceModel = OptionPriceModels.CrankNicolsonFD(); option.SetFilter(u => u.WeeklysOnly().Strikes(-5, 1).Expiration(TimeSpan.Zero, TimeSpan.FromDays(14))); // Consolidator. var dailyConsolidator = TradeBarConsolidator.FromResolution(Resolution.Daily); dailyConsolidator.DataConsolidated += this.OnDailyConsolidatedData; this.SubscriptionManager.AddConsolidator(symbol, dailyConsolidator); } } private void OnDailyConsolidatedData(object sender, TradeBar bar) { // Store 3 points of daily changes, current price - previous. Symbol symbol = bar.Symbol; decimal close = bar.Close; if (!this.dailyCloses.ContainsKey(symbol)) { this.dailyCloses.Add(symbol, new RollingWindow<decimal>(4)); } this.dailyCloses[symbol].Add(close); } /// 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) { // Splits can occur during warm-up and must be processed. foreach (var splitKvp in data.Splits) { Symbol symbol = splitKvp.Key; Split split = splitKvp.Value; this.Debug("SPLIT DETECTED (" + Math.Round(split.SplitFactor, 4) + "), wiping historical data..."); this.dailyCloses[symbol] = new RollingWindow<decimal>(4); } // Ignore warm-up data. if (this.IsWarmingUp) { return; } var differences = this.dailyCloses["TSLA"].Zip(this.dailyCloses["TSLA"].Skip(1), (x, y) => x - y).ToArray(); this.Debug(string.Join(",", differences)); //IEnumerable<TradeBar> history = this.History(underlyingSymbol, 4, Resolution.Daily); } } }