VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 5
声望: 0

课程感觉还是默认对于编程已经有一定的系统认知了,对于新手看有很多逻辑断层点。在这希望大神能够帮忙解释一下这些基础点。
就拿最简单的双均线策略做例子:

class DoubleMaStrategy(CtaTemplate):
    author = "用Python的交易员"

    fast_window = 10
    slow_window = 20

    fast_ma0 = 0.0  # _问题1_: 写代码时,为什么要定义这四个参数为0?如果不定义有关系吗?是不是只是写代码的一个格式原因?
    fast_ma1 = 0.0

    slow_ma0 = 0.0
    slow_ma1 = 0.0

    parameters = ["fast_window", "slow_window"]  #_问题2_:为什么这里要创建参数列表和变量列表?我看视频说好像是因为在UI界面上会显示可以自己定义,这个交互是怎样形成的,逻辑是什么?为什么定义列表就能在UI界面上显示输入栏?
    variables = ["fast_ma0", "fast_ma1", "slow_ma0", "slow_ma1"]
def __init__(self, cta_engine, strategy_name, vt_symbol, setting):  #_问题3_:为什么需要传入的参数是这四个?如何理解底层的逻辑?
        """"""
        super().__init__(cta_engine, strategy_name, vt_symbol, setting)

        self.bg = BarGenerator(self.on_bar)
        self.am = ArrayManager()

比较初级的问题,主要对于编程没有一个具体的认知,只需要逻辑上搞懂就行。谢谢!

Member
avatar
加入于:
帖子: 1446
声望: 102
  1. 发起put_event调用
  2. 引擎查看策略对象的parameters和variables列表中的字段名称
  3. 通过getattr方法将策略对应字段的数值读取到一个字典里
  4. 推送该字典到图形界面,图形界面上的表格控件解析字典的key/value字段后显示
Member
avatar
加入于:
帖子: 1446
声望: 102

以上参数是由策略模板类CtaTemplate定义的,所以继承其实现的子类也都要这么定义

Member
avatar
加入于:
帖子: 5
声望: 0

明白了,感谢解释!

Member
avatar
加入于:
帖子: 124
声望: 4

问题一:variables可以不定义,因为是策略本身需要使用的中间变量,你在后来运算的时候临时写也可以,但是parameters需要定义,因为后面会引用遍历里面的参数,不定义就找不到,直接报错了。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】