欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 如何修改这个模型

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2985人关注过本帖树形打印复制链接

主题:如何修改这个模型

帅哥哟,离线,有人找我吗?
shensane
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2014/7/21 11:15:47
如何修改这个模型  发帖心情 Post By:2018/11/16 14:38:12 [只看该作者]

# 本Python代码主要用于策略交易
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *
import time
# 参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现)
#def parameter():
# input_par("myvalues1",5,1,20,1)
# input_par("myvalues2",10,1,20,1)


# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    # 在context中保存全局变量
    context.s = get_blocks ('自选股',1)
    context.n = 7
    # print("策略启动") #调试打印输出
    

# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    pass


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    # 开始编写你的主要的算法逻辑。
    
    #使用buy_open、sell_close等方法下单
    #下单示例:
    #buy_open(context.s1, "Market", volume = 100) # 市价开多
    #buy_open(context.s1, "Limit", 25.45, 100) # 限价开多
    #print('开始')
    #print(time.asctime( time.localtime(time.time()) ))
    ZF = {}
    for i in context.s:
        price_now = get_dynainf(i,7)
        price_last = get_dynainf(i,62)
        
        ZF[i] = (price_now - price_last)/price_last
    df = sorted(ZF.items(),key = lambda x:x[1],reverse=True)
    init_num = 0
    for j in df:
        if init_num >= context.n:
            break
        code = j[0]
        cond = get_indicator(code,'AAAA','ZB','','1m',1500)
        if cond[-1]:
            portfolio=get_portfolio (code, 0)
            if portfolio.buy_quantity == 0:
                buy_open(code, "Market", volume = 1) 
            init_num = init_num+1
        else:
            break
    
    df_short = df[::-1]
    init_num = 0
    for j in df_short:
        if init_num >= context.n:
            break
        code = j[0]
        cond = get_indicator(code,'AAAA','ZB','','1m',1500)
        if cond[-1]:
            portfolio=get_portfolio (code, 0)
            if portfolio.sell_quantity == 0:
                sell_open(code, "Market", volume = 1) 
            init_num = init_num+1
        else:
            break
    #get_indicator('sh600000','my_test','ma5','30','1d',10)
    
    #print('结束')
    #print(time.asctime( time.localtime(time.time()) ))
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    pass
    
    
# order_status当委托下单,成交,撤单等与下单有关的动作时,该方法就会被调用。---(选择实现)
#def order_status(context,order):
# pass

# order_action当查询交易接口信息时返回的通知---(选择实现)
#def order_action(context,type, account, datas)
# pass

# exit函数会在测评结束或者停止策略运行时会被调用。---(选择实现)
#def exit(context):
# pass

 回到顶部
帅哥哟,离线,有人找我吗?
shensane
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2014/7/21 11:15:47
  发帖心情 Post By:2018/11/16 14:39:43 [只看该作者]

能不能帮我把涨幅排序改成按照指标ZB大小排序,进场是排序多头前四,而且ZB=1,做空是最小的后四位,且ZB=-1
0000 2018/11/16 11:28:32
不用检查账户和持仓,
0000 2018/11/16 11:32:01
只要符合条件进场是排序多头前四,而且ZB=1,做空是最小的后四位,且ZB=-1

 回到顶部
帅哥哟,离线,有人找我吗?
shensane
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2014/7/21 11:15:47
  发帖心情 Post By:2018/11/16 14:41:19 [只看该作者]

0000(372566119) 2018/11/16 14:18:27
ZB就是这里的值cond = get_indicator(code,'AAAA','ZB','','1m',1500)
0000(372566119) 2018/11/16 14:19:39
ZB就是我自编的一个指标AAAA在一分钟周期下的一个变动的数值

 回到顶部
帅哥哟,离线,有人找我吗?
shensane
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:119 积分:0 威望:0 精华:0 注册:2014/7/21 11:15:47
  发帖心情 Post By:2018/11/16 15:19:57 [只看该作者]

?????????????????????????

 回到顶部