策略结构
JavaScript(含 TypeScript)、Python、Rust策略由几个约定名称的函数组成,托管者在固定的时机调用它们。My语言、PINE、Blockly、Workflow 策略不需要编写这些函数。
生命周期函数
| 函数 | 是否必须 | 调用时机 |
|---|---|---|
main() | 必须 | 入口函数,策略的主体。main()返回,策略即运行结束。 |
init() | 可选 | 在main()之前调用一次,用于初始化。 |
onexit() | 可选 | 策略退出时调用,用于扫尾(撤单、平仓、保存状态等)。 |
onerror(msg) | 可选 | 仅JavaScript:main()因未捕获的异常结束时调用,msg为错误信息。调用了onerror()就不再调用onexit()。 |
destroy() | 可选 | 仅JavaScript模板类库:策略退出时,在onexit()或onerror()之后调用,见 模板类库。 |
退出时调用哪个函数:
| 退出原因 | JavaScript | Python | Rust |
|---|---|---|---|
main()正常返回 | onexit() | onexit() | onexit() |
| 停止实盘 | onexit() | onexit() | onexit() |
未捕获的异常、panic | onerror(msg) | 都不调用 | onexit() |
注意事项:
onexit()、onerror()最长执行 5 分钟(时长由服务端按任务下发,默认 5 分钟),超时会被强制结束。- 回测中策略通常是不停轮询的死循环,回测结束时
main()并没有正常返回,处理方法见onexit()。 JavaScript策略的main()返回时,用threading创建的子线程会被终止;还没有到期的setTimeout回调会先执行完,再调用onexit()。JavaScript、Python模板类库可以定义自己的init(),在模板加载时执行,早于策略的init()。
主循环与事件驱动
大多数策略在main()中写一个循环:每轮获取数据、计算、下单,然后Sleep()等待下一轮,见 主循环。也可以等待行情、订单等事件到达后再处理,见 事件驱动。全部 API 函数的分类速查见 API函数速查。
init()
init() 为用户实现的初始化函数。策略开始运行时,会首先自动执行 init() 函数,以完成策略中设计的初始化任务。
示例
javascript
function main(){
Log("First line of code executed!", "#FF0000")
Log("Exiting!")
}
// 初始化函数
function init(){
Log("Initializing!")
}
python
def main():
Log("First line of code executed!", "#FF0000")
Log("Exiting!")
def init():
Log("Initializing!")
rust
fn main() {
Log!("First line of code executed!", "#FF0000");
Log!("Exiting!");
}
// 初始化函数
fn init() {
Log!("Initializing!");
}onexit()
onexit()由用户实现,在策略退出时处理扫尾工作,可以不定义。最长执行 5 分钟,超时会被强制结束。各语言在哪些情况下调用onexit(),见 策略结构。
示例
-
测试
onexit()函数:javascriptfunction main(){ Log("Starting, will stop after 5 seconds and execute cleanup function!") Sleep(1000 * 5) } // 扫尾函数实现 function onexit(){ var beginTime = new Date().getTime() while(true){ var nowTime = new Date().getTime() Log("Program stop countdown..cleanup started, elapsed time:", (nowTime - beginTime) / 1000, "seconds!") Sleep(1000) } }pythonimport time def main(): Log("Starting, will stop after 5 seconds and execute cleanup function!") Sleep(1000 * 5) def onexit(): beginTime = time.time() * 1000 while True: ts = time.time() * 1000 Log("Program stop countdown..cleanup started, elapsed time:", (ts - beginTime) / 1000, "seconds!") Sleep(1000)rustfn main() { Log!("Starting, will stop after 5 seconds and execute cleanup function!"); Sleep(1000 * 5); } // 扫尾函数实现 fn onexit() { let beginTime = Unix() * 1000; loop { let nowTime = Unix() * 1000; Log!("Program stop countdown..cleanup started, elapsed time:", (nowTime - beginTime) / 1000, "seconds!"); Sleep(1000); } } -
回测系统中,策略通常写成不停轮询的死循环,回测数据结束时
main()并没有正常返回,JavaScript、Python策略因此不会执行onexit()。可以在回测中(IsVirtual()为真)捕获回测结束时抛出的异常(EOF),让main()返回,从而执行onexit()。Rust策略在回测结束时 API 调用返回Err,退出循环即可。javascriptfunction main() { if (exchange.GetName().startsWith("Futures_")) { Log("Exchange is futures") exchange.SetContractType("swap") } else { Log("Exchange is spot") } if (IsVirtual()) { try { onTick() } catch (e) { Log("error:", e) } } else { onTick() } } function onTick() { while (true) { var ticker = exchange.GetTicker() LogStatus(_D(), ticker ? ticker.Last : "--") Sleep(500) } } function onexit() { Log("Executing cleanup function") }pythondef main(): if exchange.GetName().startswith("Futures_"): Log("Exchange is futures") else: Log("Exchange is spot") if IsVirtual(): try: onTick() except Exception as e: Log(e) else: onTick() def onTick(): while True: ticker = exchange.GetTicker() LogStatus(_D(), ticker["Last"] if ticker else "--") Sleep(500) def onexit(): Log("Executing cleanup function")rustfn onTick() { loop { match exchange.GetTicker(None) { Ok(ticker) => LogStatus!(_D(None), ticker.Last), Err(e) => { // 回测结束时API调用返回Err,退出循环使main返回,从而触发onexit()扫尾函数 Log!("error:", e); break; } } Sleep(500); } } fn main() { if exchange.GetName().starts_with("Futures_") { Log!("Exchange is futures"); let _ = exchange.SetContractType("swap"); } else { Log!("Exchange is spot"); } onTick(); } fn onexit() { Log!("Executing cleanup function"); }
onerror()
onerror(msg)只有JavaScript(含 TypeScript)策略支持:main()因未捕获的异常结束时调用,参数msg为异常的错误信息。调用了onerror()就不再调用onexit()。最长执行 5 分钟,超时会被强制结束。回测系统不支持该函数。
Python、Rust策略不支持onerror()。
示例
javascript
function main() {
var arr = []
Log(arr[6].Close) // 这里故意引发一个程序异常
}
function onerror(msg) {
Log("Error:", msg)
}
python
# Python 不支持
rust
// Rust 不支持主循环
策略通常在main()中写一个循环:每轮获取行情、计算信号、下单,然后调用 Sleep 等待下一轮。Sleep()在回测中推进回测时间、控制回溯速度,在实盘中控制轮询间隔,从而控制访问交易所 API 的频率。循环中不调用Sleep()会以最快速度反复请求交易所接口,容易触发交易所的频率限制。需要在托管者上限制 API 调用频率时,见 API限流控制。
示例
-
基本框架:
javascriptfunction onTick(){ // 在这里写策略逻辑,将会不断调用,例如打印行情信息 Log(exchange.GetTicker()) } function main(){ while(true){ onTick() // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁 Sleep(60000) } }pythondef onTick(): Log(exchange.GetTicker()) def main(): while True: onTick() Sleep(60000)rustfn onTick() { // 在这里写策略逻辑,将会不断调用,例如打印行情信息 Log!(exchange.GetTicker(None)); } fn main() { loop { onTick(); // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁 Sleep(60000); } } -
举个最简单的例子:每隔1秒钟在交易所挂一个价格为100、数量为1的买单,可以这样写:
javascriptfunction onTick(){ // 这个仅仅是例子,回测或者实盘会很快把资金全部用于下单,实盘请勿使用 exchange.Buy(100, 1) } function main(){ while(true){ onTick() // 暂停多久可自定义,单位为毫秒,1秒等于1000毫秒 Sleep(1000) } }pythondef onTick(): exchange.Buy(100, 1) def main(): while True: onTick() Sleep(1000)rustfn onTick() { // 这个仅仅是例子,回测或者实盘会很快把资金全部用于下单,实盘请勿使用 let _ = exchange.Buy(100, 1); } fn main() { loop { onTick(); // 暂停多久可自定义,单位为毫秒,1秒等于1000毫秒 Sleep(1000); } } -
按K线更新处理的策略(On Bar):最新一根K线的时间变化时才执行
onTick():javascriptfunction onTick() { Log("K-line updated, new BAR generated") } function main() { var exName = exchange.GetName() if (exName.includes("Futures_")) { exchange.SetContractType("swap") } var lastTs = 0 while (true) { var r = _C(exchange.GetRecords) if (r.length > 0 && r[r.length - 1].Time != lastTs) { onTick() lastTs = r[r.length - 1].Time } Sleep(1000) } }pythondef onTick(): Log("K-line updated, new BAR generated") def main(): exName = exchange.GetName() if "Futures_" in exName: exchange.SetContractType("swap") lastTs = 0 while True: r = _C(exchange.GetRecords) if len(r) > 0 and r[-1]["Time"] != lastTs: onTick() lastTs = r[-1]["Time"] Sleep(1000)rustfn onTick() { Log!("K-line updated, new BAR generated"); } fn main() { let exName = exchange.GetName(); if exName.contains("Futures_") { let _ = exchange.SetContractType("swap"); } let mut lastTs = 0; loop { let r = _C!(exchange.GetRecords(None, None, None)); if r.len() > 0 && r[r.len() - 1].Time != lastTs { onTick(); lastTs = r[r.len() - 1].Time; } Sleep(1000); } }
事件驱动
除了按固定间隔轮询,策略也可以等待事件到达后再处理,减少无效请求,也能更快地响应行情变化。
EventLoop
EventLoop 等待exchange.Go()、HttpQuery_Go()等并发任务完成、WebSocket 连接有可读数据、线程消息等事件;有事件时返回事件信息,策略再去读取对应的数据。第一次调用EventLoop()时才开始记录事件,所以先调用一次EventLoop(-1)再发起并发任务:
javascript
function main() {
EventLoop(-1) // 开始记录事件,避免错过之后发生的事件
var r1 = exchange.Go("GetTicker")
var r2 = exchange.Go("GetDepth")
var ev = EventLoop(1000) // 等待任意一个并发任务完成,最多等 1 秒
Log("event:", ev)
Log("ticker:", r1.wait(), "depth:", r2.wait())
}
ctx.subscribe / ctx.poll
JavaScript和Rust策略还可以使用托管者的事件订阅接口:ctx.subscribe()订阅某个账户、某个品种的行情或订单回报,返回流 ID;ctx.poll()取出下一条事件(可以设置等待超时),策略按事件的kind分别处理。Python策略不支持。
javascript
function main() {
ctx.subscribe(0, "BTC_USDT", {channel: "ticker"}) // 第一个参数是账户在 exchanges 中的下标
ctx.subscribe(0, "", {channel: "orders"}) // 订单回报
while (true) {
const ev = ctx.poll([], 1000) // [] 表示所有订阅,最多等 1 秒
if (!ev) {
continue
}
if (ev.kind === 1) {
Log("ticker:", ev.symbol, ev.bid, ev.ask, ev.last)
} else if (ev.kind === 16) {
Log("order:", ev.id, ev.state, ev.filledQty)
}
}
}
channel可选"ticker"、"bbo"、"depth"、"trade"、"kline"(interval为周期秒数)、"orders"。- 事件的
kind:1 为 ticker,3 为深度(事件只表示订单簿已更新,档位用ctx.book(ev.ex, ev.symbol, n)读取),4 为成交,5 为 K 线,16 为订单回报。 - 行情类订阅消费不及时会只保留最新数据或丢弃最旧的数据,订单回报不会丢弃,策略需要持续调用
ctx.poll()。
Rust策略中的写法为ctx::subscribe()、ctx::poll(),事件为原始结构,价格、数量是定点整数:
rust
fn main() {
let s = ctx::subscribe(0, "BTC_USDT", ctx::SubOpts::ticker()).unwrap();
loop {
match ctx::poll(&[s], Some(1000)) {
ctx::Polled::Event(ev) => Log!("event kind:", ev.kind),
ctx::Polled::Stopped => break,
_ => {}
}
}
}
API函数速查
按API手册的分类列出全部函数、结构体和常量,每项一句话说明,点击名称查看完整文档。本页由doc_tools/gen_api_index.py根据手册生成。
内置函数
Global
| 名称 | 说明 |
|---|---|
Version | 返回当前系统版本号。 |
IsVirtual | 用于判断策略的运行环境是否为回测系统。 |
GetOS | 获取托管者所在设备的操作系统信息。 |
GetPid | 获取实盘进程的 ID。 |
GetMeta | 获取在生成策略注册码时写入的Meta值。 |
Sleep | 休眠函数,使程序暂停运行一段指定的时间。 |
Unix | 获取当前时刻的秒级时间戳。 |
UnixNano | 获取当前时刻的纳秒级时间戳。 |
_D | 将毫秒级时间戳或Date对象转换为时间字符串。 |
GetCommand | 获取策略的交互命令。 |
GetLastError | 获取最近一次的错误信息。 |
SetErrorFilter | 过滤错误日志。 |
_N | 格式化浮点数。 |
_C | 重试函数,用于对接口调用进行容错处理。 |
_Cross | 返回数组arr1与数组arr2的交叉周期数。 |
JSON.parse | JSON.parse函数是ECMAScript标准内建对象JSON的方法,用于解码(解析)JSON字符串。 |
JSON.stringify | JSON.stringify函数是ECMAScript标准内置对象JSON的方法,用于将JavaScript值转换为JSON字符串。 |
Encode | 该函数根据传入的参数对数据进行编码。 |
MD5 | 计算参数data的 MD5 哈希值。 |
UUID | 创建一个 UUID。 |
Log
| 名称 | 说明 |
|---|---|
Log | Log()函数用于输出日志。 |
LogStatus | 在回测系统或实盘页面的状态栏中输出信息。 |
LogProfit | 记录并打印盈亏数值,并根据盈亏数值绘制收益曲线。 |
LogProfitReset | 清空所有收益日志及收益图表。 |
LogReset | 清除日志。 |
LogVacuum | 用于在调用 LogReset() 函数清除日志后,回收 SQLite 删除数据时所占用的存储空间。 |
EnableLog | 启用或禁用订单信息的日志记录。 |
Chart | 自定义图表绘图函数。 |
KLineChart | 该函数用于采用类似Pine语言的绘图方式,在策略运行时进行自定义绘图。 |
console.log | 用于在实盘页面的「调试信息」栏中输出调试信息。 |
console.error | 用于在实盘页面的「调试信息」栏中输出错误信息。 |
exchange.Log | exchange.Log()函数用于在日志栏区域输出下单、撤单日志。 |
Market
| 名称 | 说明 |
|---|---|
exchange.GetTicker | 获取当前设置的交易对、合约代码所对应现货或合约的Ticker结构,即行情数据。 |
exchange.GetTickers | exchange.GetTickers()函数用于获取交易所的聚合行情数据(Ticker结构的数组)。 |
exchange.GetDepth | 获取当前设置的交易对、合约代码所对应的现货或合约的Depth结构,即订单簿数据。 |
exchange.GetTrades | 获取当前设置的交易对、合约代码所对应的现货或合约的Trade结构数组,即市场的成交数据。 |
exchange.GetRecords | 获取当前设置的交易对、合约代码所对应的现货或合约的Record结构数组,即K线数据。 |
exchange.GetMarkets | exchange.GetMarkets()函数用于获取交易所的市场信息。 |
exchange.GetRawJSON | 获取当前交易所对象(exchange、exchanges)最近一次rest请求返回的原始内容。 |
exchange.SetData | exchange.SetData()函数用于设置策略运行时所加载的数据。 |
exchange.GetData | exchange.GetData()函数用于获取由exchange.SetData()函数加载的数据,或外部链接提供的数据。 |
Trade
| 名称 | 说明 |
|---|---|
exchange.Buy | exchange.Buy()函数用于下买单。 |
exchange.Sell | exchange.Sell()函数用于下达卖单。 |
exchange.CreateOrder | exchange.CreateOrder()函数用于下单。 |
exchange.ModifyOrder | exchange.ModifyOrder()函数用于修改现有的普通订单,可修改订单的价格和数量。 |
exchange.CancelOrder | exchange.CancelOrder()函数用于取消订单。 |
exchange.GetOrder | exchange.GetOrder()函数用于获取订单信息。 |
exchange.GetOrders | exchange.GetOrders()函数用于获取当前未完成的订单。 |
exchange.GetHistoryOrders | exchange.GetHistoryOrders()函数用于获取当前交易对、合约的历史订单,并支持指定具体的交易品种。 |
exchange.CreateConditionOrder | exchange.CreateConditionOrder()函数用于创建条件单。 |
exchange.ModifyConditionOrder | exchange.ModifyConditionOrder()函数用于修改现有的条件单,可修改条件单的下单量、触发条件和执行价格。 |
exchange.CancelConditionOrder | exchange.CancelConditionOrder()函数用于取消条件单。 |
exchange.GetConditionOrder | exchange.GetConditionOrder()函数用于获取指定条件单的信息。 |
exchange.GetConditionOrders | exchange.GetConditionOrders()函数用于获取未完成的条件单(尚未触发或尚未取消的条件单)。 |
exchange.GetHistoryConditionOrders | exchange.GetHistoryConditionOrders()函数用于获取当前交易对、合约的历史条件单(包括已触发、已取消、已过期的条件单),并支持指定具体的交易品种。 |
Account
| 名称 | 说明 |
|---|---|
exchange.GetAccount | exchange.GetAccount()函数用于请求交易所账户信息。 |
exchange.GetAssets | exchange.GetAssets函数用于请求交易所账户的资产信息。 |
Futures
| 名称 | 说明 |
|---|---|
exchange.SetContractType | exchange.SetContractType()函数用于设置exchange交易所对象当前的合约代码。 |
exchange.GetContractType | exchange.GetContractType()函数用于获取exchange交易所对象当前设置的合约代码。 |
exchange.SetDirection | exchange.SetDirection()函数用于设置调用exchange.Buy函数、exchange.Sell函数进行期货合约下单时的订单方向。 |
exchange.SetMarginLevel | exchange.SetMarginLevel()函数用于设置symbol参数所指定的交易对、合约的杠杆值。 |
exchange.GetPositions | exchange.GetPositions()函数用于获取持仓信息;GetPositions()函数是交易所对象exchange的成员函数。 |
exchange.GetFundings | exchange.GetFundings()函数用于获取当前周期的资金费率数据。 |
Exchange
| 名称 | 说明 |
|---|---|
exchange.GetName | exchange.GetName()函数用于获取当前交易所对象所绑定的交易所名称。 |
exchange.GetLabel | exchange.GetLabel()函数用于获取配置交易所对象时设置的自定义标签。 |
exchange.GetCurrency | exchange.GetCurrency()函数用于获取当前设置的交易对。 |
exchange.SetCurrency | exchange.SetCurrency()函数用于切换交易所对象exchange当前的交易对。 |
exchange.GetQuoteCurrency | exchange.GetQuoteCurrency()函数用于获取当前交易对的计价币名称,即quoteCurrency。 |
exchange.GetPeriod | 获取回测或实盘运行策略时,在发明者量化交易平台网站页面上所设置的 K 线周期,即调用 exchange.GetRecords() 函数且不传入参数时使用的默认 K 线周期。 |
exchange.SetMaxBarLen | 设置K线的最大长度。 |
exchange.SetPrecision | exchange.SetPrecision()函数用于设置exchange交易所对象的价格与下单量的精度,设置后系统会自动忽略数据中超出精度的多余部分。 |
exchange.GetRate | 获取交易所对象当前设置的汇率。 |
exchange.SetRate | 设置交易所对象当前的汇率。 |
exchange.SetBase | exchange.SetBase()函数用于设置exchange交易所对象所使用的交易所API接口基地址。 |
exchange.GetBase | exchange.GetBase() 函数用于获取当前交易所 API 接口的基础地址。 |
exchange.SetProxy | exchange.SetProxy()函数用于设置exchange交易所对象的代理配置。 |
exchange.SetTimeout | exchange.SetTimeout()函数用于设置exchange交易所对象rest请求的超时时间。 |
exchange.Encode | exchange.Encode()函数用于执行签名与加密计算。 |
IO
| 名称 | 说明 |
|---|---|
exchange.IO | exchange.IO()函数用于调用交易所对象相关的其它接口。 |
exchange.IO("api", ...) | exchange.IO("api", ...)调用交易所未封装的原始REST接口,签名由平台自动处理。 |
exchange.IO("currency", ...) | exchange.IO("currency", ...)在运行时切换交易所对象的当前交易对。 |
exchange.IO("base", ...) | exchange.IO("base", ...)切换交易接口的基地址,exchange.IO("mbase", ...)切换行情接口的基地址。 |
exchange.IO(mode, value) | exchange.IO(mode, value)切换交易所的交易模式:模拟盘/实盘、全仓/逐仓、双向/单向持仓、统一账户、杠杆模式、自成交预防等。 |
exchange.IO("rate", ...) | exchange.IO("rate", ...)与exchange.IO("quota", ...)限制API函数的调用频率。 |
Network
| 名称 | 说明 |
|---|---|
HttpQuery | 发送HTTP请求。 |
HttpQuery_Go | 发送Http请求,是HttpQuery函数的异步版本。 |
Dial | 用于原始 Socket 访问,支持 tcp、udp、tls、unix 协议。 |
Mail | 发送邮件。 |
Mail_Go | Mail函数的异步版本。 |
Storage
| 名称 | 说明 |
|---|---|
_G | 持久化保存数据。 |
DBExec | 数据库接口函数。 |
SetChannelData | 在频道上发布最新的状态数据。 |
GetChannelData | 订阅指定实盘的频道数据。 |
Threads
| 名称 | 说明 |
|---|---|
exchange.Go | 多线程异步支持函数,可将所有受支持函数的操作转换为异步并发执行。 |
EventLoop | 监听事件,当任意WebSocket有可读数据,或exchange.Go()、HttpQuery_Go()等并发任务完成后返回。 |
Threads/threading
| 名称 | 说明 |
|---|---|
Thread | Thread()函数用于创建并发线程。 |
getThread | getThread()函数用于根据指定的线程ID获取线程对象。 |
mainThread | mainThread()函数用于获取主线程的线程对象,即策略中main()函数所在的线程。 |
currentThread | currentThread()函数用于获取当前线程的线程对象。 |
Lock | Lock()函数用于创建线程锁对象。 |
Condition | Condition()函数用于创建一个条件变量对象,该对象用于在多线程并发环境中实现线程间的同步与通信。 |
Event | Event()函数用于创建一个线程事件对象,该对象用于线程间的同步,允许一个线程等待另一个线程的通知或信号。 |
Dict | Dict()函数用于创建一个字典对象,用于在并发线程间传递和共享数据。 |
Serve | Serve()函数在策略进程内创建Http服务、TCP服务、Websocket服务(基于Http协议),返回Server对象。 |
pending | pending函数用于获取当前策略程序中正在运行的并发线程数量。 |
Threads/Thread
| 名称 | 说明 |
|---|---|
peekMessage | peekMessage()函数用于从线程接收消息。 |
postMessage | postMessage()函数用于向线程发送消息。 |
join | join()函数用于等待线程退出,并回收系统资源。 |
terminate | terminate()函数用于强制终止线程,释放创建线程时占用的硬件资源。 |
getData | getData()函数用于访问线程环境中记录的变量。 |
setData | setData()函数用于在线程环境中存储变量。 |
id | id()函数用于返回当前多线程对象实例的threadId。 |
name | name()函数用于返回当前多线程对象实例的名称。 |
eventLoop | eventLoop() 函数用于监听当前线程接收到的事件。 |
Threads/ThreadLock
| 名称 | 说明 |
|---|---|
acquire | acquire()函数用于请求线程锁(加锁)。 |
release | release()函数用于释放线程锁(解锁)。 |
Threads/ThreadEvent
| 名称 | 说明 |
|---|---|
set | set()函数用于设置事件信号。 |
clear | clear()函数用于清除信号。 |
wait | wait()函数用于设置事件(信号)等待,在事件(信号)被设置之前会阻塞;支持设置超时参数。 |
isSet | isSet()函数用于判断事件(信号)是否已被设置。 |
Threads/ThreadCondition
| 名称 | 说明 |
|---|---|
notify | notify()函数用于唤醒一个正在等待的线程(如果存在)。 |
notifyAll | notifyAll()函数用于唤醒所有正在等待的线程。 |
wait | wait()函数用于在特定条件下使线程进入等待状态。 |
acquire | acquire()函数用于请求线程锁(加锁)。 |
release | release()函数用于释放线程锁(解锁)。 |
Threads/ThreadDict
| 名称 | 说明 |
|---|---|
get | get()函数用于获取字典对象中记录的键值。 |
set | set()函数用于设置键值对。 |
Threads/Server
| 名称 | 说明 |
|---|---|
addr | addr()函数返回服务实际监听的地址和端口。 |
close | close()函数停止接收新连接,正在执行的处理函数继续执行完(优雅关闭)。 |
stop | stop()函数先关闭服务(同close()),再强制结束所有正在执行的处理函数线程。 |
join | join()函数等待服务关闭且所有处理函数执行完毕。 |
pending | pending()函数返回当前正在执行的处理函数数量,即正在处理的连接或请求数。 |
Web3
| 名称 | 说明 |
|---|---|
exchange.IO("abi", ...) | 在发明者量化交易平台中,区块链相关的各种功能和调用主要通过exchange.IO()函数实现。 |
exchange.IO("api", blockChain, ...) | exchange.IO("api", "eth", ...)调用方式用于调用以太坊RPC方法(配置Web3交易所对象时需选择eth)。 |
exchange.IO("encode", ...) | exchange.IO("encode", ...)函数的这种调用方式用于数据编码。 |
exchange.IO("encodePacked", ...) | exchange.IO("encodePacked", ...)函数用于执行encodePacked编码操作。 |
exchange.IO("decode", ...) | exchange.IO("decode", ...)调用方式用于对数据进行解码。 |
exchange.IO("hash", ...) | exchange.IO("hash", ...)函数的调用方式用于计算哈希摘要、HMAC,以及使用交易所对象配置的私钥签名等,参数与Encode函数相同。 |
exchange.IO("key", ...) | exchange.IO("key", ...)函数用于切换私钥的调用方式。 |
exchange.IO("sign", ...) | exchange.IO("sign", ...)调用方式用于使用secp256k1私钥对32字节哈希进行签名,返回r、s、v等签名数据,适用于EIP-712结构化数据签名(如ERC-20 Permit授权、1inch限价单)等需要链下签名的场景。 |
exchange.IO("signTypedData", ...) | exchange.IO("signTypedData", ...)函数的调用方式用于按照EIP-712标准对结构化数据进行签名,一次调用即可完成类型哈希、域分隔符、结构体哈希和摘要的计算并签名,适用于ERC-20 Permit、Permit2、UniswapX、CoW、1inch限价单等场景。 |
exchange.IO("signMessage", ...) | exchange.IO("signMessage", ...)调用方式用于按照EIP-191标准(personal_sign)对消息进行签名,签名结果与ethers的signMessage、钱包的personal_sign一致,常用于DApp登录、链下鉴权等场景。 |
exchange.IO("api", ...) | exchange.IO("api", ...)调用方式用于调用智能合约的方法。 |
exchange.IO("call", ...) | exchange.IO("call", ...)调用方式通过eth_call模拟执行智能合约的任意方法(包括会修改链上状态的写入方法),该过程不签名、不广播交易、不消耗gas,适用于链上询价、交易预演以及检查交易能否成功执行。 |
exchange.IO("multicall", ...) | exchange.IO("multicall", ...)调用方式用于通过Multicall3合约在一次请求中批量读取多个合约调用的结果,适用于批量查询余额、流动池状态、报价等数据,可有效减少RPC请求次数。 |
exchange.IO("logs", ...) | exchange.IO("logs", ...)调用方式用于查询合约的事件日志(eth_getLogs),并按ABI进行解码。 |
exchange.IO("waitReceipt", ...) | exchange.IO("waitReceipt", ...)调用方式用于等待交易上链并达到指定的确认数,返回交易回执及解码后的事件日志。 |
exchange.IO("nonce", ...) | exchange.IO("nonce", ...)函数的调用方式用于查看、同步或设置发送交易时使用的nonce计数。 |
exchange.IO("speedUp", ...) | exchange.IO("speedUp", ...)调用方式用于对卡住(长时间未上链)的交易进行加价重发:保持接收地址、金额、调用数据和gas上限不变,仅提高手续费。 |
exchange.IO("cancelTx", ...) | exchange.IO("cancelTx", ...)调用方式用于取消尚未上链的交易:使用与原交易相同的nonce,以更高的手续费发送一笔转给自己的0金额交易;该交易先上链后,原交易即失效。 |
exchange.IO("toUnits", ...) | exchange.IO("toUnits", ...)函数的调用方式用于将可读数量换算为链上整数。 |
exchange.IO("fromUnits", ...) | exchange.IO("fromUnits", ...)调用方式用于将链上整数值换算为可读数量,整个换算过程基于字符串进行精确计算,不经过浮点数运算,避免精度损失。 |
exchange.IO("uniswapV3", ...) | exchange.IO("uniswapV3", ...)调用方式用于集中流动性(Uniswap V3)相关的计算,包括tick、价格与sqrtPriceX96之间的换算,以及流动性与代币数量之间的换算。 |
exchange.IO("contracts", ...) | exchange.IO("contracts", ...)调用方式用于获取当前链(或指定链)的常用合约地址,包括主流代币、Multicall3、Permit2,以及Uniswap V3、PancakeSwap V3的Factory、路由、QuoterV2和头寸管理合约。 |
exchange.IO("address") | exchange.IO("address")函数的调用方式用于获取exchange交易所对象配置的钱包的地址。 |
exchange.IO("base", ...) | exchange.IO("base", ...)调用方式用于设置RPC节点地址,支持设置多个节点互为备用。 |
exchange.IO("sendBase", ...) | exchange.IO("sendBase", ...)调用方式用于设置仅用于广播交易的节点。 |
Uniswap
| 名称 | 说明 |
|---|---|
exchange.IO("transfer", ...) | exchange.IO("transfer", ...)调用方式用于从Uniswap交易所对象所配置的钱包中转出链上原生币(如ETH、BNB)或ERC20代币。 |
exchange.IO("receipt", ...) | 以exchange.IO("receipt", ...)方式调用该函数,可查询Uniswap交易所对象所发出交易(如下单、转账等)的回执,也可等待交易上链。 |
exchange.IO("route", ...) | exchange.IO("route", ...)调用用于在Uniswap交易所对象上询价:列出一笔兑换在各条候选路径上的报价以及最优路径,不会实际下单。 |
exchange.IO("simulate", ...) | exchange.IO("simulate", ...)调用方式按照Uniswap交易所对象的下单逻辑(路径选择、询价、价格保护)构造兑换交易,仅在链上进行模拟执行(eth_call),不签名、不广播,也不消耗gas。 |
exchange.IO("token", ...) | exchange.IO("token", ...)函数的调用方式用于在Uniswap交易所对象上登记代币,或者列出代币表。 |
exchange.IO("wrap", ...) | exchange.IO("wrap", ...)函数的调用方式用于在Uniswap交易所对象上把原生币(ETH、BNB)包装成包装币(WETH、WBNB),1:1兑换,没有滑点,只花gas。 |
exchange.IO("unwrap", ...) | exchange.IO("unwrap", ...)函数的调用方式用于在Uniswap交易所对象上把包装币(WETH、WBNB)解包成原生币(ETH、BNB),1:1兑换,没有滑点,只花gas。 |
exchange.IO("approve", ...) | 以exchange.IO("approve", ...)方式调用该函数,可在Uniswap交易所对象上设置代币授权模式。 |
exchange.IO("slippage", ...) | exchange.IO("slippage", ...)函数的此种调用方式用于为Uniswap交易所对象设置市价单的滑点保护。 |
exchange.IO("deadline", ...) | exchange.IO("deadline", ...)调用方式用于在Uniswap交易所对象上设置交易的截止时间。 |
exchange.IO("gasMultiplier", ...) | exchange.IO("gasMultiplier", ...)调用方式用于在Uniswap交易所对象上设置gas上限倍数。 |
TA
| 名称 | 说明 |
|---|---|
TA.MACD | TA.MACD()函数用于计算指数平滑异同移动平均线(MACD)指标。 |
TA.KDJ | TA.KDJ()函数用于计算随机指标(KDJ)。 |
TA.RSI | TA.RSI()函数用于计算相对强弱指标(RSI)。 |
TA.ATR | TA.ATR()函数用于计算平均真实波幅指标(ATR)。 |
TA.OBV | TA.OBV()函数用于计算能量潮指标(OBV)。 |
TA.MA | TA.MA()函数用于计算移动平均线指标(Moving Average)。 |
TA.EMA | TA.EMA()函数用于计算指数移动平均线(EMA)指标。 |
TA.BOLL | TA.BOLL()函数用于计算布林带指标。 |
TA.Alligator | TA.Alligator()函数用于计算鳄鱼线指标(Alligator)。 |
TA.CMF | TA.CMF()函数用于计算蔡金资金流量指标(Chaikin Money Flow)。 |
TA.Highest | TA.Highest()函数用于计算周期内最高价。 |
TA.Lowest | TA.Lowest()函数用于计算周期最低价。 |
TA.SMA | TA.SMA()函数用于计算简单移动平均线(SMA)指标。 |
Talib/OverlapStudies
| 名称 | 说明 |
|---|---|
talib.BBANDS | talib.BBANDS()函数用于计算Bollinger Bands(布林带)。 |
talib.DEMA | talib.DEMA()函数用于计算Double Exponential Moving Average(双指数移动平均线)。 |
talib.EMA | talib.EMA()函数用于计算Exponential Moving Average(指数移动平均线)。 |
talib.HT_TRENDLINE | talib.HT_TRENDLINE()函数用于计算Hilbert Transform - Instantaneous Trendline(希尔伯特变换瞬时趋势线)。 |
talib.KAMA | talib.KAMA()函数用于计算Kaufman自适应移动平均线(Kaufman Adaptive Moving Average)。 |
talib.MA | talib.MA()函数用于计算Moving average(移动平均线)。 |
talib.MAMA | talib.MAMA()函数用于计算MESA自适应移动平均线(MESA Adaptive Moving Average)。 |
talib.MIDPOINT | talib.MIDPOINT()函数用于计算MidPoint over period(中点价格)。 |
talib.MIDPRICE | talib.MIDPRICE()函数用于计算Midpoint Price over period(中点价格)。 |
talib.SAR | talib.SAR()函数用于计算抛物线转向指标(Parabolic SAR)。 |
talib.SAREXT | talib.SAREXT()函数用于计算Parabolic SAR - Extended(增强型抛物线转向指标)。 |
talib.SMA | talib.SMA()函数用于计算Simple Moving Average(简单移动平均线)。 |
talib.T3 | talib.T3()函数用于计算Triple Exponential Moving Average (T3) (三重指数移动平均)。 |
talib.TEMA | talib.TEMA()函数用于计算Triple Exponential Moving Average(三重指数移动平均线)。 |
talib.TRIMA | talib.TRIMA()函数用于计算Triangular Moving Average(三角移动平均线)。 |
talib.WMA | talib.WMA()函数用于计算Weighted Moving Average(加权移动平均)。 |
Talib/MomentumIndicators
| 名称 | 说明 |
|---|---|
talib.ADX | talib.ADX()函数用于计算Average Directional Movement Index(平均趋向指数)。 |
talib.ADXR | talib.ADXR()函数用于计算平均趋向指数评级(Average Directional Movement Index Rating)。 |
talib.APO | talib.APO()函数用于计算Absolute Price Oscillator(绝对价格振荡器)。 |
talib.AROON | talib.AROON()函数用于计算Aroon(阿隆指标)。 |
talib.AROONOSC | talib.AROONOSC()函数用于计算Aroon Oscillator(阿隆震荡指标)。 |
talib.BOP | talib.BOP()函数用于计算Balance Of Power(均势指标)。 |
talib.CCI | talib.CCI()函数用于计算Commodity Channel Index(商品通道指数)。 |
talib.CMO | talib.CMO()函数用于计算Chande Momentum Oscillator(钱德动量摆动指标)。 |
talib.DX | talib.DX()函数用于计算Directional Movement Index(动向指数)。 |
talib.MACD | talib.MACD()函数用于计算Moving Average Convergence/Divergence(移动平均收敛发散指标)。 |
talib.MACDEXT | talib.MACDEXT()函数用于计算MACD with controllable MA type(可控移动平均类型的MACD)。 |
talib.MACDFIX | talib.MACDFIX()函数用于计算Moving Average Convergence/Divergence Fix 12/26(移动平均收敛/发散固定12/26)。 |
talib.MFI | talib.MFI()函数用于计算Money Flow Index(资金流量指数)。 |
talib.MINUS_DI | talib.MINUS_DI()函数用于计算负向指标(Minus Directional Indicator)。 |
talib.MINUS_DM | talib.MINUS_DM()函数用于计算负向运动指标(Minus Directional Movement)。 |
talib.MOM | talib.MOM()函数用于计算Momentum(动量指标)。 |
talib.PLUS_DI | talib.PLUS_DI()函数用于计算Plus Directional Indicator(正向指标)。 |
talib.PLUS_DM | talib.PLUS_DM()函数用于计算Plus Directional Movement(正向运动指标)。 |
talib.PPO | talib.PPO()函数用于计算Percentage Price Oscillator(价格振荡百分比)。 |
talib.ROC | talib.ROC()函数用于计算*变动率指标(Rate of change):((price/prevPrice)-1)100。 |
talib.ROCP | talib.ROCP()函数用于计算价格变化率百分比:(price-prevPrice)/prevPrice。 |
talib.ROCR | talib.ROCR()函数用于计算价格变化率比值:(price/prevPrice)。 |
talib.ROCR100 | talib.ROCR100()函数用于计算Rate of change ratio 100 scale: (price/prevPrice)*100(价格变化率比例100倍)。 |
talib.RSI | talib.RSI()函数用于计算Relative Strength Index(相对强弱指标)。 |
talib.STOCH | talib.STOCH()函数用于计算随机指标(STOCH指标)。 |
talib.STOCHF | talib.STOCHF()函数用于计算快速随机指标(Stochastic Fast)。 |
talib.STOCHRSI | talib.STOCHRSI()函数用于计算随机相对强弱指数(Stochastic Relative Strength Index)。 |
talib.TRIX | talib.TRIX()函数用于计算1-day Rate-Of-Change (ROC) of a Triple Smooth EMA(三重指数平滑移动平均线的一日变化率)。 |
talib.ULTOSC | talib.ULTOSC()函数用于计算Ultimate Oscillator(极限振荡器)。 |
talib.WILLR | talib.WILLR()函数用于计算Williams' %R(威廉指标)。 |
Talib/VolumeIndicators
| 名称 | 说明 |
|---|---|
talib.AD | talib.AD()函数用于计算Chaikin A/D Line(累积/派发线指标)。 |
talib.ADOSC | talib.ADOSC()函数用于计算Chaikin A/D Oscillator(佳庆指标)。 |
talib.OBV | talib.OBV()函数用于计算On Balance Volume(能量潮指标)。 |
Talib/VolatilityIndicators
| 名称 | 说明 |
|---|---|
talib.ATR | talib.ATR()函数用于计算**Average True Range(平均真实波幅)**指标。 |
talib.NATR | talib.NATR()函数用于计算Normalized Average True Range(归一化平均真实范围)。 |
talib.TRANGE | talib.TRANGE()函数用于计算**True Range(真实范围)**指标。 |
Talib/CycleIndicators
| 名称 | 说明 |
|---|---|
talib.HT_DCPERIOD | talib.HT_DCPERIOD()函数用于计算Hilbert Transform - Dominant Cycle Period(希尔伯特变换主导周期)。 |
talib.HT_DCPHASE | talib.HT_DCPHASE()函数用于计算希尔伯特变换主周期相位(Hilbert Transform - Dominant Cycle Phase)。 |
talib.HT_PHASOR | talib.HT_PHASOR()函数用于计算Hilbert Transform - Phasor Components(希尔伯特变换-相量分量)。 |
talib.HT_SINE | talib.HT_SINE()函数用于计算Hilbert Transform - SineWave(希尔伯特变换 - 正弦波)。 |
talib.HT_TRENDMODE | talib.HT_TRENDMODE()函数用于计算Hilbert Transform - Trend vs Cycle Mode(希尔伯特变换 - 趋势与周期模式)。 |
Talib/PriceTransform
| 名称 | 说明 |
|---|---|
talib.AVGPRICE | talib.AVGPRICE()函数用于计算Average Price(平均价格)。 |
talib.MEDPRICE | talib.MEDPRICE()函数用于计算Median Price(中位数价格)。 |
talib.TYPPRICE | talib.TYPPRICE()函数用于计算典型价格(Typical Price)。 |
talib.WCLPRICE | talib.WCLPRICE()函数用于计算Weighted Close Price(加权收盘价)。 |
Talib/StatisticFunctions
| 名称 | 说明 |
|---|---|
talib.LINEARREG | talib.LINEARREG()函数用于计算**Linear Regression(线性回归)**指标。 |
talib.LINEARREG_ANGLE | talib.LINEARREG_ANGLE()函数用于计算Linear Regression Angle(线性回归角度)。 |
talib.LINEARREG_INTERCEPT | talib.LINEARREG_INTERCEPT()函数用于计算线性回归截距(Linear Regression Intercept)。 |
talib.LINEARREG_SLOPE | talib.LINEARREG_SLOPE()函数用于计算Linear Regression Slope(线性回归斜率)。 |
talib.STDDEV | talib.STDDEV()函数用于计算标准偏差(Standard Deviation)。 |
talib.TSF | talib.TSF()函数用于计算Time Series Forecast(时间序列预测)。 |
talib.VAR | talib.VAR()函数用于计算方差(Variance)。 |
Talib/MathTransform
| 名称 | 说明 |
|---|---|
talib.ACOS | talib.ACOS()函数用于计算向量三角反余弦函数(Vector Trigonometric ACos)。 |
talib.ASIN | talib.ASIN()函数用于计算向量三角反正弦函数(Vector Trigonometric ASin)。 |
talib.ATAN | talib.ATAN()函数用于计算向量三角反正切函数(Vector Trigonometric ATan)。 |
talib.CEIL | talib.CEIL()函数用于计算向上取整(Vector Ceil)。 |
talib.COS | talib.COS()函数用于计算Vector Trigonometric Cos(向量三角余弦函数)。 |
talib.COSH | talib.COSH()函数用于计算向量三角双曲余弦值(Vector Trigonometric Cosh)。 |
talib.EXP | talib.EXP()函数用于计算向量算术指数函数(Vector Arithmetic Exp)。 |
talib.FLOOR | talib.FLOOR()函数用于计算向量向下取整(Vector Floor)。 |
talib.LN | talib.LN()函数用于计算向量自然对数(Vector Log Natural)。 |
talib.LOG10 | talib.LOG10()函数用于计算Vector Log10(对数函数)。 |
talib.SIN | talib.SIN()函数用于计算Vector Trigonometric Sin(正弦值)。 |
talib.SINH | talib.SINH()函数用于计算向量三角双曲正弦函数(Vector Trigonometric Sinh)。 |
talib.SQRT | talib.SQRT()函数用于计算向量平方根(Vector Square Root)。 |
talib.TAN | talib.TAN()函数用于计算向量三角正切值(Vector Trigonometric Tan)。 |
talib.TANH | talib.TANH()函数用于计算向量三角双曲正切函数(Vector Trigonometric Tanh)。 |
Talib/MathOperators
| 名称 | 说明 |
|---|---|
talib.MAX | talib.MAX()函数用于计算指定周期内的最大值(Highest value over a specified period)。 |
talib.MAXINDEX | talib.MAXINDEX()函数用于计算指定周期内最大值的索引位置(Index of highest value over a specified period)。 |
talib.MIN | talib.MIN()函数用于计算指定周期内的最小值(Lowest value over a specified period)。 |
talib.MININDEX | talib.MININDEX()函数用于计算指定周期内最小值的索引位置(Index of lowest value over a specified period)。 |
talib.MINMAX | talib.MINMAX()函数用于计算指定周期内的最小值和最大值(Lowest and highest values over a specified period)。 |
talib.MINMAXINDEX | talib.MINMAXINDEX()函数用于计算指定周期内最低值和最高值的索引位置(Indexes of lowest and highest values over a specified period)。 |
talib.SUM | talib.SUM()函数用于计算求和(Summation)。 |
Talib/PatternRecognition
| 名称 | 说明 |
|---|---|
talib.CDL2CROWS | talib.CDL2CROWS()函数用于计算Two Crows(K线形态--两只乌鸦)。 |
talib.CDL3BLACKCROWS | talib.CDL3BLACKCROWS()函数用于计算Three Black Crows(K线图形态--三只黑乌鸦)。 |
talib.CDL3INSIDE | talib.CDL3INSIDE()函数用于计算Three Inside Up/Down(K线形态:三内上下震荡)。 |
talib.CDL3LINESTRIKE | talib.CDL3LINESTRIKE()函数用于计算Three-Line Strike(K线图:三线震荡)。 |
talib.CDL3OUTSIDE | talib.CDL3OUTSIDE()函数用于计算Three Outside Up/Down(K线形态:三外包线)。 |
talib.CDL3STARSINSOUTH | talib.CDL3STARSINSOUTH()函数用于计算Three Stars In The South(K线形态:南方三星)。 |
talib.CDL3WHITESOLDIERS | talib.CDL3WHITESOLDIERS()函数用于计算Three Advancing White Soldiers(K线形态:三白兵)。 |
talib.CDLABANDONEDBABY | talib.CDLABANDONEDBABY()函数用于计算弃婴形态(K线图:Abandoned Baby)。 |
talib.CDLADVANCEBLOCK | talib.CDLADVANCEBLOCK()函数用于计算Advance Block(K线形态:推进阻挡)。 |
talib.CDLBELTHOLD | talib.CDLBELTHOLD()函数用于计算Belt-hold(K线形态:腰带线)。 |
talib.CDLBREAKAWAY | talib.CDLBREAKAWAY()函数用于计算Breakaway(K线形态:分离形态)。 |
talib.CDLCLOSINGMARUBOZU | talib.CDLCLOSINGMARUBOZU()函数用于计算**收盘光头光脚线(Closing Marubozu)**K线形态。 |
talib.CDLCONCEALBABYSWALL | talib.CDLCONCEALBABYSWALL()函数用于计算Concealing Baby Swallow(K线图:藏婴吞没形态)。 |
talib.CDLCOUNTERATTACK | talib.CDLCOUNTERATTACK()函数用于计算反击线形态(K线图:反击)。 |
talib.CDLDARKCLOUDCOVER | talib.CDLDARKCLOUDCOVER()函数用于计算乌云盖顶(Dark Cloud Cover)K线形态。 |
talib.CDLDOJI | talib.CDLDOJI()函数用于计算Doji(K线图:十字星)。 |
talib.CDLDOJISTAR | talib.CDLDOJISTAR()函数用于计算Doji Star(K线图:十字星)。 |
talib.CDLDRAGONFLYDOJI | talib.CDLDRAGONFLYDOJI()函数用于计算Dragonfly Doji(K线形态:蜻蜓十字星)。 |
talib.CDLENGULFING | talib.CDLENGULFING()函数用于计算吞没形态(Engulfing Pattern)。 |
talib.CDLEVENINGDOJISTAR | talib.CDLEVENINGDOJISTAR()函数用于计算Evening Doji Star(K线形态:黄昏十字星)。 |
talib.CDLEVENINGSTAR | talib.CDLEVENINGSTAR()函数用于计算**Evening Star(K线图:黄昏之星)**形态。 |
talib.CDLGAPSIDESIDEWHITE | talib.CDLGAPSIDESIDEWHITE()函数用于计算Up/Down-gap side-by-side white lines (K线图:上/下间隙并排白色线条)。 |
talib.CDLGRAVESTONEDOJI | talib.CDLGRAVESTONEDOJI()函数用于计算**墓碑十字线(Gravestone Doji)**K线形态。 |
talib.CDLHAMMER | talib.CDLHAMMER()函数用于计算锤子线(K线形态:锤子)。 |
talib.CDLHANGINGMAN | talib.CDLHANGINGMAN()函数用于计算Hanging Man(K线形态:吊人线)。 |
talib.CDLHARAMI | talib.CDLHARAMI()函数用于计算Harami Pattern(K线图:阴阳线模式)。 |
talib.CDLHARAMICROSS | talib.CDLHARAMICROSS()函数用于计算Harami Cross Pattern(K线图:十字星孕线形态)。 |
talib.CDLHIGHWAVE | talib.CDLHIGHWAVE()函数用于计算High-Wave Candle(K线图:长脚十字线)。 |
talib.CDLHIKKAKE | talib.CDLHIKKAKE()函数用于计算Hikkake Pattern(K线图:陷阱模式)。 |
talib.CDLHIKKAKEMOD | talib.CDLHIKKAKEMOD()函数用于计算Modified Hikkake Pattern(K线图:改良陷阱模式)。 |
talib.CDLHOMINGPIGEON | talib.CDLHOMINGPIGEON()函数用于计算Homing Pigeon(K线形态:信鸽形态)。 |
talib.CDLIDENTICAL3CROWS | talib.CDLIDENTICAL3CROWS()函数用于计算Identical Three Crows(K线形态:相同三只乌鸦)。 |
talib.CDLINNECK | talib.CDLINNECK()函数用于计算颈内线形态(K线图:颈内线)。 |
talib.CDLINVERTEDHAMMER | talib.CDLINVERTEDHAMMER()函数用于计算倒锤形态(K线图:倒锤)。 |
talib.CDLKICKING | talib.CDLKICKING()函数用于计算Kicking(K线形态:踢腿形态)。 |
talib.CDLKICKINGBYLENGTH | talib.CDLKICKINGBYLENGTH()函数用于计算Kicking - bull/bear determined by the longer marubozu (K线图:踢牛/踢熊)。 |
talib.CDLLADDERBOTTOM | talib.CDLLADDERBOTTOM()函数用于计算Ladder Bottom(K线形态:梯底)。 |
talib.CDLLONGLEGGEDDOJI | talib.CDLLONGLEGGEDDOJI()函数用于计算长腿十字线(K线形态:Long Legged Doji)。 |
talib.CDLLONGLINE | talib.CDLLONGLINE()函数用于计算长线蜡烛形态(K线图:长线)。 |
talib.CDLMARUBOZU | talib.CDLMARUBOZU()函数用于计算**Marubozu(K线图:光头光脚)**模式。 |
talib.CDLMATCHINGLOW | talib.CDLMATCHINGLOW()函数用于计算Matching Low(K线图:匹配低点)。 |
talib.CDLMATHOLD | talib.CDLMATHOLD()函数用于计算Mat Hold(K线形态:垫住)。 |
talib.CDLMORNINGDOJISTAR | talib.CDLMORNINGDOJISTAR()函数用于计算Morning Doji Star(K线形态:早晨十字星)。 |
talib.CDLMORNINGSTAR | talib.CDLMORNINGSTAR()函数用于计算Morning Star(K线形态:晨星)。 |
talib.CDLONNECK | talib.CDLONNECK()函数用于计算On-Neck Pattern(K线图:颈上线形态)。 |
talib.CDLPIERCING | talib.CDLPIERCING()函数用于计算Piercing Pattern(K线图:穿透形态)。 |
talib.CDLRICKSHAWMAN | talib.CDLRICKSHAWMAN()函数用于计算Rickshaw Man(K线形态:车夫线)。 |
talib.CDLRISEFALL3METHODS | talib.CDLRISEFALL3METHODS()函数用于计算Rising/Falling Three Methods(K线形态:上升/下降三法)。 |
talib.CDLSEPARATINGLINES | talib.CDLSEPARATINGLINES()函数用于计算分离线形态(K线图:分离线)。 |
talib.CDLSHOOTINGSTAR | talib.CDLSHOOTINGSTAR()函数用于计算Shooting Star(K线形态:流星)。 |
talib.CDLSHORTLINE | talib.CDLSHORTLINE()函数用于计算短线蜡烛图形态(K线图:短线)。 |
talib.CDLSPINNINGTOP | talib.CDLSPINNINGTOP()函数用于计算Spinning Top(K线形态:陀螺)。 |
talib.CDLSTALLEDPATTERN | talib.CDLSTALLEDPATTERN()函数用于计算Stalled Pattern(K线图:停滞模式)。 |
talib.CDLSTICKSANDWICH | talib.CDLSTICKSANDWICH()函数用于计算Stick Sandwich(K线形态:棍子三明治)。 |
talib.CDLTAKURI | talib.CDLTAKURI()函数用于计算**Takuri (Dragonfly Doji with very long lower shadow) (K线图:托里)**蜡烛图形态。 |
talib.CDLTASUKIGAP | talib.CDLTASUKIGAP()函数用于计算Tasuki Gap(K线图:翼隙)。 |
talib.CDLTHRUSTING | talib.CDLTHRUSTING()函数用于计算Thrusting Pattern(K线图:推进模式)。 |
talib.CDLTRISTAR | talib.CDLTRISTAR()函数用于计算三星形态(K线图:三星模式)。 |
talib.CDLUNIQUE3RIVER | talib.CDLUNIQUE3RIVER()函数用于计算Unique 3 River(K线形态:独特三河)。 |
talib.CDLUPSIDEGAP2CROWS | talib.CDLUPSIDEGAP2CROWS()函数用于计算向上跳空双乌鸦形态(K线图:双飞乌鸦)。 |
talib.CDLXSIDEGAP3METHODS | talib.CDLXSIDEGAP3METHODS()函数用于计算上行/下行缺口三方法(K线形态识别)。 |
OS
| 名称 | 说明 |
|---|---|
ListFilesResult | 文件列表对象,用于记录目录列表信息。 |
FileStat | 文件统计信息对象。 |
OS/os
| 名称 | 说明 |
|---|---|
open | 以指定模式打开文件。 |
fgets | 一次性读取整个文件的内容。 |
fputs | 向文件写入内容。 |
mmap | 内存映射文件,返回文件的二进制数据。 |
getRootDir | 获取文件操作的根目录路径。 |
listFiles | 列出指定目录中的文件和子目录。 |
exists | 检查指定的文件或目录是否存在。 |
remove | 删除指定文件。 |
mkdir | 创建目录。 |
rmdir | 删除目录及其所有内容。 |
rename | 重命名文件或移动文件。 |
stat | 获取文件的详细统计信息。 |
exit | 退出程序。 |
OS/File
| 名称 | 说明 |
|---|---|
close | 关闭文件并释放相关资源。 |
puts | 向文件写入一个或多个字符串。 |
printf | 格式化写入数据到文件。 |
flush | 刷新文件缓冲区,确保数据写入磁盘。 |
tell | 获取当前文件指针的位置。 |
seek | 将文件指针移动到指定位置。 |
eof | 检查文件指针是否已到达文件末尾。 |
read | 从文件中读取数据。 |
write | 向文件写入字符串数据。 |
getline | 从文件中读取下一行内容。 |
toString | 获取文件对象的字符串表示形式。 |
结构体
| 名称 | 说明 |
|---|---|
Ticker | 市场行情数据结构。 |
Depth | 市场深度数据结构。 |
OrderBook | 市场深度中的订单结构。 |
Trade | 市场成交记录的数据结构。 |
Record | K线柱的数据结构,标准的OHLC格式,用于绘制K线图和技术指标计算分析。 |
Market | 交易品种市场信息的数据结构。 |
Order | 订单结构。 |
Condition | 条件单配置信息结构,用于设置条件单的触发条件和执行价格。 |
Account | 账户信息的数据结构。 |
Asset | 具体币种资产信息的数据结构。 |
Position | 合约仓位信息的数据结构。 |
Funding | 交易品种资金费率信息的数据结构,仅加密货币永续合约支持资金费率功能。 |
OtherStruct
| 名称 | 说明 |
|---|---|
HttpQuery-options | 此JSON结构用于配置HttpQuery函数和HttpQuery_Go函数发送HTTP请求的各项参数。 |
HttpQuery-return | 该JSON结构是调用HttpQuery函数时,在参数options结构中将debug字段指定为true后,HttpQuery函数在调试模式下返回的数据结构。 |
LogStatus-table | 此JSON结构用于配置策略状态栏中显示的表格内容。 |
LogStatus-btnTypeOne | 该JSON结构用于配置状态栏中的按钮控件,按钮控件JSON结构可以嵌入到状态栏表格JSON结构中。 |
LogStatus-btnTypeTwo | 此JSON结构用于配置状态栏中的按钮控件,按钮控件JSON结构可以嵌入到状态栏表格JSON结构中。 |
Chart-options | 此JSON用于配置自定义绘图函数Chart()的图表设置信息,图表库使用Highcharts。 |
KLineChart-options | 此JSON用于设置自定义绘图函数KLineChart的图表配置信息。 |
SetData-data | 该JSON用于设置exchange.SetData()函数所要加载的数据。 |
EventLoop-return | 该JSON是EventLoop()函数返回的数据结构。 |
DBExec-return | 该JSON是DBExec()函数返回的数据结构;使用Dial()函数创建的对象的exec()方法执行SQL语句时,也返回此JSON数据结构。 |
Thread.join-return | 该JSON是Thread对象的成员函数join()返回的数据结构,用于保存JavaScript语言策略中并发线程的相关信息。 |
内置变量与常量
EXCHANGE
| 名称 | 说明 |
|---|---|
exchange | exchange 是一个交易所对象,也是在策略实盘设置、回测设置中添加的第一个交易所对象。 |
exchanges | exchanges 是一个交易所对象数组,包含在策略实盘设置或回测设置中添加的所有交易所对象,其中 exchanges[0] 即为 exchange。 |
ORDER_STATE
| 名称 | 说明 |
|---|---|
ORDER_STATE_PENDING | ORDER_STATE_PENDING是Order结构中的Status属性的值,表示订单状态为待处理状态。 |
ORDER_STATE_CLOSED | ORDER_STATE_CLOSED是Order结构中的Status属性的值,表示订单状态为已完成。 |
ORDER_STATE_CANCELED | ORDER_STATE_CANCELED 是 Order 结构中 Status 属性的值,表示订单状态为已取消。 |
ORDER_STATE_UNKNOWN | ORDER_STATE_UNKNOWN是Order结构中的Status属性的值,表示订单状态为未知状态(其他状态)。 |
ORDER_TYPE
| 名称 | 说明 |
|---|---|
ORDER_TYPE_BUY | ORDER_TYPE_BUY是Order结构中的Type属性值,表示买入订单类型。 |
ORDER_TYPE_SELL | ORDER_TYPE_SELL是Order结构中的Type属性值,用于表示卖单类型。 |
ORDER_CONDITION_TYPE
| 名称 | 说明 |
|---|---|
ORDER_CONDITION_TYPE_OCO | ORDER_CONDITION_TYPE_OCO是Condition结构中的ConditionType属性的值,表示OCO订单(One-Cancels-the-Other,一触即撤订单)。 |
ORDER_CONDITION_TYPE_TP | ORDER_CONDITION_TYPE_TP 是 Condition 结构中的 ConditionType 属性值,表示止盈单(Take Profit)。 |
ORDER_CONDITION_TYPE_SL | ORDER_CONDITION_TYPE_SL 是 Condition 结构中的 ConditionType 属性值,表示止损单(Stop Loss)。 |
ORDER_CONDITION_TYPE_GENERIC | ORDER_CONDITION_TYPE_GENERIC 是 Condition 结构中的 ConditionType 属性值,表示通用条件单。 |
POSITION_DIRECTION
| 名称 | 说明 |
|---|---|
PD_LONG | PD_LONG是Position结构中的Type属性值,表示多头仓位类型。 |
PD_SHORT | PD_SHORT是Position结构中的Type属性值,表示空头仓位类型。 |
ORDER_OFFSET
| 名称 | 说明 |
|---|---|
ORDER_OFFSET_OPEN | ORDER_OFFSET_OPEN是Order结构中Offset属性的取值,表示该订单为开仓操作。 |
ORDER_OFFSET_CLOSE | ORDER_OFFSET_CLOSE是Order结构中Offset属性的取值,表示订单为平仓方向。 |
PERIOD
| 名称 | 说明 |
|---|---|
PERIOD_M1 | 表示1分钟K线周期的常量,数值为60。 |
PERIOD_M3 | 表示3分钟K线周期的常量,其值为180。 |
PERIOD_M5 | 表示5分钟K线周期的常量,数值为300。 |
PERIOD_M15 | 表示15分钟K线周期的常量,其值为900。 |
PERIOD_M30 | 表示30分钟K线周期的常量,其值为1800秒。 |
PERIOD_H1 | 表示1小时K线周期的常量,数值为3600。 |
PERIOD_H2 | 表示2小时K线周期的常量,数值为7200。 |
PERIOD_H4 | 表示4小时K线周期的常量,数值为14400。 |
PERIOD_H6 | 表示6小时K线周期的常量,数值为21600。 |
PERIOD_H12 | 表示12小时K线周期的常量,数值为43200。 |
PERIOD_D1 | 表示1日K线周期的常量,数值为86400。 |
PERIOD_D3 | 表示3日K线周期的常量,数值为259200。 |
PERIOD_W1 | 表示1周K线周期的常量,数值为604800秒。 |
LOG_TYPE
| 名称 | 说明 |
|---|---|
LOG_TYPE_BUY | LOG_TYPE_BUY是exchange.Log函数的LogType参数可选值,用于设置exchange.Log函数打印的日志类型为买单日志。 |
LOG_TYPE_SELL | LOG_TYPE_SELL是exchange.Log函数的LogType参数可选值,用于设置exchange.Log函数打印卖单日志。 |
LOG_TYPE_CANCEL | LOG_TYPE_CANCEL是exchange.Log函数的LogType参数可选值,用于设置exchange.Log函数打印撤销订单日志。 |