def set_datalines(self): # Override stat line: self.stat_asset = self.data.spread = SpreadConstructor() # Spy on reward behaviour: self.reward_tracker = CumSumReward() self.data.std1 = btind.StdDev(self.datas[0], period=self.p.time_dim, safepow=True) self.data.std1.plotinfo.plot = False self.data.std2 = btind.StdDev(self.datas[1], period=self.p.time_dim, safepow=True) self.data.std2.plotinfo.plot = False self.data.features1 = [ btind.EMA(self.datas[0], period=period) for period in self.p.features_parameters ] self.data.features2 = [ btind.EMA(self.datas[1], period=period) for period in self.p.features_parameters ] initial_time_period = np.asarray( self.p.features_parameters).max() + self.p.time_dim self.data.dim_sma = btind.SimpleMovingAverage( self.datas[0], period=initial_time_period) self.data.dim_sma.plotinfo.plot = False
def __init__(self): first, second = self.datas[0], self.datas[1] beta = btind.SMA(first, period=self.p.period) / btind.SMA( second, period=self.p.period) spread = first - (beta * second) self.lines.signal = (spread - btind.SMA(spread, period=self.p.period) ) / btind.StdDev(spread, period=self.p.period)
def set_datalines(self): self.data.spread = btind.SimpleMovingAverage(self.datas[0] - self.datas[1], period=1) self.data.spread.plotinfo.subplot = True self.data.spread.plotinfo.plotabove = True self.data.spread.plotinfo.plotname = list(self.p.asset_names)[0] # Override stat line: # self.stat_asset = btind.SimpleMovingAverage((self.datas[0] + self.datas[1]) / 2, period=1) # self.stat_asset.plotinfo.plot = False self.stat_asset = self.data.spread self.data.std = btind.StdDev(self.data.spread, period=self.p.time_dim, safepow=True) self.data.std.plotinfo.plot = False self.data.features = [ # btind.SimpleMovingAverage(self.data.spread, period=period) for period in self.p.features_parameters btind.EMA(self.data.spread, period=period) for period in self.p.features_parameters ] initial_time_period = np.asarray(self.p.features_parameters).max() + self.p.time_dim self.data.dim_sma = btind.SimpleMovingAverage( self.datas[0], period=initial_time_period ) self.data.dim_sma.plotinfo.plot = False
def set_datalines(self): self.data.high = self.data.low = self.data.close = self.data.open self.data.std = btind.StdDev(self.data.open, period=self.p.time_dim, safepow=True) self.data.std.plotinfo.plot = False self.data.features = [ btind.SimpleMovingAverage(self.data.open, period=period) for period in self.p.features_parameters ] initial_time_period = np.asarray(self.p.features_parameters).max() + self.p.time_dim self.data.dim_sma = btind.SimpleMovingAverage( self.datas[0], period=initial_time_period ) self.data.dim_sma.plotinfo.plot = False
def __init__(self): super().__init__() # self.ema_short = btind.MovAv.EMA(self.data.close, period=self.p.ema_short_period) self.atr = btind.ATR(self.data, period=self.p.atr_period) self.stddev = btind.StdDev(self.data.close, period=self.p.stddev_period) self.highest = btind.Highest(self.data.high, period=self.p.squeeze_period, plot=False) self.lowest = btind.Lowest(self.data.low, period=self.p.squeeze_period, plot=False) self.sma = btind.MovAv.SMA(self.data.close, period=self.p.squeeze_period, plot=False) self.mean = ((self.highest + self.lowest) / 2.0 + self.sma) / 2.0 self.squeeze = btind.MovAv.SMA( (self.data.close - self.mean) / self.data.close, period=self.p.squeeze_period) # self.macd_fast = btind.MovAv.EMA(self.data.close, period=self.p.macd_fast_period, plot=False) # self.macd_slow = btind.MovAv.EMA(self.data.close, period=self.p.macd_slow_period, plot=False) # self.macd = self.macd_fast - self.macd_slow # self.macd_signal = btind.MovAv.EMA(self.macd, period=self.p.macd_signal_period, plot=False) # self.macd_histogram = self.macd - self.macd_signal self.macd = btind.MACDHisto(self.data.close, period_me1=self.p.macd_fast_period, period_me2=self.p.macd_slow_period, period_signal=self.p.macd_signal_period) self.macd_ema = btind.MovAv.EMA(self.data.close, period=self.p.macd_ema_period) self.stage = self.Start self.main_order = None self.stop_order = None self.limit_order = None self.exit_order = None self.main_order_price = None self.target1_price = None self.size = None self.symbol_parameter = SymbolParameter(self.p.symbol, self.broker.get_cash(), self.p.max_loss_percent)