pep8 conversion on python algorithms #2 (#7933)

* pep8 conversion

* more

* Minor fix

* Fix related regression algorithm

---------

Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
This commit is contained in:
Louis Szeto
2024-04-18 04:36:53 +08:00
committed by GitHub
parent c2bea3c173
commit 784e497691
25 changed files with 466 additions and 466 deletions
@@ -14,46 +14,46 @@
from AlgorithmImports import *
class BasicTemplateIndexOptionsAlgorithm(QCAlgorithm):
def Initialize(self) -> None:
self.SetStartDate(2021, 1, 4)
self.SetEndDate(2021, 2, 1)
self.SetCash(1000000)
def initialize(self) -> None:
self.set_start_date(2021, 1, 4)
self.set_end_date(2021, 2, 1)
self.set_cash(1000000)
self.spx = self.AddIndex("SPX", Resolution.Minute).Symbol
spxOptions = self.AddIndexOption(self.spx, Resolution.Minute)
spxOptions.SetFilter(lambda x: x.CallsOnly())
self.spx = self.add_index("SPX", Resolution.MINUTE).symbol
spx_options = self.add_index_option(self.spx, Resolution.MINUTE)
spx_options.set_filter(lambda x: x.calls_only())
self.emaSlow = self.EMA(self.spx, 80)
self.emaFast = self.EMA(self.spx, 200)
self.ema_slow = self.ema(self.spx, 80)
self.ema_fast = self.ema(self.spx, 200)
def OnData(self, data: Slice) -> None:
if self.spx not in data.Bars or not self.emaSlow.IsReady:
def on_data(self, data: Slice) -> None:
if self.spx not in data.bars or not self.ema_slow.is_ready:
return
for chain in data.OptionChains.Values:
for contract in chain.Contracts.Values:
if self.Portfolio.Invested:
for chain in data.option_chains.values():
for contract in chain.contracts.values():
if self.portfolio.invested:
continue
if (self.emaFast > self.emaSlow and contract.Right == OptionRight.Call) or \
(self.emaFast < self.emaSlow and contract.Right == OptionRight.Put):
if (self.ema_fast > self.ema_slow and contract.right == OptionRight.CALL) or \
(self.ema_fast < self.ema_slow and contract.right == OptionRight.PUT):
self.Liquidate(self.InvertOption(contract.Symbol))
self.MarketOrder(contract.Symbol, 1)
self.liquidate(self.invert_option(contract.symbol))
self.market_order(contract.symbol, 1)
def OnEndOfAlgorithm(self) -> None:
if self.Portfolio[self.spx].TotalSaleVolume > 0:
def on_end_of_algorithm(self) -> None:
if self.portfolio[self.spx].total_sale_volume > 0:
raise Exception("Index is not tradable.")
if self.Portfolio.TotalSaleVolume == 0:
if self.portfolio.total_sale_volume == 0:
raise Exception("Trade volume should be greater than zero by the end of this algorithm")
def InvertOption(self, symbol: Symbol) -> Symbol:
return Symbol.CreateOption(
symbol.Underlying,
symbol.ID.Market,
symbol.ID.OptionStyle,
OptionRight.Put if symbol.ID.OptionRight == OptionRight.Call else OptionRight.Call,
symbol.ID.StrikePrice,
symbol.ID.Date
def invert_option(self, symbol: Symbol) -> Symbol:
return Symbol.create_option(
symbol.underlying,
symbol.id.market,
symbol.id.option_style,
OptionRight.PUT if symbol.id.option_right == OptionRight.CALL else OptionRight.CALL,
symbol.id.strike_price,
symbol.id.date
)