Python algorithms typing cleanup [part 1] (#8716)

* Cleanup algorithms python typing

* Minor tweaks

* Improve indicator extensions

---------

Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
This commit is contained in:
Jhonathan Abreu
2025-04-23 13:20:38 -04:00
committed by GitHub
parent e4ff27a738
commit cf8c5b854a
17 changed files with 124 additions and 148 deletions
@@ -30,31 +30,31 @@ class CustomDataIndicatorExtensionsAlgorithm(QCAlgorithm):
# Initialize the data and resolution you require for your strategy
def initialize(self):
self.set_start_date(2014,1,1)
self.set_end_date(2018,1,1)
self.set_start_date(2014,1,1)
self.set_end_date(2018,1,1)
self.set_cash(25000)
self.ibm = 'IBM'
self.spy = 'SPY'
# Define the symbol and "type" of our generic data
self.add_data(CustomDataEquity, self.ibm, Resolution.DAILY)
self.add_data(CustomDataEquity, self.spy, Resolution.DAILY)
# Set up default Indicators, these are just 'identities' of the closing price
self.ibm_sma = self.sma(self.ibm, 1, Resolution.DAILY)
self.spy_sma = self.sma(self.spy, 1, Resolution.DAILY)
# This will create a new indicator whose value is sma_s_p_y / sma_i_b_m
self.ratio = IndicatorExtensions.over(self.spy_sma, self.ibm_sma)
# Plot indicators each time they update using the PlotIndicator function
self.plot_indicator("Ratio", self.ratio)
self.plot_indicator("Data", self.ibm_sma, self.spy_sma)
# OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
def on_data(self, data):
# Wait for all indicators to fully initialize
if not (self.ibm_sma.is_ready and self.spy_sma.is_ready and self.ratio.is_ready): return
if not self.portfolio.invested and self.ratio.current.value > 1: