Esempio n. 1
0
    def __init__(self, strategy, feed, instrument, **kwargs):

        super(atr_signal, self).__init__(strategy, feed, instrument)
        self.set_member('period',20,kwargs)
        self.atr= atr.ATR(feed[instrument],self.period)
        self.plot_init(True)
        pass
 def testInvalidDataSeries(self):
     with self.assertRaisesRegexp(
             Exception,
             "barDataSeries must be a dataseries.bards.BarDataSeries instance"
     ):
         ds = dataseries.SequenceDataSeries()
         atr.ATR(ds, 14, True)
Esempio n. 3
0
    def __init__(self, feed, instrument, exitDays, multiplier):
        super(TestStrat, self).__init__(feed, cash_or_brk=100000)
        self.exitDays = exitDays
        self.multiplier = multiplier

        self.STRATNAME = "Spike"

        self.__instrument = instrument
        # We'll use adjusted close values, if available, instead of regular close values.
        if feed.barsHaveAdjClose():
            self.setUseAdjustedValues(True)

        self.barDS = self.getFeed().getDataSeries(self.__instrument)
        self.priceDS = self.getFeed().getDataSeries(
            self.__instrument).getPriceDataSeries()
        self.volumeDS = self.getFeed().getDataSeries(
            self.__instrument).getVolumeDataSeries()

        self.atr = atr.ATR(self.barDS, 20)

        self.volumeSma = ma.SMA(self.volumeDS, 20)

        self.__longPos = None
        self.__shortPos = None
        self.getBroker().getFillStrategy().setVolumeLimit(None)  # hack / CARL
Esempio n. 4
0
    def __init__(self, feed, instrument):
        super(MyStrategy, self).__init__(feed)
        self.__instrument = instrument

        ds = feed.getDataSeries(instrument=instrument,
                                freq=barcls.Frequency.DAY)
        self.atr20 = ptatr.ATR(ds, period=20, maxLen=100)
        pds = feed[instrument, barcls.Frequency.DAY].getCloseDataSeries()
        self.ma10 = ptma.SMA(pds, period=10, maxLen=30)
        self.ma20 = ptma.SMA(pds, period=20, maxLen=60)
        self.ma58 = ptma.SMA(pds, period=58, maxLen=150)
        self.ma200 = ptma.SMA(pds, period=200, maxLen=250)
Esempio n. 5
0
    def testStockChartsATR(self):
        # Test data from http://stockcharts.com/help/doku.php?id=chart_school:technical_indicators:average_true_range_a
        high = [48.70, 48.72, 48.90, 48.87, 48.82, 49.05, 49.20, 49.35, 49.92, 50.19, 50.12, 49.66, 49.88, 50.19, 50.36, 50.57, 50.65, 50.43, 49.63, 50.33, 50.29, 50.17, 49.32, 48.50, 48.32, 46.80, 47.80, 48.39, 48.66, 48.79]
        low = [47.790, 48.140, 48.390, 48.370, 48.240, 48.635, 48.940, 48.860, 49.500, 49.870, 49.200, 48.900, 49.430, 49.725, 49.260, 50.090, 50.300, 49.210, 48.980, 49.610, 49.200, 49.430, 48.080, 47.640, 41.550, 44.283, 47.310, 47.200, 47.900, 47.730]
        close = [48.160, 48.610, 48.750, 48.630, 48.740, 49.030, 49.070, 49.320, 49.910, 50.130, 49.530, 49.500, 49.750, 50.030, 50.310, 50.520, 50.410, 49.340, 49.370, 50.230, 49.238, 49.930, 48.430, 48.180, 46.570, 45.410, 47.770, 47.720, 48.620, 47.850]
        expected = [None, None, None, None, None, None, None, None, None, None, None, None, None, 0.56, 0.59, 0.59, 0.57, 0.62, 0.62, 0.64, 0.67, 0.69, 0.78, 0.78, 1.21, 1.30, 1.38, 1.37, 1.34, 1.32]

        # Build a bar dataseries using the test data.
        barDataSeries = bards.BarDataSeries()
        atrDS = atr.ATR(barDataSeries, 14)
        now = datetime.datetime(2000, 1, 1)
        for i in xrange(len(high)):
            b = bar.BasicBar(now + datetime.timedelta(days=i), close[i], high[i], low[i], close[i], 100, close[i], bar.Frequency.DAY)
            barDataSeries.append(b)
            self.assertEqual(common.safe_round(atrDS[-1], 2), expected[i])
Esempio n. 6
0
    def __init__(self, feed, instrument, short_l, long_l, up_cum):
        strategy.BacktestingStrategy.__init__(self, feed)
        self.__instrument = instrument
        self.getBroker().setFillStrategy(DefaultStrategy(None))
        self.getBroker().setCommission(TradePercentage(0.001))
        self.__position = None
        self.__prices = feed[instrument].getPriceDataSeries()
        self.__malength1 = int(short_l)
        self.__malength2 = int(long_l)
        self.__circ = int(up_cum)
        self.__bardata = feed[instrument]
        self.N = atr.ATR(self.__bardata, 20)

        self.__ma1 = ma.SMA(self.__prices, self.__malength1)
        self.__ma2 = ma.SMA(self.__prices, self.__malength2)
