极智量化:修订间差异

无编辑摘要
无编辑摘要
第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返回值
! 描述
! 描述
! 设置示例
! 设置示例
|-
| K 线触发
| 由 K 线数据触发策略
| <code> SetTriggerType(5)</code>
|-
|-
| 即时行情触发
| 即时行情触发
| 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及以上系统。安装步骤如下:


框架函数

极智量化抽离了策略框架的所有技术细节,用户只需要将代码写入相应的框架函数(约定函数)即可。极智量化会在策略运行时,运行中,结束时调用相应的框架函数。框架函数如下:

框架函数 名称 是否可选 描述
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) 在当前柱子输出字符串

交易

资源

官网