以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  求把python版本的银行股轮动策略改写成普通金字塔策略  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=174046)

--  作者:qf7171
--  发布时间:2020/1/18 16:06:25
--  求把python版本的银行股轮动策略改写成普通金字塔策略
    #板块偏离度定在0.5%
    g.inter = 0.005
    
# 每天交易前调用
def before_trading_start(context):
#每天开盘前,抓取“中、农、工、建”昨天收盘价格
    g.df_last = history(1, unit=\'1d\', field=\'close\', security_list=bank_stocks, df=False, skip_paused=True, fq=\'pre\')
  
# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):
   
    raito = []
    
    for code in bank_stocks:
        raito.append( data[code].close / g.df_last[code][-1] )
#rotio就是每分钟收盘价与昨日收盘价的比值,也就是实时涨幅
        #某只银行股现在价格与昨天收盘价比较
    if not context.portfolio.positions.keys():
#当没有持仓时
        if max(raito) - min(raito) > g.inter:
#最大涨幅大于最小涨幅0.5%以上的时候,买入最小涨幅股票
            min_index = raito.index(min(raito))
            order_value(bank_stocks[min_index], context.portfolio.total_value)
            log.info("空仓买入 %s",bank_stocks[min_index])
    else:
#当有持仓时
        code = context.portfolio.positions.keys()[0]
    
        index = bank_stocks.index(code)
#index就是持仓股票的股票代码
        if raito[index] - min(raito) > g.inter:
#持仓股票涨幅大于最小涨幅0.5%以上时,卖出持仓股票,买入最小涨幅股票
            order_target(code, 0)
            log.info("卖出 %s",code)
            min_index = raito.index(min(raito))
            order_value(bank_stocks[min_index], context.portfolio.total_value)
            log.info("调仓买入 %s",bank_stocks[min_index])

--  作者:qf7171
--  发布时间:2020/1/18 16:09:02
--  
我想在普通金字塔(也就是PEL语言的金字塔里)回测以上Python策略,请问如何改写呢?求各位高手帮忙
--  作者:yukizzc
--  发布时间:2020/1/20 11:15:29
--  
代码无法实现,要配合股票池和后台程序来做