Overall Statistics |
Total Trades 3691 Average Win 3.43% Average Loss -1.31% Compounding Annual Return 105186.455% Drawdown 84.700% Expectancy 0.414 Net Profit 349879.235% Sharpe Ratio 3.827 Loss Rate 61% Win Rate 39% Profit-Loss Ratio 2.61 Alpha -1.94 Beta 571.427 Annual Standard Deviation 1.549 Annual Variance 2.398 Information Ratio 3.819 Tracking Error 1.549 Treynor Ratio 0.01 Total Fees $139302.26 |
//Copyright HardingSoftware.com, 2018. //Granted to the public domain. //Use at your own risk. namespace QuantConnect.Algorithm.CSharp { public class Coins : QCAlgorithm { string tickersString ="BTCUSD,ETHUSD,LTCUSD"; Resolution resolution=Resolution.Hour; List<StockData> stockDatas = new List<StockData>(); int rsiPeriod=24; string stockHeld=""; public override void Initialize() { SetStartDate(2017, 1, 1); SetEndDate(DateTime.Now); SetCash(100); string[] tickers = tickersString.Split(new string[1] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (string ticker in tickers) { Symbol symbol = QuantConnect.Symbol.Create(ticker, SecurityType.Crypto, Market.GDAX); AddCrypto(symbol, resolution); StockData stockData=new StockData(); stockData.Ticker=ticker; stockData.Rsi=RSI(ticker,rsiPeriod,MovingAverageType.Exponential,resolution); stockDatas.Add(stockData); } foreach (Security s in Securities.Values) { s.FeeModel=new CustomFeeModel(); } } public override void OnData(Slice data) { foreach (StockData stockData in stockDatas) { stockData.Fitness=stockData.Rsi; } var q1 = from x in stockDatas orderby x.Fitness descending select x; List<StockData> q2=q1.ToList(); if (q2.Count>0) { StockData selectedStockData=q2.First(); if (selectedStockData.Ticker != stockHeld) { Liquidate(stockHeld); SetHoldings(selectedStockData.Ticker, 1.0); stockHeld=selectedStockData.Ticker; } } } class StockData { public string Ticker; public RelativeStrengthIndex Rsi; public decimal Fitness; } public class CustomFeeModel : IFeeModel { public decimal GetOrderFee(Security security, Order order) { var fee = order.AbsoluteQuantity*0.001m*security.Price; return fee; } } } }