金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 1591|回复: 1

PYTHON不会,老师,这个核心的交易模块翻译一下,尤其是交易模块,我看不懂

[复制链接]

75

主题

191

帖子

201

积分

Rank: 4

等级: 专业版

注册:
2021-5-20
曾用名:
发表于 2022-3-13 09:50 | 显示全部楼层 |阅读模式
def market_open(context):

    #log.info('函数运行时间(market_open):'+str(context.current_dt.time()))

    for ins in g.instruments:

        if g.MappingReal[ins] != '':
            IndexFuture = g.MappingIndex[ins]
            RealFuture = g.MappingReal[ins]
            end_date = get_CCFX_end_date(RealFuture)
            if (context.current_dt.date() == end_date):
                return
            else:
                g.LastRealPrice[RealFuture] = attribute_history(RealFuture,1,'1d',['close'])['close'][-1]
                # 获取价格list
                #if g.StatusTimer[ins] == 0:
                g.PriceArray[IndexFuture] = attribute_history(IndexFuture,g.BackWindow+5,'1d',['close','open','high','low'])
               
                if len(g.PriceArray[IndexFuture]) < 1:
                    return
                else:
                    g.ClosePrice[ins] = g.PriceArray[IndexFuture]['close']
                    g.CurrentPrice[ins] = g.ClosePrice[ins][-1]
                    g.Price_DaysAgo[ins] = g.ClosePrice[ins][-g.BackWindow]
                    
                    close = np.array(g.PriceArray[IndexFuture]['close'])
                    high = np.array(g.PriceArray[IndexFuture]['high'])
                    low = np.array(g.PriceArray[IndexFuture]['low'])
                    g.ATR[IndexFuture] = talib.ATR(high,low,close, g.BackWindow)[-1]
                    
               
                    # 计算动量标记
                    if g.CurrentPrice[ins] > g.Price_DaysAgo[ins] :
                        g.Momentum[ins] = 1
                    elif g.CurrentPrice[ins] < g.Price_DaysAgo[ins] :
                        g.Momentum[ins] = -1
                    else:
                        g.Momentum[ins] = 0
                        
                    #判断交易信号:动量g.Momentum[ins] == 1多头,-1为空头
                    if  g.Momentum[ins] == 1 :
                        g.Signal[ins] = 1
                    elif g.Momentum[ins] == -1 :
                        g.Signal[ins] = -1
                    else:
                        g.Signal[ins] = 0
                    
                    
           
## 收盘后运行函数
def after_market_close(context):
    log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))
    # 得到当天所有成交记录
    trades = get_trades()
    for _trade in trades.values():
        log.info('成交记录:'+str(_trade))
    log.info('一天结束')
    log.info('##############################################################')
   
   
## 交易模块
def Trade(context):
   
    for ins in g.instruments:
        RealFuture = g.MappingReal[ins]
        if ins in g.Signal.keys() and RealFuture in g.LastRealPrice.keys():
        
            if g.Signal[ins] == 1 and context.portfolio.long_positions[RealFuture].total_amount == 0:
                if context.portfolio.long_positions[RealFuture].total_amount != 0:
                    log.info('空头有持仓:%s'%(RealFuture))
                order_target(RealFuture,0,side='short')
                order_target(RealFuture,g.TradeLots[RealFuture],side='long')
                g.HighPrice[RealFuture] = g.LastRealPrice[RealFuture]
                g.LowPrice[RealFuture] = False
                log.info('正常买多合约:%s'%(RealFuture))
        
   
            elif g.Signal[ins] == -1 and context.portfolio.short_positions[RealFuture].total_amount == 0:
                if context.portfolio.short_positions[RealFuture].total_amount != 0:
                    log.info('多头有持仓:%s'%(RealFuture))
                order_target(RealFuture,0,side ='long')
                order_target(RealFuture,g.TradeLots[RealFuture],side='short')
                g.LowPrice[RealFuture] = g.LastRealPrice[RealFuture]
                g.HighPrice[RealFuture] = False
                log.info('正常卖空合约:%s'%(RealFuture))




补充内容 (2022-3-13 09:51):
希望能翻译成pEL图表交易,把核心交易模块翻译下
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2022-3-13 09:56 | 显示全部楼层
这个最好有交易思路的说明,否者看代码是没有办法看懂的都
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 04:23 , Processed in 0.176380 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表