Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共2 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:解决python编程代码冗长的几点心得

1楼
滚雪球 发表于:2019/6/30 15:39:29
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代码下即使函数无参数也要加上括号,否则只代表执行这个函数,但并不会等待返回值,会导致返回值类型错误
共2 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.16406 s, 2 queries.