def __init__(self, dataSeries, period, numStdDev, maxLen=dataseries.DEFAULT_MAX_LEN): 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 testStdDev_1(self): values = [1, 1, 2, 3, 5] seqDS = dataseries.SequenceDataSeries() stdDev = stats.StdDev(seqDS, 1) for value in values: seqDS.append(value) for i in stdDev: self.assertEqual(i, 0)
def testStdDev_Bounded(self): values = [1, 1, 2, 3, 5] seqDS = dataseries.SequenceDataSeries() stdDev = stats.StdDev(seqDS, 2, maxLen=2) for value in values: seqDS.append(value) self.assertEqual(stdDev[0], numpy.array([2, 3]).std()) self.assertEqual(stdDev[1], numpy.array([3, 5]).std())
def run_stddev(): global feed stddev = stats.StdDev(feed[instrument].getCloseDataSeries(), 50) print "Processing all bars" feed.loadAll() print "Processing all StdDev" for v in stddev: pass
def testStdDev(self): values = [1, 1, 2, 3, 5] seqDS = dataseries.SequenceDataSeries() stdDev = stats.StdDev(seqDS, 2) for value in values: seqDS.append(value) self.assertEqual(stdDev[0], None) self.assertEqual(stdDev[1], numpy.array([1, 1]).std()) self.assertEqual(stdDev[2], numpy.array([1, 2]).std()) self.assertEqual(stdDev[3], numpy.array([2, 3]).std()) self.assertEqual(stdDev[4], numpy.array([3, 5]).std())
def __init__(self, feed): 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)
def __init__(self, feed, instruments): super(BuyOnGap, self).__init__() stdDevPeriod = 90 smaPeriod = 20 self.__returns = {} self.__stdDev = {} self.__ma = {} for instrument in instruments: priceDS = feed.getDataSeries(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)
def __init__(self, instrument, feed, brk): strategy.BaseStrategy.__init__(self, feed, brk) self.__verbosityLevel = 1 self.__instrument = instrument self.__orderSize = 0.2 self.__targetPricePct = 0.015 self.__commitPricePct = self.__targetPricePct / 2 self.__stopLossPct = -0.02 # Time to wait for BUY order to get filled. self.__maxWaitEntry = datetime.timedelta(minutes=3) # Maximum holding period. self.__maxHoldPeriod = datetime.timedelta(hours=1) volatilityPeriod = 5 # How many returns to use to calculate volatility. self.returnsVolatility = stats.StdDev( roc.RateOfChange(feed[self.__instrument].getCloseDataSeries(), 1), volatilityPeriod) self.__switchNoPos()