PyTester
前言
使用Python代码编写策略, 容易阅读, 但是运行速度即不高
但Pytester却能达到C语言级别的运行速度
对比其它量化策略, 上来就一大堆初始化代码. Pytester去除难以理解的冗余部分,达到变态般的简洁
后面讲的一些方法, 目前(2022)为止, 互联网上Pytester是第一家使用
地址: www.pytester.com
安全
并非像其它平台, 策略加密传至服务器后台, 解密后再运行, 其实就是裸奔
Pytester策略代码跟根不会上传到服务器
自带策略
Pytester自带的展示策略,是搜罗全网的优秀算法. 和课本上经典算法的集合
会不断叠代进化,与时俱进
教程
双均策略
一行代码搞定
onTick = g.MA(10) - g.MA(30) #金叉买入,死叉卖出
g是什么玩意?
策略(strategy)的缩写成g
它可以取出指标:
用法 | 说明 |
---|---|
x=g.MA(N) | 均线 |
x = g.EMA(N) | 指数均线 |
x = g.K() | KDJ的K |
x = g.D() | KDJ的D |
dif, dem, macd = g.MACD() | MACD |
ma, up, down = g.BOLL() | BOLL |
up, ene, down = g.ENE() | ENE |
x = g.Ind() | 新建空指标, 用x.append(x)填充数值 |
x=g.Ind(g.MA(10) + g.MA(20)) | 指标相加,组成新指标 |
名称和参数,保持与手机同花顺相同
指标怎么用的?
ma=g.MA(30)
def onTick():
print("昨天和今天的数据: ", ma[-2], ma[-1])
onTick又是什么玩意?
故名思意, 每一个K线周期会调用一次onTick.
如双均线策略
写法一
这样写, 不用每次都调用python的onTick()代码, 而直接调用编译好的机器码, 就能达到C语言级别速度
互联网上, 到2022年为止, Pytester是第一家使用这样的格式
onTick = g.MA(40) - g.MA(100)
另一种写法
效果与上面相同
这样写, 每次都调用python的onTick()代码, 所以达不到C语言运行速度.
但是由于底层并非python, 所以仍然比纯python快两倍左右
ma40 = g.MA(40)
ma100 = g.MA(100)
def onTick():
if ma40[-1] - ma100[-1] > 0:
return 1 # 持仓
else:
return -1 # 空仓
show = (ma40, ma100),
返回持仓和空仓
使用onTick()的返回值,决定持仓和空仓
非用order()或context.buy()等函数来标记买入点和卖出点
onTick()返回值意义如下:
大于0 | 变成并保持持仓状态 |
---|---|
小于0 | 变成并保持空仓状态 |
等于0 | 忽略 |
注意
这里的持仓并非买点,空仓并非卖点。而是仓位的状态
互联网上, 到2022年为止, Pytester是第一家使用这样的格式
onLast是什么鬼?
故名思意, 所有数据计算完成后, 最后调用一次
onTick=g.CLOSE() - g.MA(60)
def onLast():
ret = g.profit()
return ('资产', ret.money,
'天数', ret.days,
'赢利', ret.last_win,
'次数', ret.trade_cnt,
'回撤', ret.max_loss,
'赔率', ret.odds)
show
画图
把a画到第一窗口,b画到第二窗口,c画到第三窗口
互联网上, 到2022年为止, Pytester是第一家使用这样的格式
格式如下:
show = (a, b, c)
如:
show = (g.MA(), g.EMA(), g.BOLL()), (g.K(), g.D()), g.MACD()
# 第一窗口: MA, EMA, BOLL
# 第二窗口: K, D
# 第三窗口: MACD