if len(self.lmacd) >= self.sizemamacd: mamacd = sum( self.lmacd[-self.sizemamacd:]) / self.sizemamacd if macd > mamacd: if self.state == 0: if self.signal == -1: orders.append(Order(event.instrument, 100, 0)) orders.append(Order(event.instrument, 100, 0)) if self.signal == 0: orders.append(Order(event.instrument, 100, 0)) self.signal = 1 self.state = 1 elif macd < mamacd: if self.state == 1: if self.signal == 1: orders.append(Order(event.instrument, -100, 0)) orders.append(Order(event.instrument, -100, 0)) if self.signal == 0: orders.append(Order(event.instrument, -100, 0)) self.signal = -1 self.state = 0 del self.prices[0] return orders files = os.listdir('./PETR4-2018-08') for file in files: print(evaluateTick(MACDRSI(), {'PETR4': f'./PETR4-2018-08/{file}'})) print(evaluateTick(MACD(), {'PETR4': f'./PETR4-2018-08/{file}'}))
self.prices.append(price) orders = [] if len(self.prices) == self.size: std = np.array(self.prices).std() mavg = sum(self.prices) / self.size if price >= mavg + std: if self.signal == 1: orders.append(Order(event.instrument, -100, 0)) orders.append(Order(event.instrument, -100, 0)) if self.signal == 0: orders.append(Order(event.instrument, -100, 0)) self.signal = -1 elif price <= mavg - std: if self.signal == -1: orders.append(Order(event.instrument, 200, 0)) if self.signal == 0: orders.append(Order(event.instrument, 100, 0)) self.signal = 1 del self.prices[0] return orders return [] #print(evaluateTick(BuynHoldTick(), {'PETR4': '2018-03-07.csv'})) #print(evaluateTick(MAVGTick(), {'PETR4': '2018-03-07.csv'})) #print(evaluateTick(CrazyGambler(), {'PETR4': '2018-03-07.csv'})) print(evaluateTick(MonkeyTrade(), {'PETR4': '2018-03-07.csv'}))
if tinyrollingmean > upperband: prob = 100 elif tinyrollingmean < lowerband: prob = 0 else: prob = ((tinyrollingmean - lowerband)/(upperband - lowerband))*100 if ((10 > prob)): if (prob == 0): orders.append(Order(event.instrument, 1, 0)) orders.append(Order(event.instrument, 1, 0)) if ((70 < prob)): if (prob == 1): orders.append(Order(event.instrument, -1, 0)) orders.append(Order(event.instrument, -1, 0)) if len(orders) > 0: for order in orders: print(order.print()) return orders def fill(self, id, instrument, price, quantity, status): super().fill(id, instrument, price, quantity, status) self.side += quantity print(self.position) print(evaluateTick(BrainyApeTrade(), {'PETR4': '2018-03-07.csv'}))
if event.type == Event.TRADE: price = event.price self.prices.append(price) orders = [] if len(self.prices) == self.size: std = np.array(self.prices).std() mavg = sum(self.prices) / self.size if price >= mavg + std: if self.signal == 1: orders.append(Order(event.instrument, -100, 0)) orders.append(Order(event.instrument, -100, 0)) if self.signal == 0: orders.append(Order(event.instrument, -100, 0)) self.signal = -1 elif price <= mavg - std: if self.signal == -1: orders.append(Order(event.instrument, 200, 0)) if self.signal == 0: orders.append(Order(event.instrument, 100, 0)) self.signal = 1 del self.prices[0] return orders return [] print(evaluateTick(BuynHoldTick(), {'PETR4': '2018-03-07.csv'})) print(evaluateTick(MAVGTick(), {'PETR4': '2018-03-07.csv'}))
self.macd_hist.append(macd) if len(self.macd_hist) == self.size: if self.exp_mm is None: self.exp_mm = sum(self.macd_hist) / self.size else: new_mm = self.exp_mm a = 2 / (self.size + 1) self.exp_mm = (1 - a) * new_mm + a * self.macd_hist[-1] diff = macd - self.exp_mm if self.signal != 1 and diff > 0.001: if self.signal == -1: # print(orders) orders.append(Order(event.instrument, 1, 0)) orders.append(Order(event.instrument, 1, 0)) self.signal = 1 elif self.signal != -1 and diff < -0.001: if self.signal == 1: # print(orders) orders.append(Order(event.instrument, -1, 0)) orders.append(Order(event.instrument, -1, 0)) self.signal = -1 del self.macd_hist[0] del self.hist[0] return orders print(evaluateTick(MACD(), {'PETR4': '2018-03-07.csv'}))