
有许多小伙伴有了精熟的来去政策,却莫得好的仓位示寂的谬误,今天就来教一下公共,ptrade中仓位如何示寂?
著述相比长,先点个退换哦!
如下有一个均线政策,买入卖出顺次如下:
现时价高于5日均价或20日则全仓买入;现时价同期低于5日和20日则全仓卖出。
其中initialize函数是政策启动化的时候由Ptrade的引擎自动调用一次,何况传入了context变量,咱们面前还没灵验到这个变量;
handle_data函数亦然由Ptrade的引擎,在开盘的本事段内,每隔一定频率自动调用一次(比如每分钟调用一次),并传入了两个变量context和data,context不错手脚是一个环境变量,咱们也用来赢得了账号的可用现款,data存放的是现时本事的各个股票行情数据,比如开盘价、收盘价等!
伸开剩余76%“def handle_data(context, data): ”是函数的声名,戒备临了有个英文的冒号,函数声名换行后便是这个函数的具体代码逻辑,戒备前边有几个空格,这个空格数目是斡旋的,乐动手机app 比如2个空格,那么其余在归拢个层级的代码前边应该都是2个空格,看起来若是对皆的;
雷同,关于要求判断"if"、"elif"这么的语句后头随着要求,要求临了也有一个英文的冒号,换行后雷同是要求得志后需要践诺的逻辑,归拢个层级的逻辑前边的空格数目也需要一致,看起来也若是对皆的。
前边带上"g."声名的变量,是全局的变量,在政策的扫数函数中都不错用,开云体育如果莫得带上"g." 那么只好在声名场合的函数中使用。虽然只好在现时函数中变量声名之后才气使用,总不可还莫得变量就平直用吧。
增多仓位示寂的需求
作为一个“资深韭菜”,如何看全仓买入和全仓卖出都有点“虎”了,咱们不错左证教会完善如下:
在尾盘14:50分的时候进行来去;
现时价高于5日均价何况高于20日均线则全仓买入;
现时价高于5日均价好像高于20日均线则半仓买入好像卖出半仓;
现时价同期低于5日和20日则清仓。
当然讲话扫尾买入卖出顺次
拿到以前5日的收盘价的数据(由于尾盘来去,是以需要算上现时价钱作为今天收盘价);
求以前5日的平均收盘价(由于尾盘来去,是以需要算上现时价钱作为今天收盘价);
拿到以前20日的收盘价数据(由于尾盘来去,是以需要算上现时价钱作为今天收盘价);
求以前20日的平均收盘价(由于尾盘来去,是以需要算上现时价钱作为今天收盘价);
拿到现时价钱
现时价高于5日均价和20日均价则全仓买入;
现时价高于5日均价好像20日均价则半仓买入或卖出;
同期低于5日和20日则清仓。
代码实操
前边说了一大堆,当今咱们来展示一下代码如何扫尾:
谬误点分解
context.current_dt:使用context变量得到现时的本事,这里从context中拿到current_dt属性赢得到现时本事,平直记取就行;
current_dt.hour和current_dt.minute永诀拿到现时本事的"小时"和"分钟",因为context.current_dt这个本事现实也曾赋值给了current_dt变量,是以不错这么拿"小时"和"分钟";
get_history这个接口默许不包含今日的数据,是以需要先拿前4天,后头再皆集今日价钱通筹办平均;
(df1['close'].sum() + curr_price) / 5 这里的sum暗意"乞降"的真理,先求出前4天的和,再加上现时价钱,通盘除以5便是5天(包含今日)的平均收盘价了。
order_target_value这个接口是Ptrade提供的,调理股票抓仓市值到指定的价值;context.portfolio.portfolio_value暗意赢适现时账户的总价值,包括酿成股票市值的和不错现款的总额;
临了阿谁"else" 一般是放在要求判断的临了,暗意其它情况,戒备后头有个英文冒号,这个语句后头就不可跟要求了,因为也曾是抹杀上头的扫数要求之后的其它情况了,便是不得志上头两个"if"和"elif"之后的其它情况。
回测驱散演示
上图不错看到,即使如斯轻便的一个政策,在3个月的回测中,遵守雷同惊东说念主。
政策收益:20.6%、最大回测:7.60%、夏普比率:2.45、年化收益率:103.68%、胜率:50%、盈亏比:456.39%。
接待退换开云体育(kaiyun)官方网站,期待下次碰面!
发布于:四川省亚搏app官方网站