Esempio n. 1
0
def test_for_best_parameter(dest_instrument, feed):
    """
    多线程测试指定范围里的最佳参数
    """
    def parameters_generator():
        instrument = [dest_instrument]
        SMA = range(5, 30)
        return itertools.product(instrument, SMA, [10000])

    local.run(MyStrategy, feed, parameters_generator())
Esempio n. 2
0
def grid_search(code, start_date, end_date):
    data = get_data(code, start_date, end_date)
    if data is None: return
    feed = dataFramefeed.Feed()
    feed.addBarsFromDataFrame(code, data)
    brk = gen_broker(feed)
    local.run(KDJStrategy,
              feed,
              parameters_generator(code, brk, data),
              workerCount=2)
Esempio n. 3
0
 def testLocal(self):
     barFeed = yahoofeed.Feed()
     instrument = "orcl"
     barFeed.addBarsFromCSV(instrument, common.get_data_file_path("orcl-2000-yahoofinance.csv"))
     res = local.run(sma_crossover.SMACrossOver, barFeed, parameters_generator(instrument, 5, 100))
     self.assertEquals(round(res.getResult(), 2), 1295462.6)
     self.assertEquals(res.getParameters()[1], 20)
def MyBackTest():
    instrument = "mro"
    mystrategy = rsi2.RSI2
    feed = yahoofeed.Feed()
    #add esv
    for i in range(2000,2013):
        year = str(i)
        datafilename = MyFiles.dataPath+instrument+"-"+year+"-"+MyFiles.dataFlag+".csv"

        if not os.path.exists(datafilename):
            print "not exists:"+ datafilename
            return
        else:
            feed.addBarsFromCSV(instrument,datafilename)

    local.run(mystrategy, feed, parameters_generator())
Esempio n. 5
0
def test(isOptimize=True, win=9):
    if isOptimize: # 寻找最佳参数
        results = local.run(SVMStrategy, feed, parameters_generator())
        print 'Parameters:', results.getParameters(), 'Result:', results.getResult()
        print results.getParameters()[0]
    else: # 用最佳参数回测
        testWithBestParameters(win=win)
def backtest(strategyClass, is_optimization, is_tick, start_date, end_date,
             symbol, frequency, position_size, lb, i):
    if is_tick:
        feed = bitbf.CSVTradeFeed()
        feed.addBarsFromCSV("../xbtusd_trades.csv",
                            'XBTUSD',
                            fromDateTime=start_date,
                            toDateTime=end_date)
    else:
        feed = GenericBarFeed(bar.Frequency.MINUTE, maxLen=10000)
        feed.setColumnName('datetime', 'Date')
        feed.setDateTimeFormat('%Y-%m-%dT%H:%M:%S.%fZ')
        feed.setBarFilter(csvfeed.DateRangeFilter(start_date, end_date))
        feed.addBarsFromCSV("XBTUSD", "../BITMEX_SPOT_BTC_USD_1MIN.csv")

    if is_optimization:
        strat = local.run(strategyClass,
                          feed,
                          parameters_generator(),
                          workerCount=None,
                          logLevel=10,
                          batchSize=1)
        print(strat.getResult(), strat.getParameters())
    else:
        strat = strategyClass(feed, None, symbol, int(frequency),
                              position_size, lb, i)

        strat.run()
Esempio n. 7
0
 def testFailingStrategy(self):
     barFeed = yahoofeed.Feed()
     instrument = "orcl"
     barFeed.addBarsFromCSV(
         instrument,
         common.get_data_file_path("orcl-2000-yahoofinance.csv"))
     res = local.run(FailingStrategy, barFeed,
                     parameters_generator(instrument, 5, 100))
     self.assertIsNone(res)
Esempio n. 8
0
def run_bband(code, from_year, end_year):
    #instrument = '300104.SZ'
    instrument = code + (".SS" if (code[0:3] == '600') else ".SZ")
    feed = yahoofinance.build_feed([instrument], from_year, end_year, "./data")
    #run = local.run(rsi2.RSI2, feed, parameters_generator())
    print 'run in '
    run = local.run(bbandsAll.BBandsAll, feed, parameters_generator_bBandsPeriod_list(instrument))
    print 'run result:', run.getParameters(), run.getResult()
    return run
