| Overall Statistics |
|
Total Trades 115 Average Win 1.53% Average Loss -0.91% Compounding Annual Return 47.488% Drawdown 13.900% Expectancy 0.178 Net Profit 20.431% Sharpe Ratio 1.751 Probabilistic Sharpe Ratio 66.445% Loss Rate 56% Win Rate 44% Profit-Loss Ratio 1.69 Alpha 0.293 Beta -0.178 Annual Standard Deviation 0.19 Annual Variance 0.036 Information Ratio 1.785 Tracking Error 0.311 Treynor Ratio -1.867 Total Fees $3153.16 Estimated Strategy Capacity $35000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X |
# Trading Consolidated HeikinAshi 6-24
from AlgorithmImports import *
BAR = 120; STOCK = "SPY"
class ConsolidatedHeikinAshi(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 1, 1)
self.SetEndDate(2022, 6, 24)
self.SetCash(1000000)
res = Resolution.Minute
self.symbol = self.AddEquity(STOCK, res).Symbol
consolidator = TradeBarConsolidator(timedelta(minutes = BAR))
self.Consolidate(self.symbol, timedelta(minutes = BAR), self.BarHandler)
self.ha = HeikinAshi()
self.RegisterIndicator(self.symbol, self.ha, consolidator)
self.SetWarmUp(BAR, res)
def BarHandler(self, consolidated):
if self.IsWarmingUp or not self.ha.IsReady: return
HA_O = self.ha.Open.Current.Value
HA_H = self.ha.High.Current.Value
HA_L = self.ha.Low.Current.Value
HA_C = self.ha.Close.Current.Value
self.Plot(self.symbol, "HA_O", HA_O)
self.Plot(self.symbol, "HA_H", HA_H)
self.Plot(self.symbol, "HA_L", HA_L)
self.Plot(self.symbol, "HA_C", HA_C)
if not self.Portfolio[self.symbol].IsLong:
if HA_C > HA_O:
self.SetHoldings(self.symbol, 1, True, "Long Signal")
elif not self.Portfolio[self.symbol].IsShort:
if HA_C < HA_O:
self.SetHoldings(self.symbol, -1, True, "Short Signal")