我正在使用 bitstamp 客户端上的算法,该算法在 30 分钟柱上效果更好,而不是将每笔交易视为一根柱。
是否有一种“正确”的方法可以将这些条形重新采样为 30 分钟的间隔?
我可以用 bitcoincharts 经纪人来做这件事,但我需要从 bitstampbroker 执行,所以我希望用一个来做。
我正在使用 bitstamp 客户端上的算法,该算法在 30 分钟柱上效果更好,而不是将每笔交易视为一根柱。
是否有一种“正确”的方法可以将这些条形重新采样为 30 分钟的间隔?
我可以用 bitcoincharts 经纪人来做这件事,但我需要从 bitstampbroker 执行,所以我希望用一个来做。
这应该有助于:
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()