Esempio n. 9
0
def argument_for_multiple():
    feed = yahoofeed.Feed()
    for code in code_list:
        feed.addBarsFromCSV(code, csv_path + "%s_hfq.csv" % code)
    if strategy_name == "Ma_Rsi":
        arg_set = "&"
        ma_short = list(range(3, 10))
        ma_long = list(range(10, 25))
        rsi_in = list(range(3, 10))
        rsi_out = list(range(10, 25))
        generators = itertools.product(code_list, arg_set, ma_short, ma_long,
                                       rsi_in, rsi_out)
        local.run(MyStrategy.Ma_Rsi, feed, generators)
    elif strategy_name == "Macd_Kdj":
        arg_set = "&"
        kdj_fast = list(range(3, 10))
        kdj_slow = list(range(10, 25))
        macd_fast = list(range(3, 10))
        macd_slow = list(range(10, 30))
        generators = itertools.product(code_list, arg_set, kdj_fast, kdj_slow,
                                       macd_fast, macd_slow)
        local.run(MyStrategy.Macd_Kdj, feed, generators)
    elif strategy_name == "Ma_Macd":
        arg_set = "&"
        ma_short = list(range(3, 10))
        ma_long = list(range(10, 25))
        macd_fast = list(range(3, 10))
        macd_slow = list(range(10, 30))
        generators = itertools.product(code_list, arg_set, ma_short, ma_long,
                                       macd_fast, macd_slow)
        local.run(MyStrategy.Ma_Macd, feed, generators)
from pyalgotrade.broker import backtesting
from pyalgotrade.optimizer import local

from pytrade.algorithms.donchianchannels import DonchianTradingAlgorithm
from pytrade.base import TradingSystem

codes = ["ABEV3", "BBAS3", "BBDC3", "BBDC4", "BBSE3", "BRAP4", "BRFS3", "BRKM5", "BRML3", "BVMF3", "CCRO3", "CIEL3", "CMIG4", "CPFE3", "CPLE6", "CSAN3", "CSNA3", "CTIP3", "CYRE3", "ECOR3", "EGIE3", "EMBR3", "ENBR3", "EQTL3", "ESTC3", "FIBR3", "GGBR4", "GOAU4", "HYPE3", "ITSA4", "ITUB4", "JBSS3", "KLBN11", "KROT3", "LAME4", "LREN3", "MRFG3", "MRVE3", "MULT3", "NATU3", "PCAR4", "PETR3", "PETR4", "QUAL3", "RADL3", "RENT3", "RUMO3", "SANB11", "SBSP3", "SMLE3", "SUZB5", "TIMP3", "UGPA3", "USIM5", "VALE3", "VALE5", "VIVT4", "WEGE3"]
feed = googlefeed.Feed()
rowFilter = lambda row: row["Close"] == "-" or row["Open"] == "-" or row["High"] == "-" or row["Low"] == "-" or row["Volume"] == "-"
for code in codes:
    datafile = './googlefinance/' + code + '-2015.csv'
    print "Downloading %s ..." % (datafile)
    # googlefinance.download_daily_bars(code, 2015, datafile)
    feed.addBarsFromCSV(code, datafile, timezone=None, rowFilter=rowFilter)

class DonchianStrategyOptimizer(TradingSystem):
    def __init__(self, feed, entrySize, exitSize, riskFactor):
        broker = backtesting.Broker(10000, feed, backtesting.FixedPerTrade(10))
        super(DonchianStrategyOptimizer, self).__init__(feed=feed, broker=broker, tradingAlgorithm=DonchianTradingAlgorithm(feed, broker, entrySize, exitSize, riskFactor), debugMode=False)

entrySize = range(10, 60)
exitSize = range(5, 30)
riskFactor = [float(x)/100 for x in range(1, 11)]

# entrySize = range(15, 40)
# exitSize = range(8, 25)
# riskFactor = [float(x)/100 for x in range(1, 11)]

