Q: Повторная выборка бита с метками в pyalgotrade

Я работаю с алгоритмом на клиенте bittamp, который лучше работает с 30-минутными барами, вместо того, чтобы рассматривать каждую сделку как бар.

Есть ли "правильный" способ повторной выборки этих баров в 30-минутные интервалы на лету?

Я не могу сделать это без проблем с брокером биткойнов, но мне нужно выполнение от битмапброкера, поэтому я надеялся сделать это с одним из них.

1 ответ

Это должно помочь:

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()
Другие вопросы по тегам