以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 如何修改这个模型 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=166530) |
-- 作者:shensane -- 发布时间: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 -- 发布时间: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 -- 发布时间: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 -- 发布时间:2018/11/16 15:19:57 -- ????????????????????????? |