Пример #1
0
 def __init__(self, feed, fastSMA, slowSMA):
     strategy.BacktestingStrategy.__init__(self, feed, 1000)
     ds = feed["orcl"].getPriceDataSeries()
     self.__fastSMADS = ma.SMA(ds, fastSMA)
     self.__slowSMADS = ma.SMA(ds, slowSMA)
     self.__longPos = None
     self.__shortPos = None
     self.__finalValue = None
Пример #2
0
    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
Пример #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)
Пример #4
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)
Пример #5
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()
Пример #6
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)
Пример #7
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)
Пример #8
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)
Пример #9
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 xrange(100):
         ds.append(i)
         smaEW.onNewValue(None, i)
         self.assertEqual(sma[-1], smaEW.getValue())
         smaEW.onNewValue(None, None)  # This value should get skipped
Пример #10
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(StochasticOscillator,
              self).__init__(barDataSeries,
                             SOEventWindow(period, useAdjustedValues), maxLen)
        self.__d = ma.SMA(self, dSMAPeriod, maxLen)
Пример #11
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
Пример #12
0
 def testNinjaTraderSMA(self):
     common.test_from_csv(self, "nt-sma-15.csv",
                          lambda inputDS: ma.SMA(inputDS, 15), 3)