result = local.run(DonchianStrategyOptimizer, feed, itertools.product(entrySize, exitSize, riskFactor), workerCount=6)
print "Best result is R$%s with parameters %s" %(result.getResult(), result.getParameters())
Esempio n. 11
0
    time_estimator(outparams)
    return itertools.product(instruments, cash, shortlen, longlen, a1, a3)


# feed, instruments, cash, shortlen, longlen, sha1, sha2, sha3, la1, la2, la3)


def parameters_generator():
    instrument = ["dia"]
    entrySMA = range(150, 251)
    exitSMA = range(5, 16)
    rsiPeriod = range(2, 11)
    overBoughtThreshold = range(75, 96)
    overSoldThreshold = range(5, 26)
    return itertools.product(instrument, entrySMA, exitSMA, rsiPeriod,
                             overBoughtThreshold, overSoldThreshold)


# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    instruments = ['JCI']
    # Load the feed from the CSV files.
    feed = daq.build_stock_feed(instruments, (2006, 2011))

    # local.run(strategies.EMACrossover, feed,
    #           EMACrossoverParams(instruments), workerCount=None)

    local.run(strategies.SLTRIXCrossover,
              feed,
              SLTRIXCrossoverParams(instruments),
              workerCount=None)
Esempio n. 12
0
# Source: http://gbeced.github.io/pyalgotrade/docs/v0.17/html/tutorial.html#optimizing
# Accessed: 06/10/16 0520Z

import itertools
from pyalgotrade.optimizer import local
from pyalgotrade.barfeed import yahoofeed
import rsi2


def parameters_generator():
    instrument = ["dia"]
    entrySMA = range(150, 251)
    exitSMA = range(5, 16)
    rsiPeriod = range(2, 11)
    overBoughtThreshold = range(75, 96)
    overSoldThreshold = range(5, 26)
    return itertools.product(instrument, entrySMA, exitSMA, rsiPeriod, overBoughtThreshold, overSoldThreshold)


# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Load the feed from the CSV files.
    feed = yahoofeed.Feed()
    feed.addBarsFromCSV("dia", "dia-2009.csv")
    feed.addBarsFromCSV("dia", "dia-2010.csv")
    feed.addBarsFromCSV("dia", "dia-2011.csv")

    local.run(rsi2.RSI2, feed, parameters_generator())
Esempio n. 13
0
def main():
    feed = csvfeed.GenericBarFeed(frequency=Frequency.MINUTE)
    feed.addBarsFromCSV("BTC", "sampledata.csv")

    # Plot the strategy.
    local.run(Accumulator, feed, parameters_generator())
Esempio n. 14
0
                            All rights reserved.
