Strategy Examples:
For this demo of the strategy pattern, we'll take the role of an up-and-coming trading firm looking to implement some algorithmic trading. To us, it's very important that we tune our trading strategy to the current market conditions in order to make the biggest profit in bull markets, while losing as little money as possible during bear markets.
# Types of trading strategies:
class RiskyTradingStrategy(object):
def MakeTrades(self):
print("Making risky trades!")
class ModerateTradingStrategy(object):
def MakeTrades(self):
print("Making moderate trades.")
class ConservativeTradingStrategy(object):
def MakeTrades(self):
print("Making safe trades.")
# Not Supported below Python 3.4!
from enum import Enum
class TradeConditions(Enum):
BearMarket = 0,
BullMarket = 1,
RecoveringMarket = 2
# The trading firm which changes strategies based on market conditions:
class TradingFirm(object):
def __init__(self):
self.riskyStrategy = RiskyTradingStrategy()
self.moderateStrategy = ModerateTradingStrategy()
self.safeStrategy = ConservativeTradingStrategy()
self.currentStrategy = self.moderateStrategy
def MarketUpdte(self, tradeConditions):
# Select the best strategy for the market conditions:
if tradeConditions == TradeConditions.BearMarket:
self.currentStrategy = self.safeStrategy
elif tradeConditions == TradeConditions.BullMarket:
self.currentStrategy = self.riskyStrategy
elif tradeConditions == TradeConditions.RecoveringMarket:
self.currentStrategy = self.moderateStrategy
# Make trades with that strategy:
self.currentStrategy.MakeTrades()
Find any bugs in the code? let us know!