知行迭代
导航
首页
最近更改
随机页面
常用
分类目录
Linux命令
Mediawiki常用
电脑技巧
工具
链入页面
相关更改
特殊页面
页面信息
登录
查看“极智量化”的源代码
←
极智量化
页面
讨论
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:[
[1]
]
您可以查看和复制此页面的源代码。
==简介== ===安装=== 极智量化终端目前仅支持Windows 7及以上系统。安装步骤如下: *在下载中心下载:https://www.epolestar.xyz/download *点击安装包即可 *更新软件,可通过运行安装路径下的 equant/update.bat 手动更新 ==快速入门== ===第一个策略=== * 点击极智量化界面上方的量化,打开策略编辑界面。或者使用常用的编辑器(如[[VS Code]]),打开<code>极智量化目录Quant\Strategy</code>目录。 * 新建一个用户策略 * 在极智量化加载策略 ==框架函数== 极智量化抽离了策略框架的所有技术细节,用户只需要将代码写入相应的框架函数(约定函数)即可。极智量化会在策略运行时,运行中,结束时调用相应的框架函数。框架函数如下: {| class="wikitable" style="width: 100%; ! 框架函数 ! 名称 ! 是否可选 ! 描述 |- | initialize(context) | 初始化函数 | 必须实现 | 会在策略启动时运行一次。该函数中可以进行合约数据的 订阅以及对策略运行的条件进行设置等。 |- | handle_data(context) | 处理函数 | 必须实现 | 按用户设置的触发方式,每触发一次运行一次。策略的大部分内容都该函数中实现。 |- | hisover_callback(context) | 回测结束函数 |可选 | 历史数据运行完后会运行该函数一次。 |- |exit_callback(context) |策略停止函数 |可选 |在策略退出前被调用,用户可以在该函数中实现一些数据保 存,仓位处理等操作。 |- |} <syntaxhighlight lang="python" > from datetime import datetime # 策略开始运行时执行该函数一次 def initialize(context): LogInfo('策略开始运行,时间:', datetime.now()) SetTriggerType(5) # 设置K线触发,也可以运行时在界面设置 # 策略触发事件每次触发时都会执行该函数 def handle_data(context): LogInfo('handle_data函数被调用,时间:', datetime.now()) </syntaxhighlight> ==策略触发== ===触发类型=== 极智量化提供了五种触发方式,触发后会自动运行一次<code>handle_data()</code>函数。可以通过策略运行时属性设置界面设置触发方式,也可以使用<code>int SetTriggerType(int type, int|list value=None)</code>函数设置。 {| class="wikitable" style="width: 100%; ! 触发类型 ! 设置值 ! triggerType返回值 ! 描述 ! 设置示例 |- | 即时行情触发 | 1 | 'S' | 订阅的合约的即时行情更新时会触发策略 | <code>SetTriggerType(1)</code> |- | 订单状态变化触发 | 2 | 'O' | 订单的状态发生改变时会触发策略 | <code>SetTriggerType(2)</code> |- | 周期性触发 | 3 | 'C' | 每隔固定的时间间隔会触发策略 | <code>SetTriggerType(3, 1000)</code> 每隔 1000 毫秒触发一次 |- | 定时触发 | 4 | 'T' | 在指定的时间会触发策略 | |- | K 线触发 | 5 | 'H'或'K' | 由 K 线数据触发策略。<br \>triggerType返回值'H'为回测阶段K线触发,'K'为实时阶段K线触发 | <code> SetTriggerType(5)</code> |} 设置触发方式 <syntaxhighlight lang="python" > import talib contractId = "ZCE|Z|AP|MAIN" def initialize(context): SetBarInterval(contractId, "M", 30, 100) # 设置触发方式 SetTriggerType(1) # 即时行情触发 SetTriggerType(2) # 交易数据触发 SetTriggerType(3, 1000) # 每隔固定时间触发:时间间隔为 1000 毫秒 SetTriggerType(4, ['223000', '223030']) # 指定两个时刻触发 SetTriggerType(5) # K 线触发 # 策略触发事件每次触发时都会执行该函数 def handle_data(context): # 判断策略是由哪种触发方式触发 if context.triggerType() == "T": # 定时触发 LogInfo("定时触发") elif context.triggerType() == "C": # 周期触发 LogInfo("周期触发") elif context.triggerType() == "H": # 回测阶段 K 线触发 LogInfo("回测阶段 K 线触发") elif context.triggerType() == "S": # 即时行情触发 LogInfo("即时行情触发") elif context.triggerType() == "O": # 委托状态变化触发 LogInfo("委托状态变化触发") </syntaxhighlight> ===触发的上下文环境=== ==数据== === K线数据 === ===触发时返回的数据=== 不同的触发事件,返回不同类型,数据都包含在<code>context.triggerData()</code>中。 ====k线数据或Tick数据==== 设置策略设置K线触发:<code>SetTriggerType(5)</code>,返回k线数据或Tick数据。 <syntaxhighlight lang="python" > import talib cont = "ZCE|Z|TA|MAIN" kType = 'M' kSlice = 1 # 策略开始运行时执行该函数一次 def initialize(context): SetBarInterval(cont, kType, kSlice, 3000) SetTriggerType(5) # K线触发 # 策略触发事件每次触发时都会执行该函数 def handle_data(context): d = context.triggerData() if context.triggerType() == 'H' or context.triggerType() == 'K': # K线触发 if context.kLineType() == 'T' and context.kLineSlice() == 0: # Tick数据 data = [d['TradeDate'], d['DateTimeStamp'], d['TotalQty'], d['PositionQty'], \ d['LastPrice'], d['LastQty'], d['PositionChg'], d['BuyPrice'], d['SellPrice'], \ d['BuyQty'], d['SellQty'], d['InnerSideQty'], d['OutSideQty']] LogInfo("Tick数据:", data) else: # 不为Tick的K线数据 data = [d['TradeDate'], d['DateTimeStamp'], d['TotalQty'], d['PositionQty'], d['LastPrice'], d['KLineQty'], \ d['OpeningPrice'], d['HighPrice'], d['LowPrice'], d['SettlePrice']] LogInfo("K线数据:", data) LogInfo("K线全部数据:", d) </syntaxhighlight> {| class="wikitable" ! 名称 ! 描述 ! 拥有者 ! 示例 |- |ContractNo |合约编号 |k线、Tick |<nowiki>'ZCE|Z|SR|MAIN'</nowiki> |- |KLineType |K 线类型 |k线、Tick |'D' |- |DateTimeStamp |时间戳 |k线、Tick |20220921000000000 |- |TradeDate |交易日 |k线、Tick |20220921 |- |TotalQty |总成交量 |k线、Tick | |- |PositionQty |持仓量 |k线、Tick | |- |Priority |历史数据排序使用,无特别含义 |k线、Tick | |- |LastPrice |最新价(收盘价) |k线、Tick | |- |KLineIndex |K 线索引 | | |- |KLineSlice |K 线周期 | | |- |KLineQty |K 线成交量 |k线 | |- |HighPrice |最高价 |k线 | |- |LowPrice |最低价 |k线 | |- |OpeningPrice |开盘价 |k线 | |- |SettlePrice |结算价 |k线 | |- |LastQty |明细现手 |Tick | |- |PositionChg |持仓量变化 |Tick | |- |BuyPrice |买价 |Tick | |- |SellPrice |卖价 |Tick | |- |BuyQty |买量 |Tick | |- |SellQty |卖量 |Tick | |- |InnerSideQty | |Tick | |- |OutSideQty | |Tick | |} {{了解更多 |[https://www.epolestar.xyz/source/1/极智量化(Python语言)帮助文档.pdf 极智量化文档] |极智量化目录\Quant\Strategy\系统示例\5-工具示例\WriteCSV }} ==合约代码== 极智量化的合约代码一般由四个部分组成,用竖线分割开,格式为:<code>交易所|品种类型|品种|合约</code>。如郑商所CF105合约的合约代码: {| class="wikitable" ! 合约类型 ! 格式 ! 描述 ! 示例 |- | 普通合约 | <nowiki>交易所|F|品种|合约月</nowiki> | | |- | 主连合约 | <nowiki>交易所|Z|品种|MAIN</nowiki> | | |- | 近月合约 | <nowiki>交易所|Z|品种|NEARBY</nowiki> | | |- | 品种指数 | <nowiki>交易所|Z|品种|INDEX</nowiki> | | |- | 品种期权指数 | <nowiki>交易所|Z|品种|SUMO</nowiki> | | |- | 交易所总量 | <nowiki>交易所|Z|SUM|</nowiki> | | |- | 交易所期货总量 | <nowiki>交易所|Z|SUMF|</nowiki> | | |- | 交易所期权总量 | <nowiki>交易所|Z|SUMO|</nowiki> | | |} ==绘图== 目前,极智量化的策略图表窗口分2部分:主图区和副图区。提供了多个的绘图函数用于绘制指标、符号、线和文字等。每个绘图函数都有一个 main 参数,设置<code>main=True</code> 表示在主图上绘制,设置<code>main==False</code> 表示在副图上绘制。 {| class="wikitable" style="width: 100%; ! 函数 ! 名称 ! 语法 ! 描述 ! 示例 |- | PlotNumeric() | 绘制指标线 | PlotNumeric(string name, float value, int color= 0xdd0000 , bool main=True, char axis=False, int barsback=0) | 在当前柱子输出一个值,经过多次输出形成一条指标线。 | <code>PlotNumeric("ma1", ma1[-1], RGB_Red())</code> |- | PlotIcon() | 绘制图标 | PlotIcon(float value,int icon, bool main=True, int barsback=0) | 在当前柱子输出一个图标。<br \>参数:<br \>icon:设置图标类型,0-默认图标,1-笑脸,2-哭脸,3-上箭头,4-下箭头,5-上箭头 2, 6-下箭头 2,7-喇叭,8-加锁,9-解锁,10-货币+,11-货币-,12-加号,13-减号,14-叹号,15-叉号 |<code>PlotIcon(10,14)</code> 输出一个叹号 |- | PlotDot() | 绘制点 | PlotDot(string name, float value, int icon, int color, bool main, int barsback=0) | 在当前柱子输出一个点 | |- | PlotBar() | 绘制柱子 | PlotBar(string name, float vol1, float vol2, int color, bool main, bool filled, int barsback=0) | 绘制一根柱子 | |- | PlotText() | 绘制字符串 | PlotText(float coord, string text, int color, bool main, int barsback=0) | 在当前柱子输出字符串 | |- | | | | | |- |} ==交易== ==资源== ===官网=== *极智量化:https://www.epolestar.xyz/quantize *极智量化的Github:https://github.com/epolestar/equant *极智量化文档:https://www.epolestar.xyz/source/1/极智量化(Python语言)帮助文档.pdf
本页使用的模板:
模板:了解更多
(
查看源代码
)
返回至“
极智量化
”。