Overall Statistics |
Total Trades 13 Average Win 0.02% Average Loss -0.04% Compounding Annual Return -4.143% Drawdown 0.300% Expectancy -0.482 Net Profit -0.035% Sharpe Ratio -6.909 Probabilistic Sharpe Ratio 0% Loss Rate 67% Win Rate 33% Profit-Loss Ratio 0.55 Alpha -0.058 Beta 0.009 Annual Standard Deviation 0.01 Annual Variance 0 Information Ratio 2.3 Tracking Error 0.405 Treynor Ratio -7.269 Total Fees $34.97 Estimated Strategy Capacity $1000000.00 Lowest Capacity Asset XRPUSD E3 |
class SimpleEMACrossover(QCAlgorithm): def Initialize(self): self.SetStartDate(2021, 4, 20) self.SetEndDate(2021, 4, 22) self.SetCash(100000) self.SetTimeZone("UTC") self.SetBrokerageModel(BrokerageName.Bitfinex, AccountType.Margin) security = self.AddCrypto('XRPUSD', Resolution.Minute) security.BuyingPowerModel = SecurityMarginModel(3.3) self.symbol = security.Symbol self.defaultQuantity = 1000 self.periodFast = 480 self.periodSlow = 1920 self.emaFast = self.EMA(self.symbol, self.periodFast, Resolution.Minute) self.emaSlow = self.EMA(self.symbol, self.periodSlow, Resolution.Minute) self.RegisterIndicator(self.symbol, self.emaFast, Resolution.Minute) self.RegisterIndicator(self.symbol, self.emaSlow, Resolution.Minute) self.SetWarmUp(2000, Resolution.Minute) def OnData(self, data): self.Plot("Data Chart", "Asset Price", self.Securities["XRPUSD"].Close) self.Plot("EMA", "Slow", self.emaSlow.Current.Value) self.Plot("EMA", "Fast", self.emaFast.Current.Value) if not self.emaSlow.IsReady: return if self.Portfolio[self.symbol].IsLong: if self.emaFast.Current.Value < self.emaSlow.Current.Value: self.Liquidate(self.symbol) self.MarketOrder(self.symbol, -self.defaultQuantity) elif self.Portfolio[self.symbol].IsShort: if self.emaFast.Current.Value > self.emaSlow.Current.Value: self.Liquidate(self.symbol) self.MarketOrder(self.symbol, self.defaultQuantity) else: if self.emaFast.Current.Value > self.emaSlow.Current.Value: self.MarketOrder(self.symbol, self.defaultQuantity) if self.emaFast.Current.Value < self.emaSlow.Current.Value: self.MarketOrder(self.symbol, -self.defaultQuantity) def OnOrderEvent(self, orderEvent): if orderEvent.Status == OrderStatus.Filled: self.Log(f'{orderEvent}')