极智量化:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第40行: | 第40行: | ||
|- | |- | ||
|} | |} | ||
<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>SetTriggerType()</code>函数设置。 | 极智量化提供了五种触发方式,触发后会自动运行一次<code>handle_data()</code>函数。可以通过策略运行时属性设置界面设置触发方式,也可以使用<code>int SetTriggerType(int type, int|list value=None)</code>函数设置。 | ||
{| class="wikitable" style="width: 100%; | {| class="wikitable" style="width: 100%; | ||
! | ! 触发类型 | ||
! 设置值 | |||
! triggerType返回值 | |||
! 描述 | ! 描述 | ||
! 设置示例 | ! 设置示例 | ||
|- | |- | ||
| 即时行情触发 | | 即时行情触发 | ||
| 1 | |||
| 'S' | |||
| 订阅的合约的即时行情更新时会触发策略 | | 订阅的合约的即时行情更新时会触发策略 | ||
| <code>SetTriggerType(1)</code> | | <code>SetTriggerType(1)</code> | ||
|- | |- | ||
| | | 订单状态变化触发 | ||
| 2 | |||
| 'O' | |||
| 订单的状态发生改变时会触发策略 | | 订单的状态发生改变时会触发策略 | ||
| <code>SetTriggerType(2)</code> | | <code>SetTriggerType(2)</code> | ||
|- | |- | ||
| | | 周期性触发 | ||
| 3 | |||
| 'C' | |||
| 每隔固定的时间间隔会触发策略 | | 每隔固定的时间间隔会触发策略 | ||
| <code>SetTriggerType(3, 1000)</code> 每隔 1000 毫秒触发一次 | | <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> | |||
===触发的上下文环境=== | ===触发的上下文环境=== | ||
==合约代码== | |||
极智量化的合约代码一般由四个部分组成,用竖线分割开,格式为:<code>交易所|品种类型|品种|合约</code>。如是郑商所 | |||
CF105合约的合约代码: | |||
==绘图== | |||
目前,极智量化的策略图表窗口分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) | |||
| 在当前柱子输出字符串 | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
| | |||
| | |||
|- | |||
|} | |||
==交易== | ==交易== |
2021年1月19日 (二) 17:04的版本
简介
安装
极智量化终端目前仅支持Windows 7及以上系统。安装步骤如下:
- 在下载中心下载:https://www.epolestar.xyz/download
- 点击安装包即可
- 更新软件,可通过运行安装路径下的 equant/update.bat 手动更新
框架函数
极智量化抽离了策略框架的所有技术细节,用户只需要将代码写入相应的框架函数(约定函数)即可。极智量化会在策略运行时,运行中,结束时调用相应的框架函数。框架函数如下:
框架函数 | 名称 | 是否可选 | 描述 |
---|---|---|---|
initialize(context) | 初始化函数 | 必须实现 | 会在策略启动时运行一次。该函数中可以进行合约数据的
订阅以及对策略运行的条件进行设置等。 |
handle_data(context) | 处理函数 | 必须实现 | 按用户设置的触发方式,每触发一次运行一次。策略的大部分内容都该函数中实现。 |
hisover_callback(context) | 回测结束函数 | 可选 | 历史数据运行完后会运行该函数一次。 |
exit_callback(context) | 策略停止函数 | 可选 | 在策略退出前被调用,用户可以在该函数中实现一些数据保
存,仓位处理等操作。 |
from datetime import datetime
# 策略开始运行时执行该函数一次
def initialize(context):
LogInfo('策略开始运行,时间:', datetime.now())
SetTriggerType(5) # 设置K线触发,也可以运行时在界面设置
# 策略触发事件每次触发时都会执行该函数
def handle_data(context):
LogInfo('handle_data函数被调用,时间:', datetime.now())
策略触发
触发类型
极智量化提供了五种触发方式,触发后会自动运行一次handle_data()
函数。可以通过策略运行时属性设置界面设置触发方式,也可以使用int SetTriggerType(int type, int|list value=None)
函数设置。
触发类型 | 设置值 | triggerType返回值 | 描述 | 设置示例 |
---|---|---|---|---|
即时行情触发 | 1 | 'S' | 订阅的合约的即时行情更新时会触发策略 | SetTriggerType(1)
|
订单状态变化触发 | 2 | 'O' | 订单的状态发生改变时会触发策略 | SetTriggerType(2)
|
周期性触发 | 3 | 'C' | 每隔固定的时间间隔会触发策略 | SetTriggerType(3, 1000) 每隔 1000 毫秒触发一次
|
定时触发 | 4 | 'T' | 在指定的时间会触发策略 | |
K 线触发 | 5 | 'H'或'K' | 由 K 线数据触发策略。 triggerType返回值'H'为回测阶段K线触发,'K'为实时阶段K线触发 |
SetTriggerType(5)
|
设置触发方式
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("委托状态变化触发")
触发的上下文环境
合约代码
极智量化的合约代码一般由四个部分组成,用竖线分割开,格式为:交易所|品种类型|品种|合约
。如是郑商所
CF105合约的合约代码:
绘图
目前,极智量化的策略图表窗口分2部分:主图区和副图区。提供了多个的绘图函数用于绘制指标、符号、线和文字等。每个绘图函数都有一个 main 参数,设置main=True
表示在主图上绘制,设置main==False
表示在副图上绘制。
函数 | 名称 | 语法 | 描述 | 示例 |
---|---|---|---|---|
PlotNumeric() | 绘制指标线 | PlotNumeric(string name, float value, int color= 0xdd0000
, bool main=True, char axis=False, int barsback=0) |
在当前柱子输出一个值,经过多次输出形成一条指标线。 | PlotNumeric("ma1", ma1[-1], RGB_Red())
|
PlotIcon() | 绘制图标 | PlotIcon(float value,int icon, bool main=True, int barsback=0) | 在当前柱子输出一个图标。 参数: icon:设置图标类型,0-默认图标,1-笑脸,2-哭脸,3-上箭头,4-下箭头,5-上箭头 2, 6-下箭头 2,7-喇叭,8-加锁,9-解锁,10-货币+,11-货币-,12-加号,13-减号,14-叹号,15-叉号 |
PlotIcon(10,14) 输出一个叹号
|
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) | 在当前柱子输出字符串 | |