Exemple #1
0
def run_strategy(paras):
    feed = dataframefeed.Feed()
    feed.addBarsFromDataFrame(instrument, dat)
    strat = singleMA.SingleMA(feed, instrument, paras, initialCash)

    # attach analyzersgc
    returnsAnalyzer = returns.Returns()
    strat.attachAnalyzer(returnsAnalyzer)
    drawdownAnalyzer = drawdown.DrawDown()
    strat.attachAnalyzer(drawdownAnalyzer)
    sharpeRatioAnalyzer = sharpe.SharpeRatio()
    strat.attachAnalyzer(sharpeRatioAnalyzer)
    tradeAnalyzer = trades.Trades()
    strat.attachAnalyzer(tradeAnalyzer)

    strat.run()
    print "Final portfolio value: $%.2f with paras %d" % (
        strat.getBroker().getEquity(), paras)
    return {
        'returns':
        returnsAnalyzer.getCumulativeReturns()[-1],
        'drawdown':
        drawdownAnalyzer.getMaxDrawDown(),
        'longestDrawDownDuration':
        drawdownAnalyzer.getLongestDrawDownDuration(),
        'sr':
        sharpeRatioAnalyzer.getSharpeRatio(0.03),
        'total trades':
        tradeAnalyzer.getCount(),
        'win':
        tradeAnalyzer.getProfitableCount(),
        'lose':
        tradeAnalyzer.getUnprofitableCount(),
        'average win profit':
        tradeAnalyzer.getPositiveReturns().mean(),
        'average lose loss':
        tradeAnalyzer.getNegativeReturns().mean(),
        'wining ratio':
        tradeAnalyzer.getProfitableCount() / tradeAnalyzer.getCount(),
        'odds':
        -tradeAnalyzer.getPositiveReturns().mean() /
        tradeAnalyzer.getNegativeReturns().mean()
    }
    import utility.windutility as wu
    from utility import dataframefeed
    from pyalgotrade.stratanalyzer import returns

    strat = singleMA
    instrument = '000001.SH'
    fromDate = '20160101'
    toDate = '20160727'
    frequency = bar.Frequency.MINUTE
    paras = [19]
    plot = True

    data = wu.wsi(instrument, 'open, high, low, close, volume', fromDate,
                  toDate)
    # data['adjclose'] = data['close'] * data['adjfactor'] / data['adjfactor'][-1]
    feed = dataframefeed.Feed()
    feed.addBarsFromDataFrame(instrument, data)

    strat = strat(feed, instrument, *paras)

    returnsAnalyzer = returns.Returns()
    strat.attachAnalyzer(returnsAnalyzer)

    if plot:
        # plt = plotter.StrategyPlotter(strat, True, True, True)
        # ma = strat.getMA()
        # plt.getInstrumentSubplot('indicator').addDataSeries('ma', ma)
        plt = plotter.StrategyPlotter(strat)
        # plt.getInstrumentSubplot(instrument).addDataSeries('ma', strat.getMA())
        plt.getOrCreateSubplot('returns').addDataSeries(
            'simple return', returnsAnalyzer.getReturns())