资源加载中... loading...

策略框架与API函数

JavaScriptPythonC++语言编写的策略中需要在策略主循环中调用Sleep()函数。回测时用于控制回溯的速度,实盘时用于控制策略轮询的时间间隔,从而控制访问交易所API接口的请求频率。

function main(){
    while(true){
        // 需要在判断exchange.IO("status")函数返回true,即为真值时才可调用行情、交易等函数
        if(exchange.IO("status")){
            exchange.SetContractType("MA000")
            var ticker = exchange.GetTicker()
            Log("MA000 ticker:", ticker)
            LogStatus(_D(), "已经连接CTP !")
        } else {
            LogStatus(_D(), "未连接CTP !")
        }
    }
}
def main():
    while True:
        if exchange.IO("status"):
            exchange.SetContractType("MA000")
            ticker = exchange.GetTicker()
            Log("MA000 ticker:", ticker)
            LogStatus(_D(), "已经连接CTP !")
        else:
            LogStatus(_D(), "未连接CTP !")
void main() {
    while(true) {
        if(exchange.IO("status") == 1) {
            exchange.SetContractType("MA000");
            auto ticker = exchange.GetTicker();
            Log("MA000 ticker:", ticker);
            LogStatus(_D(), "已经连接CTP !");
        } else {
            LogStatus(_D(), "未连接CTP !");
        }
    }
}

经典的商品期货策略架构:

以下展示所有API接口的速查表,详细的API描述请参考:优宽量化交易平台API手册

全局函数

函数名称 简介
Version 返回系统当前版本号
Sleep 休眠函数,参数为暂停的毫秒数值
IsVirtual 判断执行环境,返回为真值表示是回测环境
Mail 发送邮件
Mail_Go Mail函数的异步版本
SetErrorFilter 过滤错误日志,参数为正则表达式字符串,被此正则表达式匹配的错误日志将不上传到日志系统
GetPid 获取实盘进程Id
GetLastError 获取最近一次出错信息
GetCommand 获取策略交互命令,策略交互控件设置可查询:交互控件
GetMeta 获取生成策略注册码时写入的Meta的值
Dial 用于原始的Socket访问
HttpQuery 发送Http请求
HttpQuery_Go HttpQuery函数的异步版本
Encode 数据编码函数
UnixNano 获取纳秒级时间戳
Unix 获取秒级别时间戳
GetOS 获取系统信息
MD5 计算MD5
DBExec 数据库函数,可以用于执行SQL语句,进行数据库操作
UUID 生成UUID
EventLoop 监听事件
_G 持久化保存数据,该函数实现了一个可保存的全局字典功能。数据结构为KV表,永久保存在托管者本地数据库文件
_D 时间戳处理函数,将毫秒时间戳或者Date对象转换为时间字符串
_N 格式化浮点数,例如_N(3.1415, 2)将删除3.1415小数点两位以后的值,函数返回3.14
_C 重试函数,用于接口容错。注意,例如对exchange.GetTicker函数容错,是_C(exchange.GetTicker)并不是_C(exchange.GetTicker())
_Cross 交叉判断函数,_Cross()函数的返回值是正数表示上穿的周期,负数表示下穿的周期,0指当前价格一样
JSONParse 解析JSON,可以正确解析包含有较大数值的JSON字符串,会将较大的数值解析为字符串类型。回测系统中不支持JSONParse()函数

日志函数

函数名称 简介
Log 输出日志,支持设置日志文本颜色,支持设置推送,支持打印base64编码后的图片
LogProfit 输出盈亏数据,打印盈亏数值并根据盈亏数值绘制收益曲线
LogProfitReset 清空LogProfit函数输出的所有收益日志,收益图表
LogStatus 在状态栏输出信息,支持状态栏中设计按钮控件,支持输出表格
EnableLog 打开或者关闭订单信息的日志记录
Chart 画图函数,基于Highcharts/Highstocks图表库
KLineChart Pine语言风格画图函数,该函数用于使用类似Pine语言的画图方式进行策略运行时的自定义画图
LogReset 清除日志,支持通过参数设置保留最近一定数量的日志
LogVacuum 回收SQLite资源,用于在调用LogReset()函数清除日志后,回收SQLite删除数据时占用的储存空间
console.log 实盘页面中的「调试信息」栏中输出调试信息
console.error 实盘页面中的「调试信息」栏中输出错误信息

