Пример #1
0
                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)
Пример #2
0
    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',
Пример #4
0
    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)
Пример #6
0
                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()