Esempio n. 1
0
 def __init__(self, feed, instrument, brk):
     super(MyStrategy, self).__init__(feed, brk)
     self.__position = None
     self.__instrument = instrument
     # We'll use adjusted close values instead of regular close values.
     self.__prices = feed[instrument].getPriceDataSeries()
     self.__sma = {}
     self.__sma[60] = ma.SMA(self.__prices, 60)
     self.__sma[10] = ma.SMA(self.__prices, 10)
     self.__sma[30] = ma.SMA(self.__prices, 30)
    def __init__(self, feed, smaPeriod):
        strategy.BacktestingStrategy.__init__(self, feed)
        assert (smaPeriod > 3)

        self.__lead = "^n225"
        self.__lag = "spy"
        self.__adjClose = feed[self.__lead].getAdjCloseDataSeries()

        # Exit signal is more sensitive than entry.
        self.__fastSMA = ma.SMA(self.__adjClose, int(smaPeriod / 2))
        self.__slowSMA = ma.SMA(self.__adjClose, smaPeriod)
        self.__pos = None
Esempio n. 3
0
    def __init__(self, feed, instrument, n, m):
        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(n)
        self.__malength2 = int(m)

        self.__ma1 = ma.SMA(self.__prices, self.__malength1)
        self.__ma2 = ma.SMA(self.__prices, self.__malength2)
Esempio n. 4
0
    def __init__(self, feed, instrument, mall, mals, masl, mass):
        strategy.BacktestingStrategy.__init__(self, feed)
        self.getBroker().setFillStrategy(DefaultStrategy(None))
        self.getBroker().setCommission(TradePercentage(0.001))

        self.__instrument = instrument
        self.__close = feed[instrument].getCloseDataSeries()
        self.__longPos = None
        self.__shortPos = None
        self.__mall = ma.SMA(self.__close, int(mall))
        self.__mals = ma.SMA(self.__close, int(mals))
        self.__masl = ma.SMA(self.__close, int(masl))
        self.__mass = ma.SMA(self.__close, int(mass))

        self.__position = SequenceDataSeries()
Esempio n. 5
0
    def __init__(self, barDataSeries, period, dSMAPeriod=3, useAdjustedValues=False, maxLen=None):
        assert dSMAPeriod > 1, "dSMAPeriod must be > 1"
        assert isinstance(barDataSeries, bards.BarDataSeries), \
            "barDataSeries must be a dataseries.bards.BarDataSeries instance"

        super().__init__(barDataSeries, SOEventWindow(period, useAdjustedValues), maxLen)
        self.__d = ma.SMA(self, dSMAPeriod, maxLen)
Esempio n. 6
0
    def __init__(self, feed, instrument):
        super(Strategy, self).__init__(feed)

        self.__position = None
        self.__sma = ma.SMA(feed[instrument].getCloseDataSeries(), 150)
        self.__instrument = instrument
        self.getBroker()
Esempio n. 7
0
 def __init__(self, feed, instrument, smaPeriod):
     super(MyStrategy, self).__init__(feed, 1000)
     self.__position = None
     self.__instrument = instrument
     # We'll use adjusted close values instead of regular close values.
     self.setUseAdjustedValues(True)
     self.__sma = ma.SMA(feed[instrument].getPriceDataSeries(), smaPeriod)
Esempio n. 8
0
 def __init__(self, dataSeries, period, numStdDev, maxLen=None):
     self.__sma = ma.SMA(dataSeries, period, maxLen=maxLen)
     self.__stdDev = stats.StdDev(dataSeries, period, maxLen=maxLen)
     self.__upperBand = dataseries.SequenceDataSeries(maxLen)
     self.__lowerBand = dataseries.SequenceDataSeries(maxLen)
     self.__numStdDev = numStdDev
     # It is important to subscribe after sma and stddev since we'll use those values.
     dataSeries.getNewValueEvent().subscribe(self.__onNewValue)
Esempio n. 9
0
    def __buildSMA(self, period, values, smaMaxLen=None):
        seqDs = dataseries.SequenceDataSeries()
        ret = ma.SMA(seqDs, period, smaMaxLen)

        for value in values:
            seqDs.append(value)

        return ret
Esempio n. 10
0
    def testCrossAboveWithSMA(self):
        ds1 = dataseries.SequenceDataSeries()
        ds2 = dataseries.SequenceDataSeries()

        sma1 = ma.SMA(ds1, 15)
        sma2 = ma.SMA(ds2, 25)

        for i in range(100):
            ds1.append(i)
            ds2.append(50)

            if i == 58:
                self.assertEqual(cross.cross_above(sma1[:], sma2[:], -2, None),
                                 1)
            else:
                self.assertEqual(cross.cross_above(sma1[:], sma2[:], -2, None),
                                 0)
Esempio n. 11
0
    def __init__(self, feed, instrument, brk):
        super(MyStrategy, self).__init__(feed, brk)
        self.__position = None
        self.__instrument = instrument
        # We'll use adjusted close values instead of regular close values.
        self.setUseAdjustedValues(True)
        self.__prices = feed[instrument].getPriceDataSeries()
        self.__sma = {}
        self.__sma[60] = ma.SMA(self.__prices, 60)
        self.__sma[10] = ma.SMA(self.__prices, 10)
        self.__sma[30] = ma.SMA(self.__prices, 30)
        self.__mcash = brk.getCash()
        self.__mcoin = 0
        self.__mprice = 0

        self.__si = 0
        self.__jsl = []
