量化交易开通攻略与教程:PTrade编写精致MA策略
发布时间:17小时前阅读:23
今天,我要带你做一件更酷的事——把你的炒股经验变成自动运行的量化策略!完全零代码基础,只需要带上你在A股市场摸爬滚打的经验,就能在Ptrade上打造属于你的"自动印钞机"!
第一个买入卖出规则:
当前价高于5日均价或20日则全仓买入;
当前价同时低于5日和20日则全仓卖出。
自然语言实现买入卖出规则:
拿到过去5日的收盘价的数据;
求过去5日的平均收盘价;
拿到过去20日的收盘价数据;
求过去20日的平均收盘价;
拿到当前价格;
当前价高于5日均价或20日则全仓买入;
同时低于5日和20日则全仓卖出
使用Ptrade实现策略:
注意:#号后面表示针对下面的代码做的解释,不参与实际代码的运行,就是给看代码的人更容易看懂的,删除掉#号所在的那一行完全不影响策略的运行。
关键点解析:变量
“变量”可以理解成为了在程序中使用方便,我们常常给某个内容,某个结果,取个名字或者是代号,我们使用某个内容或者结果时,就可以直接使用这个变量。
给某个内容取个变量的方式如下:
这里就是给1取了个变量(代号)叫做“a”,后面需要使用这个1,就可以直接使用“a”。
在上面初始化函数initialize中我们定义了变量:g.stock,我们在当前handle_data函数中就用到了,比如:
这里之所以能用这个变量是因为申明变量时使用了"g.",使用“g.”申明的变量是全局的变量,在所有函数中都可以用。
相反这里通过get_history函数获取了5日的收盘价的历史数据,使用 “=”传给了变量"df1",这里的“df1”就不是一个非全局变量,那么这种非全局变量就是在哪里申明,也就只能在哪里使用,比如这里是在函数handle_data中申明,那么也就只能在这个函数里面使用了。
关键点解析:获取历史收盘价数据
需要实现这个策略的关键是我们需要有办法可以拿到过去5天,过去20天的历史收盘价数据。那么作为一个成熟的量化交易工具Ptrade,它应该提供这样的方法,在python语言中,我们把实现不同功能的的方法,叫做“函数”,所以为什么我们上面提到的initialize和handle_data我们都叫“函数”。
我们可以在Ptrade软件中提供了一堆方便我们使用的不同功能的函数,其中就包含了获取历史行情数据的,在Ptrade中把它提供给我们的这些函数叫做"接口"。我们可以在帮助模块看到提供它提供给我们使用的所有“接口”。
根据文档,我们目前使用如下:
这里就是获取了g.stock代表的股票“600570.SS”,最近的5根k线,'1d'表示“日k线”,'close'表示‘收盘价’,如果既想要收盘价也想要开盘价,可以使用如下:
这里使用了['open','close'],这里中括号括起来是数组的意思,其实不用关注,只需要知道想要多个指标数据,就中括号括起来就行。
这里通过Ptrade提供的获取历史行情数据的接口get_history获取了最近的5日K线数据并且给这个数据取了一个变量(代号)叫“df1”,后面如果想使用这个数据,就可以直接使用"df1"了。
关键点解析:求开盘价的平均值
如上我们通过提供的get_history接口获取到了5日的收盘价数据,我们如何计算平均值呢?
df1变量中代表的数据有可能有多种,比如开盘价(open),收盘价(close),我们要获取收盘价就需要使用df1['close'],当然因为获取的是多天的数据,所以这里的df1['close']会有5个值,求平均直接在后面跟上.mean()即可。这里的mean函数就是求平均的意思,然后我们将5日的平均值赋值给了变量avg5(这里后面取变量(代号)后面都会说赋值,这样说法比较规范一些)。
关键点解析:获取股票当前价格
这里直接使用“data“这个变量获取当前股票'g.stock'的'close'收盘价,是因为,当前代码所在的函数,本身就由Ptrade这个工具把data传进去了,所以可以直接使用,如下:
因为data中包含多个股票的数据,所以想拿到g.stock这个股票的数据就需要使用data[g.stock],又由于股票的数据肯定不仅仅只是收盘价'close',所以想只拿到收盘价就需要进一步data[g.stock]['close'],这样一层层的获取就拿到了当前股票的当前价格了。
注意:这里的g.stock没有被单引号括起来,是因为它是变量,‘close’被单引号括起来,是因为它不是变量,只是一个字符串的内容,字符串可以理解成就是一串字母或者数字。假如:g.stock也用单引号括起来变成了'g.stock'那这个就不是变量代表的内容,而变成了'g.stock'这个字符串内容了。
关键点解析:判断和比较
我们需要比较和判断如下两个条件:
如果当前价高于5日均价或20日则全仓买入;
如果同时低于5日和20日则全仓卖出。
在python程序中"如果"就用"if" 表示,至于"eli"的意思是排除上面的条件之后的如果。比如:如果语文成绩小于60表示不及格,如果小于80表示中等,如果大于80则表示优秀,这里的第一个如果就用"if"表示,第二个如果其实是大于等于60并且小于80,和第一个如果是有区别的,这里就是用'elif'表示,使用python代码就是如下:
同理,我们交易策略中的两个条件代码如下:
其中多个条件之间的and表示并且,or表示或者,是固定单词写法,记住即可。
总结
关注"叩富问财"公众号,回复"资深吴经理",联系专属客户经理开通量化交易权限!
立即行动:打开微信,搜索"叩富问财",在对话框中输入"资深吴经理",开启你的量化交易之旅!
温馨提示:投资有风险,选择需谨慎。
下一篇资讯:
暂无下一篇
-
@所有人,2026春节A股/港股/港股通休市安排一览~
2026-02-12 11:38
-
开启AI炒股:华泰证券AI涨乐APP怎么使用?
2026-02-12 11:38
-
满仓没钱追新机会?一个融资融券工具轻松搞定~
2026-02-12 11:38


问一问

+微信
分享该文章