*******************************************************************************
"""
from pyalgotrade.optimizer import local
from pyalgotrade.barfeed import sina_feed as sf
import itertools
import os
from samples.statstical import ArimaGarch
import logging


def param_generator():
    instrument = ["FG0"]
    # window = range(250, 888)
    window = range(500, 888)
    # window = [300, 400, 500, 600, 700, 800, 888]
    return itertools.product(instrument, window)


if __name__ == '__main__':
    instrument = "FG0"
    feed = sf.Feed()
    csv_path = os.path.abspath(
        '../histdata/commodity') + '/' + instrument + '.csv'
    # feed = sf.Feed(frequency=bar.Frequency.MINUTE)
    feed = sf.Feed()
    feed.addBarsFromCSV(instrument, csv_path)
    a = param_generator()
    local.run(ArimaGarch, feed, param_generator())
Esempio n. 15
0
                             tradingAlgorithm=DonchianTradingAlgorithm(
                                 feed, broker, entrySize, exitSize,
                                 riskFactor),
                             debugMode=False)


entrySize = range(10, 60)
exitSize = range(5, 30)
riskFactor = [float(x) / 100 for x in range(1, 11)]

# entrySize = range(15, 40)
# exitSize = range(8, 25)
# riskFactor = [float(x)/100 for x in range(1, 11)]

result = local.run(DonchianStrategyOptimizer,
                   feed,
                   itertools.product(entrySize, exitSize, riskFactor),
                   workerCount=6)
print "Best result is R$%s with parameters %s" % (result.getResult(),
                                                  result.getParameters())


##########################################################
#######SMA
##########################################################
class SMAStrategyOptimizer(TradingSystem):
    def __init__(self, feed, longsize, shortsize, riskfactor):
        broker = backtesting.Broker(10000, feed, backtesting.FixedPerTrade(10))
        super(SMAStrategyOptimizer,
              self).__init__(feed=feed,
                             broker=broker,
                             tradingAlgorithm=SMATradingAlgorithm(
Esempio n. 16
0
import itertools
import utility.windutility as wu
from utility import dataframefeed
from pyalgotrade import bar
from pyalgotrade.optimizer import local
from strategy import singleMA

instruments = ['000001.SH']
fromDate = '20000101'
toDate = '20160314'
frequency = bar.Frequency.DAY
feed = dataframefeed.Feed()
maPeriod = xrange(5,120)

for instrument in instruments:
    data = wu.wsd(instrument, 'open, high, low, close, volume, adjfactor', fromDate, toDate)
    data['adjclose'] = data['close'] * data['adjfactor'] / data['adjfactor'][-1]
    feed.addBarsFromDataFrame(instrument, data)


def parameters_generator():
    return itertools.product(instruments, maPeriod)

if __name__ == '__main__':
    local.run(singleMA.SingleMA, feed, parameters_generator())


Esempio n. 17
0
import RSIpietro


def parameters_generator():
    instrument = ["orcl"]
    entrySMA = range(150, 251)
    exitSMA = range(5, 16)
    rsiPeriod = range(2, 11)
    overBoughtThreshold = range(75, 96)
    overSoldThreshold = range(5, 26)
    return itertools.product(instrument, entrySMA, exitSMA, rsiPeriod, overBoughtThreshold, overSoldThreshold)


# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Load the feed from the CSV files.
    feed = yahoofeed.Feed()
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2000.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2001.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2002.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2003.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2004.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2005.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2006.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2007.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2008.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2009.csv")
    feed.addBarsFromCSV("orcl", "C:\\Users\\Spe\\PycharmProjects\\AlgoPietro\\algoPackage\\data\\orcl-2010.csv")

    local.run(RSIpietro.RSIpietro, feed, parameters_generator())
        self.info("Sell shares at $%.2f" % (tradeInfo.getPrice()))
        self.position = None

    def onBars(self, bars):
        if self.slowsma[-1] is None:
            return
        if self.position is None:
            if self.fastsma[-1] > self.slowsma[-1]:
                self.position = self.enterLong(self.instrument, 10, True)
        elif self.fastsma[-1] < self.slowsma[
                -1] and not self.position.exitActive():
            self.position.exitMarket()


# Create Parameter Combinations using itertools
def parameters():
    nfast = (5, 10, 15, 20, 25, 30)
    nslow = (20, 25, 30, 40, 50, 100)
    return itertools.product(nfast, nslow)


# Use optimizer from pyalgotrade
# If__name__ == '__main__': only needed for Windows
if __name__ == '__main__':
    instruments = ["NIFTY"]
    # Data Reading
    feed = csvfeed.GenericBarFeed(bar.Frequency.DAY)
    feed.addBarsFromCSV(instruments[0], "Data//NIFTY.csv")
    # Strategy Optimization
    local.run(MAStrategy, feed, parameters())
Esempio n. 19
0
#############################################don't change ############################33
from pyalgotrade.cn import csvfeed
from pyalgotrade.barfeed import yahoofeed
from pyalgotrade.tools import yahoofinance

barfeed = csvfeed.Feed(frequency)
barfeed.setDateTimeFormat('%Y-%m-%d %H:%M:%S')

# feed = csvfeed.Feed(frequency)
#feed = yahoofeed.Feed()
#feed.addBarsFromCSV("dia",'gdx-2009-yahoofinance.csv')
barfeed.loadBars(instrument, market, fromDate, toDate, filepath)

if __name__ == "__main__":

    local.run(thrSMA.thrSMA, barfeed, parameters_generator())
"""

    
    #############################################path set ############################33 
    import os
    if frequency == bar.Frequency.MINUTE:
        path = os.path.join('..', 'histdata', 'minute')
    elif frequency == bar.Frequency.DAY:
        path = os.path.join('..', 'histdata', 'day')
    filepath = os.path.join(path, instrument + market + ".csv")
    
    
    #############################################don't change ############################33  
    from pyalgotrade.cn.csvfeed import Feed
    