Esempio n. 12
0
    def __init__(self, feed, instrument, entrySMA, exitSMA, rsiPeriod,
                 overBoughtThreshold, overSoldThreshold):
        super().__init__(feed)
        self.__instrument = instrument

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

        self.__priceDS = feed[instrument].getPriceDataSeries()
        self.__entrySMA = ma.SMA(self.__priceDS, entrySMA)
        self.__exitSMA = ma.SMA(self.__priceDS, exitSMA)
        self.__rsi = rsi.RSI(self.__priceDS, rsiPeriod)
        self.__overBoughtThreshold = overBoughtThreshold
        self.__overSoldThreshold = overSoldThreshold
        self.__longPos = None
        self.__shortPos = None
Esempio n. 13
0
 def __init__(self, feed, instrument, smaPeriod):
     strategy.BacktestingStrategy.__init__(self, feed)
     self.__instrument = instrument
     self.__position = None
     # We'll use adjusted close values instead of regular close values.
     self.setUseAdjustedValues(True)
     self.__prices = feed[instrument].getPriceDataSeries()
     self.__sma = ma.SMA(self.__prices, smaPeriod)
Esempio n. 14
0
    def __init__(self, feed, instrument, short_l, mid_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(mid_l)
        self.__malength3 = int(long_l)
        
        self.__circ = int(up_cum)
        self.__ma1 = ma.SMA(self.__prices, self.__malength1)
        self.__ma2 = ma.SMA(self.__prices, self.__malength2)
        self.__ma3 = ma.SMA(self.__prices, self.__malength3)
Esempio n. 15
0
 def testStockChartsSMA_BoundedSeq(self):
     # Test data from http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_averages
     common.test_from_csv(self,
                          "sc-sma-10.csv",
                          lambda inputDS: ma.SMA(inputDS, 10),
                          maxLen=1)
     common.test_from_csv(self,
                          "sc-sma-10.csv",
                          lambda inputDS: ma.SMA(inputDS, 10),
                          maxLen=2)
     common.test_from_csv(self,
                          "sc-sma-10.csv",
                          lambda inputDS: ma.SMA(inputDS, 10),
                          maxLen=4)
     common.test_from_csv(self,
                          "sc-sma-10.csv",
                          lambda inputDS: ma.SMA(inputDS, 10),
                          maxLen=1000)
Esempio n. 16
0
    def testEventWindow(self):
        ds = dataseries.SequenceDataSeries()
        smaEW = ma.SMAEventWindow(10)
        sma = ma.SMA(ds, 10)
        smaEW.onNewValue(None, None)  # This value should get skipped

        for i in range(100):
            ds.append(i)
            smaEW.onNewValue(None, i)
            self.assertEqual(sma[-1], smaEW.getValue())
            smaEW.onNewValue(None, None)  # This value should get skipped
Esempio n. 17
0
    def __init__(self, feed, brk):
        strategy.BaseStrategy.__init__(self, feed, brk)
        smaPeriod = 20
        self.__instrument = "btcbrl"
        self.__prices = feed[self.__instrument].getCloseDataSeries()
        self.__sma = ma.SMA(self.__prices, smaPeriod)
        self.__bid = None
        self.__ask = None
        self.__position = None
        self.__posSize = 0.05

        # Subscribe to order book update events to get bid/ask prices to trade.
        feed.getOrderBookUpdateEvent().subscribe(self.__onOrderBookUpdate)
Esempio n. 18
0
    def __init__(self, feed):
        super().__init__()

        stdDevPeriod = 90
        smaPeriod = 20

        self.__returns = {}
        self.__stdDev = {}
        self.__ma = {}

        for instrument in feed.getRegisteredInstruments():
            priceDS = feed[instrument].getAdjCloseDataSeries()
            # Returns over the adjusted close values.
            self.__returns[instrument] = roc.RateOfChange(priceDS, 1)
            # StdDev over those returns.
            self.__stdDev[instrument] = stats.StdDev(self.__returns[instrument], stdDevPeriod)
            # MA over the adjusted close values.
            self.__ma[instrument] = ma.SMA(priceDS, smaPeriod)
Esempio n. 19
0
 def testNinjaTraderSMA(self):
     common.test_from_csv(self, "nt-sma-15.csv",
                          lambda inputDS: ma.SMA(inputDS, 15), 3)
Esempio n. 20
0
 def __init__(self, feed, instrument):
     super(MyStrategy, self).__init__(feed)
     self.__rsi = rsi.RSI(feed[instrument].getCloseDataSeries(), 14)
     self.__sma = ma.SMA(self.__rsi, 15)
     self.__instrument = instrument
Esempio n. 21
0
 def __init__(self, feed, instrument):
     super().__init__(feed)
     # We want a 15 period SMA over the closing prices.
     self.__sma = ma.SMA(feed[instrument].getCloseDataSeries(), 15)
     self.__instrument = instrument