Esempio n. 7
0
    def __init__(self, feed, instrument, bBandsPeriod):
        strategy.BacktestingStrategy.__init__(self, feed)
        self.setDebugMode(False)
        self.__instrument = instrument
        self.__feed = feed
        self.__position = None
        self.__atr = atr.ATR(feed[instrument], 15)

        self.__col = [
            "buyPrice", "buyTime", "sellPrice", "sellTime", "returns"
        ]
        self.__msdf = pd.DataFrame(columns=self.__col)
        self.__buyPrice = 0
        self.__buyTime = None
        self.setUseAdjustedValues(True)
Esempio n. 8
0
    def __init__(self, feed, instrument, bBandsPeriod):
        strategy.BacktestingStrategy.__init__(self, feed)
        self.setDebugMode(False)
        self.__instrument = instrument
        self.__feed = feed
        self.__position = None
        #self.__stochK = stoch.StochasticOscillator(feed[instrument], 5, 3)
        self.__mafast = ma.EMA(feed[instrument].getCloseDataSeries(), 5)
        self.__maslow = ma.EMA(feed[instrument].getCloseDataSeries(), 30)

        self.__atr = atr.ATR(feed[instrument], 15)

        self.__col = ["buyPrice","buyTime","sellPrice","sellTime", "returns"]
        self.__msdf = pd.DataFrame(columns=self.__col)
        self.__buyPrice = 0
        self.__buyTime = None
        self.setUseAdjustedValues(True)
Esempio n. 9
0
    def __init__(self, feed, instrument, periods, atr_period=7):
        '''
        there would be different period
        '''
        # set the beginning cash as 10000
        strategy.BacktestingStrategy.__init__(self, feed, 100000)
        self.position = None
        self.instrument = instrument
        # use the adjusted close
        self.setUseAdjustedValues(True)
        self.atr = atr.ATR(feed[instrument],
                           atr_period)  # the period of atr is 7 days
        self.price = feed[instrument].getPriceDataSeries()  # not getDataSeries
        self.current_high = None

        # the smas
        self.s = []
        for p in periods:
            self.s.append(ma.SMA(feed[instrument].getPriceDataSeries(), p))
Esempio n. 10
0
    def testStockChartsATRAdjusted(self):
        # Test data from http://stockcharts.com/help/doku.php?id=chart_school:technical_indicators:average_true_range_a
        high = [
            48.70, 48.72, 48.90, 48.87, 48.82, 49.05, 49.20, 49.35, 49.92,
            50.19, 50.12, 49.66, 49.88, 50.19, 50.36, 50.57, 50.65, 50.43,
            49.63, 50.33, 50.29, 50.17, 49.32, 48.50, 48.32, 46.80, 47.80,
            48.39, 48.66, 48.79
        ]
        low = [
            47.790, 48.140, 48.390, 48.370, 48.240, 48.635, 48.940, 48.860,
            49.500, 49.870, 49.200, 48.900, 49.430, 49.725, 49.260, 50.090,
            50.300, 49.210, 48.980, 49.610, 49.200, 49.430, 48.080, 47.640,
            41.550, 44.283, 47.310, 47.200, 47.900, 47.730
        ]
        close = [
            48.160, 48.610, 48.750, 48.630, 48.740, 49.030, 49.070, 49.320,
            49.910, 50.130, 49.530, 49.500, 49.750, 50.030, 50.310, 50.520,
            50.410, 49.340, 49.370, 50.230, 49.238, 49.930, 48.430, 48.180,
            46.570, 45.410, 47.770, 47.720, 48.620, 47.850
        ]
        expected = [
            None, None, None, None, None, None, None, None, None, None, None,
            None, None, 0.555000, 0.593929, 0.585791, 0.568949, 0.615452,
            0.617920, 0.642354, 0.674329, 0.692770, 0.775429, 0.781470,
            1.209229, 1.302620, 1.380290, 1.366698, 1.336219, 1.316482
        ]

        # Build a bar dataseries using the test data.
        barDataSeries = bards.BarDataSeries(INSTRUMENT)
        atrDS = atr.ATR(barDataSeries, 14, True)
        now = datetime.datetime(2000, 1, 1)
        for i in xrange(len(high)):
            b = bar.BasicBar(INSTRUMENT, now + datetime.timedelta(days=i),
                             close[i], high[i], low[i], close[i], 100,
                             close[i] / 2, bar.Frequency.DAY)
            barDataSeries.append(b)
            if expected[i] is None:
                self.assertEqual(atrDS[-1], None)
            else:
                self.assertEqual(common.safe_round(atrDS[-1], 2),
                                 round(expected[i] / 2, 2))
Esempio n. 11
0
    def __init__(self, feed, instrument,up_cum,cash_or_brk=10000):
        strategy.BacktestingStrategy.__init__(self, feed)
        self.__instrument = instrument
        self.getBroker().setFillStrategy(DefaultStrategy(None))
        self.getBroker().setCommission(TradePercentage(0.001))
        self.__position = None
        self.__prices = feed[instrument].getPriceDataSeries()
        self.__circ = int(up_cum)
        #self.bardata = feed[instrument]
        #self.N = atr.ATR(self.bardata, up_cum)
        self.N = atr.ATR(self.getFeed()[self.__instrument], up_cum)
        self.U = 0  # 总资金100w  self.U = acount/(50*atr)  2%最大回撤+10倍杠杆  atr day:100  10min:20  1min:5  5w本金 day :1  10min:5 1min:20 #单个市场上 最多建立4个U

        self.buyPrice = []
        self.shortPrice = []
        self.max20 = 0
        self.min10 = 0
        self.max10 = 0
        self.min20 = 0
        self.buyPrice0 = 0
        self.shortPrice0 = 0
        self.lastPrice0 = 0
        self.lastPrice1 =0