コード例 #1
0
def main(plot):
    instrument = "bitmex_LTCZ18"
    initialCash = 1000
    vwapWindowSize = 100
    buyThreshold = 0.02
    sellThreshold = 0.01

    # barFeed = csvfeed.GenericBarFeed(bar.Frequency.MINUTE*30)
    # barFeed.addBarsFromCSV(instrument, "30min-bitstampUSD.csv")

    feed = Feed(Frequency.SECOND)
    feed.loadBars('bitmex_LTCZ18', test_back=True)

    brk = broker.BacktestingBroker(initialCash, feed)
    strat = VWAPMomentum(feed, brk, instrument, vwapWindowSize, buyThreshold,
                         sellThreshold)

    if plot:
        plt = plotter.StrategyPlotter(strat)
        plt.getInstrumentSubplot(instrument).addDataSeries(
            "VWAP", strat.getVWAP())

    strat.run()

    if plot:
        plt.plot()
コード例 #2
0
ファイル: bitstamp_test.py プロジェクト: zofuthan/pyalgotrade
    def testMinTrade(self):
        class TestStrategy(strategy.BaseStrategy):
            def __init__(self, feed, brk):
                strategy.BaseStrategy.__init__(self, feed, brk)
                self.pos = None

            def onBars(self, bars):
                if not self.pos:
                    self.pos = self.enterLongLimit("BTC", 4.99, 1, True)

        barFeed = btcbarfeed.CSVTradeFeed()
        barFeed.addBarsFromCSV(tc_common.get_data_file_path("bitstampUSD.csv"))
        brk = broker.BacktestingBroker(100, barFeed)
        strat = TestStrategy(barFeed, brk)
        with self.assertRaisesRegexp(Exception, "Trade must be >= 5"):
            strat.run()
コード例 #3
0
    def __init__(self, feed, *params):
        actions, initialCash, ncoins, history, simnum = params
        policy = QLearningDecisionPolicy(actions, history + 2, simnum)
        brk = broker.BacktestingBroker(initialCash, feed)

        strategy.BacktestingStrategy.__init__(self, feed, brk)

        self.__instrument = "BTC"
        self.__prices = feed[self.__instrument].getCloseDataSeries()
        self.__position = None
        self.__posSize = 0.05

        self.__RLinitialCash = initialCash
        self.__RLncoins = ncoins
        self.__RLpolicy = policy
        self.__RLhistory = history
コード例 #4
0
ファイル: bitstamp_test.py プロジェクト: aborodya/pyalgotrade
    def testMinTrade(self):
        class TestStrategy(strategy.BaseStrategy):
            def __init__(self, feed, brk):
                strategy.BaseStrategy.__init__(self, feed, brk)
                self.pos = None

            def onBars(self, bars):
                if not self.pos:
                    self.pos = self.enterLongLimit(INSTRUMENT, 4.99, 1, True)

        barFeed = btcbarfeed.CSVTradeFeed()
        barFeed.addBarsFromCSV(tc_common.get_data_file_path("bitstampUSD.csv"),
                               instrument=INSTRUMENT)
        brk = broker.BacktestingBroker({PRICE_CURRENCY: 100}, barFeed)
        strat = TestStrategy(barFeed, brk)
        with self.assertRaisesRegexp(Exception, "USD amount must be >= 25"):
            strat.run()
コード例 #5
0
    def testBitcoinChartsFeed(self):
        class TestStrategy(strategy.BaseStrategy):
            def __init__(self, feed, brk):
                strategy.BaseStrategy.__init__(self, feed, brk)
                self.pos = None

            def onBars(self, bars):
                if not self.pos:
                    self.pos = self.enterLongLimit("BTC", 5.83, 1, True)

        barFeed = btcbarfeed.CSVTradeFeed()
        barFeed.addBarsFromCSV(tc_common.get_data_file_path("bitstampUSD.csv"))
        brk = broker.BacktestingBroker(100, barFeed)
        strat = TestStrategy(barFeed, brk)
        strat.run()
        self.assertEquals(strat.pos.getShares(), 1)
        self.assertEquals(strat.pos.entryActive(), False)
        self.assertEquals(strat.pos.isOpen(), True)
        self.assertEquals(strat.pos.getEntryOrder().getAvgFillPrice(), 5.83)
コード例 #6
0
def main(plot):
    instrument = "BTC"
    initialCash = 100
    vwapWindowSize = 400
    buyThreshold = 0.05
    sellThreshold = 0.01

    barFeed = csvfeed.GenericBarFeed(bar.Frequency.MINUTE*30)
    barFeed.addBarsFromCSV(instrument, "30min-bitstampUSD.csv")
    brk = broker.BacktestingBroker(initialCash, barFeed)
    strat = VWAPMomentum(barFeed, brk, instrument, vwapWindowSize, buyThreshold, sellThreshold)

    if plot:
        plt = plotter.StrategyPlotter(strat)
        plt.getInstrumentSubplot(instrument).addDataSeries("VWAP", strat.getVWAP())

    strat.run()

    if plot:
        plt.plot()
コード例 #7
0
ファイル: bitstamp_test.py プロジェクト: aborodya/pyalgotrade
    def testBitcoinChartsFeed(self):
        class TestStrategy(strategy.BaseStrategy):
            def __init__(self, feed, brk):
                strategy.BaseStrategy.__init__(self, feed, brk)
                self.pos = None

            def onBars(self, bars):
                if not self.pos:
                    self.pos = self.enterLongLimit(INSTRUMENT, 5.83, 5, True)

        barFeed = btcbarfeed.CSVTradeFeed()
        barFeed.addBarsFromCSV(tc_common.get_data_file_path("bitstampUSD.csv"),
                               instrument=INSTRUMENT)
        brk = broker.BacktestingBroker({PRICE_CURRENCY: 100}, barFeed)
        strat = TestStrategy(barFeed, brk)
        strat.run()
        self.assertEqual(strat.pos.getShares(), 5)
        self.assertEqual(strat.pos.entryActive(), False)
        self.assertEqual(strat.pos.isOpen(), True)
        self.assertEqual(strat.pos.getEntryOrder().getAvgFillPrice(),
                         round((3 * 5.83 + 2 * 5.76) / 5.0, 2))
コード例 #8
0
def main(plot):
    priceCurrency = "USD"
    instrument = "BTC/USD"
    vwapWindowSize = 100
    buyThreshold = 0.02
    sellThreshold = 0.01

    barFeed = csvfeed.GenericBarFeed(bar.Frequency.MINUTE * 30)
    barFeed.addBarsFromCSV(instrument, "30min-bitstampUSD.csv")
    brk = broker.BacktestingBroker({priceCurrency: 1000}, barFeed)
    strat = VWAPMomentum(barFeed, brk, instrument, vwapWindowSize,
                         buyThreshold, sellThreshold)

    if plot:
        from pyalgotrade import plotter

        plt = plotter.StrategyPlotter(strat)
        plt.getInstrumentSubplot(instrument).addDataSeries(
            "VWAP", strat.getVWAP())

    strat.run()

    if plot:
        plt.plot()