2017-03-09 49 views
0

我正在使用bitstamp客戶端上的算法,該算法在30分鐘的酒吧中效果更好,而不是將每次交易視爲酒吧。問:在pyalgotrade中重新採樣bitstamp吧

是否有一種「正確」的方式將這些條重新採樣爲30分鐘的間隔?

我可以做比特幣交易經紀人沒有問題,但我需要從bitstampbroker執行,所以我希望能做到這一點。

回答

0

這應有助於:

from pyalgotrade.bitstamp import barfeed 
from pyalgotrade.bitstamp import broker 
from pyalgotrade import strategy 


class Strategy(strategy.BaseStrategy): 
    def __init__(self, feed, brk): 
     super(Strategy, self).__init__(feed, brk) 
     self._instrument = "BTC" 
     self._bid = None 
     self._ask = None 
     self._resampledBF = self.resampleBarFeed(60, self.onResampledBars) 

     # Subscribe to order book update events to get bid/ask prices to trade. 
     feed.getOrderBookUpdateEvent().subscribe(self._onOrderBookUpdate) 

    def _onOrderBookUpdate(self, orderBookUpdate): 
     bid = orderBookUpdate.getBidPrices()[0] 
     ask = orderBookUpdate.getAskPrices()[0] 

     if bid != self._bid or ask != self._ask: 
      self._bid = bid 
      self._ask = ask 
      self.info("Order book updated. Best bid: %s. Best ask: %s" % (self._bid, self._ask)) 

    def onResampledBars(self, dt, bars): 
     bar = bars[self._instrument] 
     self.info("Resampled - Price: %s. Volume: %s." % (bar.getClose(), bar.getVolume())) 

    def onBars(self, bars): 
     bar = bars[self._instrument] 
     self.info("Price: %s. Volume: %s." % (bar.getClose(), bar.getVolume())) 


def main(): 
    barFeed = barfeed.LiveTradeFeed() 
    brk = broker.PaperTradingBroker(1000, barFeed) 
    strat = Strategy(barFeed, brk) 

    strat.run() 


if __name__ == "__main__": 
    main()