if results == True: all_results = pd.concat([ all_results, get_results(prices, max_min, pat, stock, ema_, window_) ], axis=0) if results == True: return all_results.reset_index(drop=True) if __name__ == '__main__': # Get data from database allMinutePriceData = model.getMinutePriceData(start=datetime(2020, 11, 25), end=datetime(2020, 12, 1), stockSymbol='INFY') resampled_data = allMinutePriceData resampled_data = resampled_data.rename(columns={'datetime': 'timestamp'}) resampled_data = resampled_data.set_index('timestamp', append=True) print(resampled_data) ema_list = [3, 10, 20, 30] window_list = [3, 10, 20, 30] results = screener(resampled_data, ema_list, window_list, plot=True, results=True) print(results)
def notify_trade(self,trade): if not trade.isclosed: return dict_trade = {'price':trade.price, 'pnl' : trade.pnl} trades = pd.DataFrame(dict_trade,index =[0]) trades.to_csv('output/supertrend_1.csv', mode='a', header=False) if __name__ == '__main__': # self.data.close[0] < self.data.open[0] or Datas are in a subfolder of the samples. Need to find where the script is # because it could have been called from anywhere # Get data from database output = {} allMinutePriceData = model.getMinutePriceData(start = datetime(2020,8,10) ,end = datetime(2020,12,25,0,0), stockSymbol = 'BANKNIFTY DEC FUT') DFList = [group[1] for group in allMinutePriceData.groupby(allMinutePriceData['datetime'].dt.date)] for df in DFList: df = df.set_index('datetime') print(df.index.date[0]) cerebro = bt.Cerebro() minutePriceData = bt.feeds.PandasData( dataname=df) # Add a strategy cerebro.addstrategy(SuperTrendStat) # Add the Data Feeds to Cerebro cerebro.adddata(minutePriceData) # Set our desired cash start cerebro.broker.setcash(745000.0) cerebro.addsizer(bt.sizers.AllInSizerInt)
selltrigger = True self.log(''' target reached ''') if diff < 0 and diffpercent < -self.stoploss: self.log(f''' stoploss triggered {diff} ''') selltrigger = True if selltrigger == True: self.sell() self.bought = False self.log('sold @ Close, %.2f' % self.data.close[0]) if __name__ == '__main__': # Get data from database allMinutePriceData = model.getMinutePriceData(start=datetime(2020, 11, 15), end=datetime(2020, 12, 4)) finalOutput = {} allMinutePriceData['symbol'].unique().tolist() symbols = ['WIPRO', 'TCS'] for symbol in symbols: print(symbol) minutePriceData = allMinutePriceData[allMinutePriceData['symbol'] == symbol] minutePriceData = minutePriceData.set_index('datetime') output = {} df = minutePriceData.resample('5T', origin='start', closed='left', label='left').agg({ 'open': 'first', 'high': 'max',
def start(self): self.smas = {data: bt.indicators.SMA(data, period=self.p.period) for data in self.datas} def stop(self): self.rets['over'] = list() self.rets['under'] = list() for data, sma in self.smas.items(): node = data._name, data.close[0], sma[0] if data.close[0] > sma[0]: self.rets['over'].append(node) else: self.rets['under'].append(node) if __name__ == '__main__': minutePriceData = model.getMinutePriceData(dayInterval = 5) UniqueSymbols = minutePriceData.symbol.unique().tolist() grouped = minutePriceData.groupby(minutePriceData.symbol) cerebro = bt.Cerebro() for symbol in UniqueSymbols : minutePriceData = grouped.get_group(symbol) minutePriceData = minutePriceData.set_index('datetime') minutePriceData = bt.feeds.PandasData( dataname=minutePriceData) cerebro.adddata(minutePriceData,name=symbol) cerebro.addanalyzer(Screener_SMA, period=20) cerebro.run(runonce=False, stdstats=False, writer=True)
self.bought = False self.sell() self.already_traded = True self.sl_hit += 1 self.log(''' xxxxxxxxxxxx DANGER xxxxx ''') self.log(f''' sell @ stoploss Close {self.data.close[0]},{self.bought_price}:{self.data.close[0] - self.bought_price}''') if __name__ == '__main__': # self.data.close[0] < self.data.open[0] or Datas are in a subfolder of the samples. Need to find where the script is # because it could have been called from anywhere # Get data from database output = {} allMinutePriceData = model.getMinutePriceData(start = datetime(2020,12,1) ,end = datetime(2020,12,25,0,0)) finalOutput = {} symbols = allMinutePriceData['symbol'].unique().tolist() for symbol in symbols: minutePriceData = allMinutePriceData[allMinutePriceData['symbol'] == symbol] minutePriceData = minutePriceData.set_index('datetime') if(minutePriceData['close'].mean() < 100 ): break output = {} DFList = [group[1] for group in minutePriceData.groupby(minutePriceData.index.date)] for df in DFList: cerebro = bt.Cerebro() minutePriceData = bt.feeds.PandasData( dataname=df) # Add a strategy cerebro.addstrategy(ORB)
self.log(''' target reached ''') if diff < 0 and diffpercent < -self.stoploss: self.log(f''' stoploss triggered {diff} ''') selltrigger = True if selltrigger == True: self.sell() self.bought = False self.log('sold @ Close, %.2f' % self.data.close[0]) if __name__ == '__main__': # Get data from database allMinutePriceData = model.getMinutePriceData(start=datetime(2020, 11, 20), end=datetime(2020, 12, 4), stockSymbol='TATAMOTORS') finalOutput = {} symbols = allMinutePriceData['symbol'].unique().tolist() for symbol in symbols: #print(symbol) minutePriceData = allMinutePriceData[allMinutePriceData['symbol'] == symbol] minutePriceData = minutePriceData.set_index('datetime') output = {} DFList = [ group[1] for group in minutePriceData.groupby(minutePriceData.index.date) ] for df in DFList: cerebro = bt.Cerebro()