A. 如何在 Ricequant 上实现策略
你好!以 [单股票均线策略] 的代码实现为例说一下如何在Ricequant上实现策略吧。
1 确定框架:
[单股票均线策略] 的主要策略框架: 5 日均线高于 30 天均线,则全仓买入股票 5 日均线低于 30 天均线,则卖出所持股票。从我们日常交易的角度,一般交易者的行为可以拆分以下两部分:
1.1 选择标的(初始化):
#在交易之前,我们通常会先选定要交易的股票池或者单个股票
1.2 交易(每天盯盘)
#我们会观察该股票的五日均线和30日均线,并进行比较
#如果该股票的五日均线在30天均线以上,则全仓买入股票
#如果该股票的五日均线在30天均线以下,则全仓卖出(空仓)
那么程序中,我们是怎么做的呢?
先看看 Ricequant 平台中对应的代码框架会是怎么样的吧:
definit(context):
#程序的初始化,预设股票池、设置参数和变量。只运行一次
defhandle(context,bar_dict):
#从回测的开始日期至结束日期,根据选择的频率(日、分钟)循环运行
对照策略思路 及 Ricequant 代码框架,你会发现我们可以很轻松地把 两者结合起来
以上框架也是 Ricequant 平台的最基本也最主要的框架,也就是初始化循环 - 根据选择的频率(日、分钟)循环运行
2 初始化:
选择标的:本策略的交易股票设定为 300059 ”东方财富“。
definit(context):
context.stock="300059.XSHE"#存入目标股票[东方财富]
延伸阅读:
1 在 init 中实现程序的初始化,例如存入目标股票池,设置滑点、基准等参数以及设置其它变量。 context 是一个全局的容器,你可以通过它设置任何全局变量并初始化:如 context.stock 将会在后面代码所被调用到。
2 代码中 # 代表注释,作为代码说明,执行时会被跳过而不为程序所运行。
3 如何填写股票代码:你会发现策略代码中 股票代码后带有后缀,那么它们分别代表什么呢?
后缀为
XSHE 代表在深交所上市交易的股票
XSHG 在上交所上市交易的股票
例子:
300059.XSHE 为深交所上市的东方财富
600000.XSHG 为上交所上市的浦发银行
我们的代码编辑器还提供了非常便利的股票代码自动寻找和补全功能,在 Windows 中你可以用 ctrl+i , Mac 系统你可以用 cmd+i 激活证券代码自动补全功能。如下图:
我们可以看到回测详情中有精致的图表,详细的各项风险收益指标、以及持仓、落单等详情辅助你进一步了解你的策略的表现。
到这里,一个完整的从 [构建策略思路] 到 [策略代码编写] 到 [回测结果检验] 的流程就结束了。
B. xmanager中包含xshell嘛还有些啥
xmanager的企业版是包含xshell的,除了xshell以外还有
如果是企业使用的话建议购买企业版,如果是个人使用的话还是建议购买标准版,因为个人版的xshell是免费的,只要自己下载就好了。
C. XSHG 是什么地区的缩写
XSHG 上海证券交易所
XSHE 深圳证券交易所
D. 怎么学习python量化交易
下面教你八步写个量化交易策略——单股票均线策略
1 确定策略内容与框架
若昨日收盘价高出过去20日平均价今天开盘买入股票
若昨日收盘价低于过去20日平均价今天开盘卖出股票
只操作一只股票,很简单对吧,但怎么用代码说给计算机听呢?
想想人是怎么操作的,应该包括这样两个部分
既然是单股票策略,事先决定好交易哪一个股票。
每天看看昨日收盘价是否高出过去20日平均价,是的话开盘就买入,不是开盘就卖出。每天都这么做,循环下去。
对应代码也是这两个部分
definitialize(context):
用来写最开始要做什么的地方
defhandle_data(context,data):
用来写每天循环要做什么的地方
2 初始化
我们要写设置要交易的股票的代码,比如 兔宝宝(002043)
definitialize(context):
g.security='002043.XSHE'#存入兔宝宝的股票代码
3 获取收盘价与均价
首先,获取昨日股票的收盘价
#用法:变量=data[股票代码].close
last_price=data[g.security].close#取得最近日收盘价,命名为last_price
然后,获取近二十日股票收盘价的平均价
#用法:变量=data[股票代码].mavg(天数,‘close’)
#获取近二十日股票收盘价的平均价,命名为average_price
average_price=data[g.security].mavg(20,'close')
4 判断是否买卖
数据都获取完,该做买卖判断了
#如果昨日收盘价高出二十日平均价,则买入,否则卖出
iflast_price>average_price:
买入
eliflast_price<average_price:
卖出
问题来了,现在该写买卖下单了,但是拿多少钱去买我们还没有告诉计算机,所以每天还要获取账户里现金量。
#用法:变量=context.portfolio.cash
cash=context.portfolio.cash#取得当前的现金量,命名为cash
5 买入卖出
#用法:order_value(要买入股票股票的股票代码,要多少钱去买)
order_value(g.security,cash)#用当前所有资金买入股票
#用法:order_target(要买卖股票的股票代码,目标持仓金额)
order_target(g.security,0)#将股票仓位调整到0,即全卖出
6 策略代码写完,进行回测
把买入卖出的代码写好,策略就写完了,如下
definitialize(context):#初始化
g.security='002043.XSHE'#股票名:兔宝宝
defhandle_data(context,data):#每日循环
last_price=data[g.security].close#取得最近日收盘价
#取得过去二十天的平均价格
average_price=data[g.security].mavg(20,'close')
cash=context.portfolio.cash#取得当前的现金
#如果昨日收盘价高出二十日平均价,则买入,否则卖出。
iflast_price>average_price:
order_value(g.security,cash)#用当前所有资金买入股票
eliflast_price<average_price:
order_target(g.security,0)#将股票仓位调整到0,即全卖出
现在,在策略回测界面右上部,设置回测时间从20140101到20160601,设置初始资金100000,设置回测频率,然后点击运行回测。
7 建立模拟交易,使策略和行情实时连接自动运行
策略写好,回测完成,点击回测结果界面(如上图)右上部红色模拟交易按钮,新建模拟交易如下图。 写好交易名称,设置初始资金,数据频率,此处是每天,设置好后点提交。
8 开启微信通知,接收交易信号
点击聚宽导航栏我的交易,可以看到创建的模拟交易,如下图。 点击右边的微信通知开关,将OFF调到ON,按照指示扫描二维码,绑定微信,就能微信接收交易信号了。
E. winscp号还是xsheel好
通常默认的是同一个端口。但可以设置成不同的端口,比如一个局域网里A、B两台机子都要将X端口映射到外网。那么外网只有一个X端口怎么办看那么可以将B机子的X端口映射成外网的Y端口。那么外网访问:IP+Y端口,既是访问B机子的X端口。
总的来说,要在映射设置上看清楚设置即可。设置中有外网端口和目标PC的端口两个设置。若设置同一端口,那么就是你认为的那样。
F. xshe,xshg是什么英语的缩写
g就是给用户自定义实用的全局变量,用户可以自定义数据。
xshe是深证 xshg上证
希望可以帮到您❤️
G. 如何更改xshell编码
基本上Xshell使用Windows系统的用户默认语言。也可按照远程主机的编码选择使用与Windows系统不同的各种编码。
如何更改会话编码:
1、从以下方法中选择其一:
点击标准按钮的[编码]后选择拟要使用的编码。
打开会话属性对话框选择[类别]的[终端]后在[编码]目录中选择适用的编码。
2、输出UTF-8 编码:
远程计算机支持Unicode(UTF-8)且设为使用UTF-8时编码应使用‘Unicode(UTF-8)’。UTF-8 编码可同时输出多个语言的字符集。如出现乱码可以参考:Xftp中UTF文件名出现乱码怎么办
* 注释
为准确显示选定的编码,应安装该Windows系统选定编码的语言包。
编码选项不会改变键盘输入值,必要时应安装Windows提供的IME (Input Method Editor)。
H. xshell中要如何设置使按键对应
在桌面找到Xshell的程序图标,点击这个图标运行Xshell软件,如果没有安装Xshell软件的朋友可以到Xshell的官方网站上下载并安装
软件启动后在启动后的软件界面上,界面上方有一个横向的菜单栏,在菜单栏找到一个类似键盘的小图标,点击这个小图标,如下图:
点击小键盘图标后会弹出一个弹窗,弹窗名为“自定义按键对应”窗口
在自定义按键窗口里,可以看到当前键的设置,可以看到系统默认的快捷按键的一个列表,如下图:
可以拖动竖向滚动条查看列表下方的快捷按键,也可以使用右侧的一个查找功能查找快捷按键
牢记需要使用到的快捷键,关闭自定义按键弹窗,到软件界面去操作试试吧。
I. xshee5 怎么打开nginx
需求是这样,提取出nginx日志中,GET或者POST的数据中,名称为’shell’字段的数据nginx日志的format配置:'$proxy_add_x_forwarded_for-$remote_user[$time_local]"$request"''$status$request_body"$http_referer"''"$http_user_agent""$http_x_forwarded_for"$request_time$upstream_response_time';nginx日志实际的内容,大致如下:61.164.xxx.xxx,10.16.xx.x–-[13/Aug/2014:00:00:02+0800]“GET/xxx/xxx?stepid=32&tid=U%2Bo3c0S&&output=json&language=zh_CN&session=114047349&dip=10920&diu=00343B30-9EB8-4B43-A978-FF838587E989&diu3=e9c3afaa4134d678&dia=8E72-1B19E16C0B8E&shell=&compress=false&channel=&adcode=310000&pagenum=1&pagesize=10&sign=/1.1″2004382“-”“xxx-iphone”“61.164.xxx.xxx”0.204或218.202.xxx.xxx,123.103.xxx.xxx,10.16.xxx.xxx–-[2014-08-1922:17:08.446671]“POST/xxx/xxx-web/xxxHTTP/1.1″200stepid=15&tid=U753HifVPE0DAOn%2F&output=json&language=zh_CN&session=114099628&dip=10920&diu=DBDBF926-3210-4D64-972A7&xxx=056a849c70ae57560440ebe&diu2=2DFDB167-1505-4372-AAB5-99D28868DCB5&shell=&compress=false&channel=&sign=&wua=0&appkey=0&adcode=150700&t=0“-”“xxx-iphone”“218.202.xxx.xxx,123.103.xxx.xxx”0.00120.001grep-P'shell'access.log|sed's/\(.*\)&shell=\(.*\)&\(.*\)/\2/g'|awk-F'&''{print$1}'>output.txt命令解释:grep-P'shell'access.log#在日志文件中找到有’shell’关键字的数据行sed's/\(.*\)&shell=\(.*\)&\(.*\)/\2/g'#sed使用正则表达式查找,希望将每行日志分成三个组,’&shell=’之前一组,’&shell=’和shell值和之后的&之间作为第二组,之后的字符串作为第3组,\2代表第二组,用第二组替换整个字符串。但是,sed的正则表达式是贪婪模式,实际的第3组是最后一个&后的字符串awk-F'&''{print$1}'#用&将字符串split,输出第一个结果Shell脚本命令众多,非常灵活,解决方法还有很多。这个不是最优方法,也不十分严格,如果作为重要脚本命令,还需要完善。存在的问题:shell关键在日志中如果不唯一,将导致拆分的结果是错误的。#注意点:sed的正则表达式是贪婪模式