Esempio n. 20
0
# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Config params

    config = {
      'user': '******',
      'password': '******',
      'host': '127.0.0.1',
      'database': 'ibex35',
      'raise_on_warnings': True,
    }

    logger.log_format = "[%(levelname)s] %(message)s"

    startDate = datetime.date(2001, 05, 24)
    endDate = datetime.date(2015, 12, 21)

    instrument = 'GAS.MC'

    feed = None

    if DBFEED:
        feed = dbfeed.DbFeed(config, [], 100, startDate, endDate)
        feed.registerInstrument(instrument)
    else:
        feed = yahoofeed.Feed()
        feed.sanitizeBars(True)
        feed.addBarsFromCSV(instrument, instrument + ".csv")

    local.run(MyTaLibStrategy, feed, parameters_generator())
Esempio n. 21
0
# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Config params

    config = {
        'user': '******',
        'password': '******',
        'host': '127.0.0.1',
        'database': 'ibex35',
        'raise_on_warnings': True,
    }

    logger.log_format = "[%(levelname)s] %(message)s"

    startDate = datetime.date(2001, 05, 24)
    endDate = datetime.date(2015, 12, 21)

    instrument = 'GAS.MC'

    feed = None

    if DBFEED:
        feed = dbfeed.DbFeed(config, [], 100, startDate, endDate)
        feed.registerInstrument(instrument)
    else:
        feed = yahoofeed.Feed()
        feed.sanitizeBars(True)
        feed.addBarsFromCSV(instrument, instrument + ".csv")

    local.run(MyBasicStrategy, feed, parameters_generator())
Esempio n. 22
0
    #               f. Exit wjen moving average crosses back (regardless of RSI value)
    #Important Note: maximum value for fastperiod must remain less than the #minimum value for the slowperiod

    #we want to predict the S&P500 (^GSPC index)
    instrument = ['AAPL']

    fpath = 'C:/Users/Eric/Documents/PyBlockchainProj/'
    ftype = '.csv'
    fname = fpath + instrument[0] + ftype

    #Important Note: maximum value for fastperiod must remain less than the
    #minimum value for the slowperiod
    slowPeriod = (50, 60, 80, 100, 150, 170, 200)
    fastPeriod = (5, 10, 20, 30, 40)
    rsiPeriod = (2, 3, 5, 7, 10, 14)
    oversoldThreshold = (10, 20, 30)
    overboughtThreshold = (70, 80, 90)

    #===========================================================================#

    #we can generate all the permutations
    all = itertools.product(instrument, fastPeriod, slowPeriod, rsiPeriod,
                            overboughtThreshold, oversoldThreshold)

    #the data is in the CSV file (one row per day)
    feed = csvfeed.GenericBarFeed(bar.Frequency.DAY)
    feed.addBarsFromCSV(instrument[0], fname)

    #we can run the optimization parallel
    local.run(RSIMovingAverageStrategy, feed, all)
Esempio n. 23
0
    stddev=list(range(20,35))
    return itertools.product(instrument,longLine,shortLine,bollingerLenth,stddev)

if __name__=='__main__':
    instrument='002099'
    stockcode='002099'
    date=['2016-02-29','2016-03-02','2016-03-11']
    path = "../histdata/tick/bak/"

   # barfeed = tickcsvfeed.TickBarFeed(bar.Frequency.SECOND)
    barfeed=GenericBarFeed(bar.Frequency.SECOND)
    for d in date:
        filepath = path +'stock_'+ stockcode + "_"+d+".csv"
        barfeed.addBarsFromCSV(instrument, filepath)
    barfeed.setDateTimeFormat('%Y-%m-%d %H:%M:%S')
    local.run(bollinger_band,barfeed,parameters_generator())














