以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 解决python编程代码冗长的几点心得 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=170725) |
-- 作者:滚雪球 -- 发布时间:2019/6/30 15:39:29 -- 解决python编程代码冗长的几点心得 1. 不要像示范代码中一样把任何全局变量都在初始化的时候放到context对象中,这样会导致你每次使用一个变量都要在前面加一个context 最后满屏幕都是context,无比的啰嗦。更好的方式是Python自带的使用全局变量的方式,在函数外定义全局变量,函数内如果不更改它的值 可以直接使用,如果需要更改,在函数内用global声明 2. 使用自定义函数,将频繁调用的代码变成读写更方便的函数名,使用这个方法也可以比较方便的从其他平台移植程序 以下是示例: from PythonApi import * import time MaxPosition=10#最大持仓数量 SendOrderTime=0#发送订单的时间,用于超时撤单 ContractId=“SC1908” #合约代码 def init(context): pass def handle_bar(context): global SendOrderTime #SendOrderTime声明全局变量以便后面更改它 OrderNum=1 #局部变量每次买一张 if (A_BuyPosition()<MaxPosition): #MaxPosition使用了全局变量但并不需要更改,因此直接使用不需要声明 buy_open(ContractId, "Limit",Q_AskPrice(),OrderNum)#ContractId直接使用,对手价用Q_AskPrice()自定义函数获取 SendOrderTime=time.time() #在全局变量中记录下单时间,要更改必须用global声明 #取得买持函数 def A_BuyPosition(): return get_portfolio (ContractId, 2).buy_quantity #取得卖一价函数 def Q_AskPrice(): return get_dynainf(ContractId,34) 注意:在python代码下即使函数无参数也要加上括号,否则只代表执行这个函数,但并不会等待返回值,会导致返回值类型错误
|