| Overall Statistics |
|
Total Trades 6 Average Win 0.64% Average Loss 0% Compounding Annual Return 140.731% Drawdown 0.900% Expectancy 0 Net Profit 1.862% Sharpe Ratio 8.798 Probabilistic Sharpe Ratio 86.999% Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0.103 Annual Variance 0.011 Information Ratio 8.798 Tracking Error 0.103 Treynor Ratio 0 Total Fees $6.00 Estimated Strategy Capacity $16000000.00 Lowest Capacity Asset ADSK R735QTJ8XC9X |
#region imports
from AlgorithmImports import *
#endregion
# How to make 10 minutes EMA's ?
EMA_5 = 5; EMA_13 = 13; EMA_34 = 34; EMA_50 = 50; SMA_60 = 60; RDV = 14;
STOCKS = ["TSLA", "MSFT", "ADSK", "UPST" ];
class TemMinutes_EMA(QCAlgorithm):
def Initialize(self):
self.EnableAutomaticIndicatorWarmUp = True
#Broker settings
self.SetCash(25000)
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin)
self.UniverseSettings.DataNormalizationMode = DataNormalizationMode.SplitAdjusted
#Backtest settings
self.SetStartDate(2022, 5, 25)
self.SetEndDate(2022, 6, 1)
# Resoultion
res_minute = Resolution.Minute
res_hour = Resolution.Hour
res_daily = Resolution.Daily
#EMA setup
self.ema_5 = {}
self.ema_13 = {}
# Equities
self.stocks = [self.AddEquity(ticker, res_minute).Symbol for ticker in STOCKS]
for sec in self.stocks:
self.ema_5[sec] = self.EMA(sec, EMA_5, res_hour)
self.ema_13[sec] = self.EMA(sec, EMA_13, res_hour)
def OnData(self, data):
if self.IsWarmingUp: return
for sec in self.stocks:
if not (self.ema_5[sec].IsReady) or not (self.ema_13[sec].IsReady): continue
if self.Portfolio[sec].Quantity == 0:
if self.ema_5[sec] > self.ema_13[sec]:
self.MarketOrder(sec, 4, True)
elif self.Portfolio[sec].Quantity > 0 :
if self.ema_5[sec] < self.ema_13[sec]:
self.Liquidate(sec, "EMA 5 - 13 crossover")