Esempio n. 24
0
 def testFailingStrategy(self):
     barFeed = yahoofeed.Feed()
     instrument = "orcl"
     barFeed.addBarsFromCSV(instrument, common.get_data_file_path("orcl-2000-yahoofinance.csv"))
     res = local.run(FailingStrategy, barFeed, parameters_generator(instrument, 5, 100), logLevel=logging.DEBUG)
     self.assertIsNone(res)
import itertools
from pyalgotrade.optimizer import local
from pyalgotrade.barfeed import yahoofeed
import rsi2


def parameters_generator():
    instrument = ["dia"]
    entrySMA = range(150, 251)
    exitSMA = range(5, 16)
    rsiPeriod = range(2, 11)
    overBoughtThreshold = range(75, 96)
    overSoldThreshold = range(5, 26)
    return itertools.product(instrument, entrySMA, exitSMA, rsiPeriod, overBoughtThreshold, overSoldThreshold)


# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Load the feed from the CSV files.
    feed = yahoofeed.Feed()
    feed.addBarsFromCSV("dia", "dia-2009.csv")
    feed.addBarsFromCSV("dia", "dia-2010.csv")
    feed.addBarsFromCSV("dia", "dia-2011.csv")

    local.run(rsi2.RSI2, feed, parameters_generator())


    
Esempio n. 26
0
import itertools
from pyalgotrade.optimizer import local
from pyalgotrade.barfeed import yahoofeed
from pyalgotrade.tools import yahoofinance
from my_sma_crossover import *

def parameters_generator():
    instrument = ["ivv"]
    entrySMA = range(5, 20)
    exitSMA = range(5, 20)
    return itertools.product(instrument, entrySMA, exitSMA)

# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Download the bars.
    feed = yahoofinance.build_feed(["ivv"], 2008, 2009, ".")
    local.run(SMACrossOver2, feed, parameters_generator())
    def enterLongSignal(self, bar):
        return bar.getClose() > self.__entrySMA[-1] and self.__rsi[-1] <= self.__overSoldThreshold

    def exitLongSignal(self, bar):
        return bar.getClose() > self.__exitSMA[-1]

    def enterShortSignal(self, bar):
        return bar.getClose() < self.__entrySMA[-1] and self.__rsi[-1] >= self.__overBoughtThreshold

    def exitShortSignal(self, bar):
        return bar.getClose() < self.__exitSMA[-1]


def parameters_generator():
    entrySMA = range(150, 251)
    exitSMA = range(5, 16)
    rsiPeriod = range(2, 11)
    overBoughtThreshold = range(75, 96)
    overSoldThreshold = range(5, 26)
    return itertools.product(entrySMA, exitSMA, rsiPeriod, overBoughtThreshold, overSoldThreshold)

# The if __name__ == '__main__' part is necessary if running on Windows.
if __name__ == '__main__':
    # Load the feed from the CSV files.
    feed = yahoofeed.Feed()
    feed.addBarsFromCSV("dia", "dia-2009.csv")
    feed.addBarsFromCSV("dia", "dia-2010.csv")
    feed.addBarsFromCSV("dia", "dia-2011.csv")

    local.run(MyStrategy, feed, parameters_generator())
Esempio n. 28
0
import itertools
import utility.windutility as wu
from utility import dataframefeed
from pyalgotrade import bar
from pyalgotrade.optimizer import local
from strategy import singleMA

instruments = ['000001.SH']
fromDate = '20000101'
toDate = '20160314'
frequency = bar.Frequency.DAY
feed = dataframefeed.Feed()
maPeriod = xrange(5, 120)

for instrument in instruments:
    data = wu.wsd(instrument, 'open, high, low, close, volume, adjfactor',
                  fromDate, toDate)
    data[
        'adjclose'] = data['close'] * data['adjfactor'] / data['adjfactor'][-1]
    feed.addBarsFromDataFrame(instrument, data)


def parameters_generator():
    return itertools.product(instruments, maPeriod)


if __name__ == '__main__':
    local.run(singleMA.SingleMA, feed, parameters_generator())