行情函数

函数名称 简介
exchange.GetTicker 获取Tick行情
exchange.GetDepth 获取订单薄深度数据
exchange.GetTrades 获取市场成交数据(根据Tick数据计算)
exchange.GetRecords 获取K线数据
exchange.GetPeriod 获取当前K线周期
exchange.SetMaxBarLen 设置K线最大长度
exchange.GetRate 获取当前设置的汇率
exchange.SetData 设置策略运行时加载的数据
exchange.GetData 获取加载的数据或外部链接提供的数据
exchange.GetMarkets 获取已订阅的交易品种信息
exchange.GetTickers 获取已订阅的交易品种聚合行情数据

交易函数

函数名称 简介
exchange.Buy 提交买单,期货合约下单时必须注意交易方向是否设置正确,如果交易方向和交易函数不匹配会报错
exchange.Sell 提交卖单,期货合约下单时必须注意交易方向是否设置正确,如果交易方向和交易函数不匹配会报错
exchange.CreateOrder 提交订单,通过参数指定交易品种、交易方向、价格、数量
exchange.CancelOrder 取消订单
exchange.GetOrder 获取订单信息,数据结构为Order结构
exchange.GetOrders 获取未完成的订单,数据结构为Order结构数组(列表)
exchange.GetHistoryOrders 获取当前交易日所有合约的历史订单;支持获取具体合约的当前交易日历史订单
exchange.SetPrecision 设置exchange交易所对象的价格与下单量的精度,设置后系统会自动忽略数据多余的部分
exchange.SetRate 设置汇率
exchange.IO 用于交易所对象相关的其它接口调用
exchange.Log 输出、记录交易日志,并不下单
exchange.GetName 获取交易所对象的名称
exchange.GetLabel 获取交易所对象的标签
exchange.GetCurrency 获取当前交易对
exchange.GetAccount 获取账户信息
exchange.GetQuoteCurrency 获取当前交易对的计价币名称

期货函数

函数名称 简介
exchange.GetPositions 获取期货持仓,数据结构为Position结构数组(列表)
exchange.SetMarginLevel 设置杠杆
exchange.SetDirection 函数用于设置exchange.Buy函数、exchange.Sell函数进行期货合约下单时的订单方向
exchange.SetContractType 设置合约代码,例如切换当前操作的合约为螺纹钢主力连续合约,exchange.SetContractType("rb888")
exchange.GetContractType 获取当前设置的合约代码
StrDecode GBK解码

JavaScript多线程

优宽量化交易平台从系统底层真正支持JavaScript语言策略的多线程功能,实现了以下对象:

对象 说明 备注
threading 多线程全局对象 成员函数:ThreadgetThreadmainThread等。
Thread 线程对象 成员函数:peekMessagepostMessagejoin等。
ThreadLock 线程锁对象 成员函数:acquirerelease。可作为线程执行函数的参数传入线程环境。
ThreadEvent 事件对象 成员函数:setclearwaitisSet。可作为线程执行函数的参数传入线程环境。
ThreadCondition 条件对象 成员函数:notifynotifyAllwaitacquirerelease。可作为线程执行函数的参数传入线程环境。
ThreadDict 字典对象 成员函数:getset。可作为线程执行函数的参数传入线程环境。

优宽量化交易平台语法手册:JavaScript多线程

TA指标库

函数名称 简介
TA.MACD 计算指数平滑异同平均线指标
TA.KDJ 计算随机指标
TA.RSI 计算强弱指标
TA.ATR 计算平均真实波幅指标
TA.OBV 计算能量潮指标
TA.MA 计算移动平均线指标
TA.EMA 计算指数平均数指标
TA.BOLL 计算布林带指标
TA.Alligator 计算鳄鱼线指标
TA.CMF 计算蔡金货币流量指标
TA.Highest 计算周期最高价
TA.Lowest 计算周期最低价
TA.SMA 计算简单移动平均指标

talib指标库

talib指标库有众多交易指标,例如:talib.CDL2CROWS。可以具体跳转到语法手册查询。

策略入口函数 模板类库