Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
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())
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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())
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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()