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
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
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)
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)
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()
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)
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)
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)
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
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)
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
def testNinjaTraderSMA(self): common.test_from_csv(self, "nt-sma-15.csv", lambda inputDS: ma.SMA(inputDS, 15), 3)