Exemplo n.º 1
0
def main(start_date,
         end_date,
         maxLen=DIVERGENCE_DETECT_DIF_LIMIT_BAR_NUM,
         peried='D'):
    '''
    count: 采用过去count个bar内极值的最大值作为参考。
    '''
    all_df = get_stock_pool(start_date, end_date)
    codes = list(set(all_df.code.tolist()))
    strategys = dict()
    for code in codes:
        feed = get_feed(all_df, code, start_date, end_date, peried)
        if feed is None: return False
        brk = gen_broker(feed)
        strategys[code] = MACDStrategy(code, feed, brk, SHORT, LONG, MID,
                                       maxLen)
        # Attach a returns analyzers to the strategy
        returnsAnalyzer = returns.Returns()
        strategys[code].attachAnalyzer(returnsAnalyzer)
        # Attach a sharpe ratio analyzers to the strategy
        sharpeRatioAnalyzer = sharpe.SharpeRatio()
        strategys[code].attachAnalyzer(sharpeRatioAnalyzer)
        # Attach the plotter to the strategy
        plt = plotter.StrategyPlotter(strategys[code], True, True, True)
        plt.getOrCreateSubplot("returns").addDataSeries(
            "Simple returns", returnsAnalyzer.getReturns())
        plt.getOrCreateSubplot("Macd").addDataSeries("dif",
                                                     strategys[code].getDif())
        plt.getOrCreateSubplot("Macd").addDataSeries("dea",
                                                     strategys[code].getDea())
        # Run Strategy
        strategys[code].run()
        strategys[code].info("Final portfolio value: $%.2f" %
                             strategys[code].getResult())
        plt.plot()
Exemplo n.º 2
0
 def __init__(self, total_risk, instruments, feed, cash, fastEMA, slowEMA,
              signalEMA, maxLen, stockNum, duaration):
     self.__total_risk = total_risk
     self.__total_num = stockNum
     self.__duaration = duaration
     brk = gen_broker(feed, cash * stockNum)
     strategy.BacktestingStrategy.__init__(self, feed, brk)
     self.__instruments = instruments
     self.__high_dict = dict()
     self.__macd_dict = dict()
     self.__duaration_dict = dict()
     for instrument in instruments:
         self.__macd_dict[instrument] = Macd(instrument, feed[instrument],
                                             fastEMA, slowEMA, signalEMA,
                                             maxLen)
     self.setUseAdjustedValues(False)
Exemplo n.º 3
0
 def __init__(self, total_risk, instruments, feed, cash, fastEMA, slowEMA,
              signalEMA, maxLen, stockNum, duaration):
     self.total_risk = total_risk
     self.total_num = stockNum
     self.duaration = duaration
     strategy.BacktestingStrategy.__init__(
         self, feed, gen_broker(feed, cash * stockNum))
     self.instruments = instruments
     self.duaration_dict = dict()
     self.dealprice_dict = dict()
     self.high_dict = dict()
     self.add_count_dict = {}
     self.sma_dict = dict()
     self.macd_dict = dict()
     for instrument in instruments:
         self.sma_dict[instrument] = ma.SMA(
             feed[instrument].getPriceDataSeries(), duaration)
         self.macd_dict[instrument] = Macd(instrument, feed[instrument],
                                           fastEMA, slowEMA, signalEMA,
                                           maxLen)
     self.setUseAdjustedValues(False)