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 |
using System; using System.Collections; using System.Collections.Generic; using QuantConnect.Securities; using QuantConnect.Models; namespace QuantConnect { public class Bitcoin : TradeBar { //Set the defaults: public decimal VolumeBTC = 0; //public decimal VolumeUSD = 0; //public decimal WeightedPrice = 0; /// <summary> /// 1. DEFAULT CONSTRUCTOR: Custom data types need a default constructor. /// We search for a default constructor so please provide one here. It won't be used for data, just to generate the "Factory". /// </summary> public Bitcoin() { this.Symbol = "BTCUSD"; // this is the missing secret sauce // tradebar sets this to TradeBar which causes the data to get piped elsewhere this.DataType = MarketDataType.Base; } /// <summary> /// 2. RETURN THE STRING URL SOURCE LOCATION FOR YOUR DATA: /// This is a powerful and dynamic select source file method. If you have a large dataset, 10+mb we recommend you break it into smaller files. E.g. One zip per year. /// We can accept raw text or ZIP files. We read the file extension to determine if it is a zip file. /// </summary> /// <param name="config">Subscription data, symbol name, data type</param> /// <param name="date">Current date we're requesting. This allows you to break up the data source into daily files.</param> /// <param name="datafeed">Datafeed type: Backtesting or the Live data broker who will provide live data. You can specify a different source for live trading! </param> /// <returns>string URL end point.</returns> public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, DateTime date, bool isLiveMode) { if (isLiveMode) { throw new NotImplementedException("Define a REST endpoint for live data."); //return new SubscriptionDataSource("https://www.bitstamp.net/api/ticker/", SubscriptionTransportMedium.Rest); } return new SubscriptionDataSource("https://s3.us-east-2.amazonaws.com/fulldata.bitstampedited/bitstamp2018_edited.csv", SubscriptionTransportMedium.RemoteFile); } /// <summary> /// 3. READER METHOD: Read 1 line from data source and convert it into Object. /// Each line of the CSV File is presented in here. The backend downloads your file, loads it into memory and then line by line /// feeds it into your algorithm /// </summary> /// <param name="line">string line from the data source file submitted above</param> /// <param name="config">Subscription data, symbol name, data type</param> /// <param name="date">Current date we're requesting. This allows you to break up the data source into daily files.</param> /// <param name="datafeed">Datafeed type - Backtesting or LiveTrading</param> /// <returns>New Bitcoin Object which extends BaseData.</returns> public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLiveMode) { //New Bitcoin object Bitcoin coin = new Bitcoin(); try { string[] data = line.Split(','); coin.Time = DateTime.Parse(data[0]+" "+data[1], CultureInfo.InvariantCulture); coin.Open = Convert.ToDecimal(data[2], CultureInfo.InvariantCulture); coin.High = Convert.ToDecimal(data[3], CultureInfo.InvariantCulture); coin.Low = Convert.ToDecimal(data[4], CultureInfo.InvariantCulture); coin.Close = Convert.ToDecimal(data[5], CultureInfo.InvariantCulture); coin.VolumeBTC = Convert.ToDecimal(data[6], CultureInfo.InvariantCulture); coin.Symbol = config.Symbol; coin.Value = coin.Close; } catch { /* Do nothing, skip first title row */ } return coin; } } }
using System; using System.Linq; using QuantConnect.Data.Market; using QuantConnect.Data; using QuantConnect.Indicators; using System.Collections.Generic; using QuantConnect.Orders; using QuantConnect.Securities; using QuantConnect.Orders.Slippage; using QuantConnect.Brokerages; using QuantConnect.Data.Consolidators; namespace QuantConnect.Algorithm.CSharp { public class BubbleRider : QCAlgorithm { private string _Symbol = "BTCUSD"; private List<DateTime> _OrderClosingTimes = new List<DateTime>(); private TimeSpan _TSpan = TimeSpan.FromHours(4); private Resolution _Resolution = Resolution.Minute; private Security _Security; public override void Initialize() { _Security = AddData<Bitcoin>(_Symbol, _Resolution); SetStartDate(2014, 01, 15); SetEndDate(2014, 01, 16); SetCash(10000); TradeBarConsolidator _TBFourH = new TradeBarConsolidator( _TSpan); _TBFourH.DataConsolidated += TBF; SubscriptionManager.AddConsolidator(_Security.Symbol, _TBFourH); } public void OnData(Bitcoin data) { } private void TBF(Object o, TradeBar bar) { Log(String.Format("{0},{1},{2},{3},{4}", bar.Time, bar.Open, bar.High, bar.Low, bar.Close)); } } }