| 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 Probabilistic 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.401 Tracking Error 0.09 Treynor Ratio 0 Total Fees ₹0.00 Estimated Strategy Capacity ₹0 Lowest Capacity Asset |
from AlgorithmImports import *
from datetime import timedelta, datetime
class Nifty(PythonData):
'''NIFTY Custom Data Class'''
def GetSource(self, config, date, isLiveMode):
# # Daily data with one shift down
# return SubscriptionDataSource("https://docs.google.com/spreadsheets/d/e/2PACX-1vQlc_VXbDlxnimhv2g1XJ0NMNNn7nhC-urAwN9hkuMil6I30ER0REJdlCspvLSAuWJ4Rm5YfazFOIZ5/pub?gid=158304737&single=true&output=csv", SubscriptionTransportMedium.RemoteFile)
# # Daily data
# return SubscriptionDataSource("https://docs.google.com/spreadsheets/d/e/2PACX-1vQbXiiCjnSADlGe1AqvQ7PDfmOWoHZVh2U9frGAwHcqnemVcVTxOInxD91QHCl_lQTMNHQgISjH9vqJ/pub?gid=158304737&single=true&output=csv", SubscriptionTransportMedium.RemoteFile)
# Minute data of BAJFINANCE stock incorrect data
return SubscriptionDataSource("https://docs.google.com/spreadsheets/d/e/2PACX-1vTQS1Nivrmjf7WKZjW8qp2y1kSysdwAcCAX7NnfEEjbQbgYDdfWycoHOFn01RPXG0atykDBJXFmIjQ5/pub?gid=694106200&single=true&output=csv", SubscriptionTransportMedium.RemoteFile)
# Minute data of BAJFINANCE stock correct data
# return SubscriptionDataSource("https://docs.google.com/spreadsheets/d/e/2PACX-1vTMuqf8BArhREgnWyUPkCiPNZkhgO3ooDUtXRki7Q4FdwDMDZc7lnxKLJe2prrdgWuHH9sN5oYKIrhy/pub?gid=762702799&single=true&output=csv", SubscriptionTransportMedium.RemoteFile)
# Daily data of BAJFINANCE stock
# return SubscriptionDataSource("https://docs.google.com/spreadsheets/d/e/2PACX-1vQPfRm1MsaFwsHCe3JlvbFoMDVBlJucaEHClGeNpQ0v6D1QRqQUKewhTYmSP7uxFBhYuntbFbLz4q6U/pub?gid=1447268042&single=true&output=csv", SubscriptionTransportMedium.RemoteFile)
# return SubscriptionDataSource("https://docs.google.com/spreadsheets/d/e/2PACX-1vSxvw0rd-Kg4ilZOUOYYOwXnXH_lLitQTIuCiVvvDS64Yf_SxERd66fjQ_rjGiWMsRfQVLl0xG9GI7J/pub?gid=59450821&single=true&output=csv", SubscriptionTransportMedium.RemoteFile)
# return SubscriptionDataSource("https://www.dropbox.com/s/rsmg44jr6wexn2h/CNXNIFTY.csv?dl=1", SubscriptionTransportMedium.RemoteFile)
def Reader(self, config, line, date, isLiveMode):
if not (line.strip() and line[0].isdigit()): return None
# New Nifty object
index = Nifty()
index.Symbol = config.Symbol
try:
# Example File Format:
# Date, Open High Low Close Volume Turnover
# 2011-09-13 7792.9 7799.9 7722.65 7748.7 116534670 6107.78
data = line.split(',')
# index.Time = datetime.strptime(data[0], "%Y-%m-%d")
index.Time = datetime.strptime(data[0], "%Y-%m-%d %H:%M:%S")
index.EndTime = index.Time + timedelta(minutes=1)
index.Value = data[4]
index["Open"] = float(data[1])
index["High"] = float(data[2])
index["Low"] = float(data[3])
index["Close"] = float(data[4])
except ValueError:
# Do nothing
return None
return index
class Tryindicatorwithconsolidator(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2021,8,15)
self.SetEndDate(2021,9,24)
self.SetAccountCurrency("INR")
self.SetTimeZone(TimeZones.Kolkata)
self.SetCash(1000000000)
self.btc = self.AddEquity("BAJFINANCE", Resolution.Minute, Market.India).Symbol
# self.btc = self.AddData(Nifty, "BAJFINANCE", Resolution.Minute).Symbol
self.SetBrokerageModel(BrokerageName.Zerodha, AccountType.Cash)
self.Consolidate("BAJFINANCE", timedelta(minutes=15), self.FifteenMinuteBarHandler)
self.SetWarmUp(3*24*60, Resolution.Minute)
# self.aroon = AroonOscillator(25, 25)
self.smafast = SimpleMovingAverage(1*24*60//15)
self.smaslow = SimpleMovingAverage(3*24*60//15)
fifteenMinuteConsolidator = self.ResolveConsolidator("BAJFINANCE", timedelta(minutes=15))
self.SubscriptionManager.AddConsolidator("BAJFINANCE", fifteenMinuteConsolidator)
# self.RegisterIndicator("BAJFINANCE", self.aroon, fifteenMinuteConsolidator)
self.RegisterIndicator("BAJFINANCE", self.smafast, fifteenMinuteConsolidator)
self.RegisterIndicator("BAJFINANCE", self.smaslow, fifteenMinuteConsolidator)
def FifteenMinuteBarHandler(self, consolidated):
if self.IsWarmingUp: return
# if not self.aroon.IsReady: return
if not self.smafast.IsReady or not self.smaslow.IsReady: return
price = self.Securities["BAJFINANCE"].Price
self.Plot("Price Plot", "Price", price)
self.Plot("Price Plot", "smafast", self.smafast.Current.Value)
self.Plot("Price Plot", "smaslow", self.smaslow.Current.Value)
# self.Plot("AROON", "aroonup", self.aroon.AroonUp.Current.Value)
# self.Plot("AROON", "aroondown", self.aroon.AroonDown.Current.Value)
# class TestAlgorithm(QCAlgorithm):
# def Initialize(self):
# self.SetStartDate(2021,8,15)
# self.SetEndDate(2021,9,24)
# # self.SetCash(100000000000)
# self.btc = self.AddEquity("AAPL", Resolution.Minute).Symbol
# # self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash)
# self.Consolidate("AAPL", timedelta(minutes=15), self.FifteenMinuteBarHandler)
# self.SetWarmUp(3*24*60, Resolution.Minute)
# self.aroon = AroonOscillator(25, 25)
# self.smafast = SimpleMovingAverage(1*24*60//15)
# self.smaslow = SimpleMovingAverage(3*24*60//15)
# fifteenMinuteConsolidator = TradeBarConsolidator(timedelta(minutes=15))
# self.SubscriptionManager.AddConsolidator("AAPL", fifteenMinuteConsolidator)
# self.RegisterIndicator("AAPL", self.aroon, fifteenMinuteConsolidator)
# self.RegisterIndicator("AAPL", self.smafast, fifteenMinuteConsolidator)
# self.RegisterIndicator("AAPL", self.smaslow, fifteenMinuteConsolidator)
# def FifteenMinuteBarHandler(self, consolidated):
# if self.IsWarmingUp: return
# if not self.aroon.IsReady: return
# if not self.smafast.IsReady or not self.smaslow.IsReady: return
# price = self.Securities["AAPL"].Price
# self.Plot("Price Plot", "Price", price)
# self.Plot("Price Plot", "smafast", self.smafast.Current.Value)
# self.Plot("Price Plot", "smaslow", self.smaslow.Current.Value)
# self.Plot("AROON", "aroonup", self.aroon.AroonUp.Current.Value)
# self.Plot("AROON", "aroondown", self.aroon.AroonDown.Current.Value)