在JavaScript
、Python
、C++
语言编写的策略中需要在策略主循环中调用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_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
语言策略的多线程功能,实现了以下对象:
对象 | 说明 | 备注 |
---|---|---|
threading | 多线程全局对象 | 成员函数:Thread 、getThread 、mainThread 等。 |
Thread | 线程对象 | 成员函数:peekMessage 、postMessage 、join 等。 |
ThreadLock | 线程锁对象 | 成员函数:acquire 、release 。可作为线程执行函数的参数传入线程环境。 |
ThreadEvent | 事件对象 | 成员函数:set 、clear 、wait 、isSet 。可作为线程执行函数的参数传入线程环境。 |
ThreadCondition | 条件对象 | 成员函数:notify 、notifyAll 、wait 、acquire 、release 。可作为线程执行函数的参数传入线程环境。 |
ThreadDict | 字典对象 | 成员函数:get 、set 。可作为线程执行函数的参数传入线程环境。 |
优宽量化交易平台语法手册:JavaScript多线程
函数名称 | 简介 |
---|---|
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.CDL2CROWS。可以具体跳转到语法手册查询。
策略入口函数 模板类库