输入/搜索内容
入门
欢迎使用发明者量化交易平台
快速开始
密钥安全性
平台基础
账号与计费
实盘计费与充值
子账号
交易所
通用协议
本地凭据文件
交易所特殊说明
证券与期货
加密货币
托管者
策略库
实盘
编写策略
开发工具
回测系统
进阶专题
数据与研究
对外接口

JavaScript(含 TypeScript)、Python、Rust策略由几个约定名称的函数组成,托管者在固定的时机调用它们。My语言、PINE、Blockly、Workflow 策略不需要编写这些函数。

生命周期函数

函数是否必须调用时机
main()必须入口函数,策略的主体。main()返回,策略即运行结束。
init()可选在main()之前调用一次,用于初始化。
onexit()可选策略退出时调用,用于扫尾(撤单、平仓、保存状态等)。
onerror(msg)可选仅JavaScript:main()因未捕获的异常结束时调用,msg为错误信息。调用了onerror()就不再调用onexit()。
destroy()可选仅JavaScript模板类库:策略退出时,在onexit()或onerror()之后调用,见 模板类库。

退出时调用哪个函数:

退出原因JavaScriptPythonRust
main()正常返回onexit()onexit()onexit()
停止实盘onexit()onexit()onexit()
未捕获的异常、paniconerror(msg)都不调用onexit()

注意事项:

  • onexit()、onerror()最长执行 5 分钟(时长由服务端按任务下发,默认 5 分钟),超时会被强制结束。
  • 回测中策略通常是不停轮询的死循环,回测结束时main()并没有正常返回,处理方法见 onexit()。
  • JavaScript策略的main()返回时,用threading创建的子线程会被终止;还没有到期的setTimeout回调会先执行完,再调用onexit()。
  • JavaScript、Python模板类库可以定义自己的init(),在模板加载时执行,早于策略的init()。

主循环与事件驱动

大多数策略在main()中写一个循环:每轮获取数据、计算、下单,然后Sleep()等待下一轮,见 主循环。也可以等待行情、订单等事件到达后再处理,见 事件驱动。全部 API 函数的分类速查见 API函数速查。

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()由用户实现,在策略退出时处理扫尾工作,可以不定义。最长执行 5 分钟,超时会被强制结束。各语言在哪些情况下调用onexit(),见 策略结构。

示例

  • 测试onexit()函数:

    javascript
    function 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) } }
    python
    import 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)
    rust
    fn 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,退出循环即可。

    javascript
    function 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") }
    python
    def 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")
    rust
    fn 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(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限流控制。

示例

  • 基本框架:

    javascript
    function onTick(){ // 在这里写策略逻辑,将会不断调用,例如打印行情信息 Log(exchange.GetTicker()) } function main(){ while(true){ onTick() // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁 Sleep(60000) } }
    python
    def onTick(): Log(exchange.GetTicker()) def main(): while True: onTick() Sleep(60000)
    rust
    fn onTick() { // 在这里写策略逻辑,将会不断调用,例如打印行情信息 Log!(exchange.GetTicker(None)); } fn main() { loop { onTick(); // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁 Sleep(60000); } }
  • 举个最简单的例子:每隔1秒钟在交易所挂一个价格为100、数量为1的买单,可以这样写:

    javascript
    function onTick(){ // 这个仅仅是例子,回测或者实盘会很快把资金全部用于下单,实盘请勿使用 exchange.Buy(100, 1) } function main(){ while(true){ onTick() // 暂停多久可自定义,单位为毫秒,1秒等于1000毫秒 Sleep(1000) } }
    python
    def onTick(): exchange.Buy(100, 1) def main(): while True: onTick() Sleep(1000)
    rust
    fn onTick() { // 这个仅仅是例子,回测或者实盘会很快把资金全部用于下单,实盘请勿使用 let _ = exchange.Buy(100, 1); } fn main() { loop { onTick(); // 暂停多久可自定义,单位为毫秒,1秒等于1000毫秒 Sleep(1000); } }
  • 按K线更新处理的策略(On Bar):最新一根K线的时间变化时才执行onTick():

    javascript
    function 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) } }
    python
    def 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)
    rust
    fn 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手册的分类列出全部函数、结构体和常量,每项一句话说明,点击名称查看完整文档。本页由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.parseJSON.parse函数是ECMAScript标准内建对象JSON的方法,用于解码(解析)JSON字符串。
JSON.stringifyJSON.stringify函数是ECMAScript标准内置对象JSON的方法,用于将JavaScript值转换为JSON字符串。
Encode该函数根据传入的参数对数据进行编码。
MD5计算参数data的 MD5 哈希值。
UUID创建一个 UUID。

Log

名称说明
LogLog()函数用于输出日志。
LogStatus在回测系统或实盘页面的状态栏中输出信息。
LogProfit记录并打印盈亏数值,并根据盈亏数值绘制收益曲线。
LogProfitReset清空所有收益日志及收益图表。
LogReset清除日志。
LogVacuum用于在调用 LogReset() 函数清除日志后,回收 SQLite 删除数据时所占用的存储空间。
EnableLog启用或禁用订单信息的日志记录。
Chart自定义图表绘图函数。
KLineChart该函数用于采用类似Pine语言的绘图方式,在策略运行时进行自定义绘图。
console.log用于在实盘页面的「调试信息」栏中输出调试信息。
console.error用于在实盘页面的「调试信息」栏中输出错误信息。
exchange.Logexchange.Log()函数用于在日志栏区域输出下单、撤单日志。

Market

名称说明
exchange.GetTicker获取当前设置的交易对、合约代码所对应现货或合约的Ticker结构,即行情数据。
exchange.GetTickersexchange.GetTickers()函数用于获取交易所的聚合行情数据(Ticker结构的数组)。
exchange.GetDepth获取当前设置的交易对、合约代码所对应的现货或合约的Depth结构,即订单簿数据。
exchange.GetTrades获取当前设置的交易对、合约代码所对应的现货或合约的Trade结构数组,即市场的成交数据。
exchange.GetRecords获取当前设置的交易对、合约代码所对应的现货或合约的Record结构数组,即K线数据。
exchange.GetMarketsexchange.GetMarkets()函数用于获取交易所的市场信息。
exchange.GetRawJSON获取当前交易所对象(exchange、exchanges)最近一次rest请求返回的原始内容。
exchange.SetDataexchange.SetData()函数用于设置策略运行时所加载的数据。
exchange.GetDataexchange.GetData()函数用于获取由exchange.SetData()函数加载的数据,或外部链接提供的数据。

Trade

名称说明
exchange.Buyexchange.Buy()函数用于下买单。
exchange.Sellexchange.Sell()函数用于下达卖单。
exchange.CreateOrderexchange.CreateOrder()函数用于下单。
exchange.ModifyOrderexchange.ModifyOrder()函数用于修改现有的普通订单,可修改订单的价格和数量。
exchange.CancelOrderexchange.CancelOrder()函数用于取消订单。
exchange.GetOrderexchange.GetOrder()函数用于获取订单信息。
exchange.GetOrdersexchange.GetOrders()函数用于获取当前未完成的订单。
exchange.GetHistoryOrdersexchange.GetHistoryOrders()函数用于获取当前交易对、合约的历史订单,并支持指定具体的交易品种。
exchange.CreateConditionOrderexchange.CreateConditionOrder()函数用于创建条件单。
exchange.ModifyConditionOrderexchange.ModifyConditionOrder()函数用于修改现有的条件单,可修改条件单的下单量、触发条件和执行价格。
exchange.CancelConditionOrderexchange.CancelConditionOrder()函数用于取消条件单。
exchange.GetConditionOrderexchange.GetConditionOrder()函数用于获取指定条件单的信息。
exchange.GetConditionOrdersexchange.GetConditionOrders()函数用于获取未完成的条件单(尚未触发或尚未取消的条件单)。
exchange.GetHistoryConditionOrdersexchange.GetHistoryConditionOrders()函数用于获取当前交易对、合约的历史条件单(包括已触发、已取消、已过期的条件单),并支持指定具体的交易品种。

Account

名称说明
exchange.GetAccountexchange.GetAccount()函数用于请求交易所账户信息。
exchange.GetAssetsexchange.GetAssets函数用于请求交易所账户的资产信息。

Futures

名称说明
exchange.SetContractTypeexchange.SetContractType()函数用于设置exchange交易所对象当前的合约代码。
exchange.GetContractTypeexchange.GetContractType()函数用于获取exchange交易所对象当前设置的合约代码。
exchange.SetDirectionexchange.SetDirection()函数用于设置调用exchange.Buy函数、exchange.Sell函数进行期货合约下单时的订单方向。
exchange.SetMarginLevelexchange.SetMarginLevel()函数用于设置symbol参数所指定的交易对、合约的杠杆值。
exchange.GetPositionsexchange.GetPositions()函数用于获取持仓信息;GetPositions()函数是交易所对象exchange的成员函数。
exchange.GetFundingsexchange.GetFundings()函数用于获取当前周期的资金费率数据。

Exchange

名称说明
exchange.GetNameexchange.GetName()函数用于获取当前交易所对象所绑定的交易所名称。
exchange.GetLabelexchange.GetLabel()函数用于获取配置交易所对象时设置的自定义标签。
exchange.GetCurrencyexchange.GetCurrency()函数用于获取当前设置的交易对。
exchange.SetCurrencyexchange.SetCurrency()函数用于切换交易所对象exchange当前的交易对。
exchange.GetQuoteCurrencyexchange.GetQuoteCurrency()函数用于获取当前交易对的计价币名称,即quoteCurrency。
exchange.GetPeriod获取回测或实盘运行策略时,在发明者量化交易平台网站页面上所设置的 K 线周期,即调用 exchange.GetRecords() 函数且不传入参数时使用的默认 K 线周期。
exchange.SetMaxBarLen设置K线的最大长度。
exchange.SetPrecisionexchange.SetPrecision()函数用于设置exchange交易所对象的价格与下单量的精度,设置后系统会自动忽略数据中超出精度的多余部分。
exchange.GetRate获取交易所对象当前设置的汇率。
exchange.SetRate设置交易所对象当前的汇率。
exchange.SetBaseexchange.SetBase()函数用于设置exchange交易所对象所使用的交易所API接口基地址。
exchange.GetBaseexchange.GetBase() 函数用于获取当前交易所 API 接口的基础地址。
exchange.SetProxyexchange.SetProxy()函数用于设置exchange交易所对象的代理配置。
exchange.SetTimeoutexchange.SetTimeout()函数用于设置exchange交易所对象rest请求的超时时间。
exchange.Encodeexchange.Encode()函数用于执行签名与加密计算。

IO

名称说明
exchange.IOexchange.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_GoMail函数的异步版本。

Storage

名称说明
_G持久化保存数据。
DBExec数据库接口函数。
SetChannelData在频道上发布最新的状态数据。
GetChannelData订阅指定实盘的频道数据。

Threads

名称说明
exchange.Go多线程异步支持函数,可将所有受支持函数的操作转换为异步并发执行。
EventLoop监听事件,当任意WebSocket有可读数据,或exchange.Go()、HttpQuery_Go()等并发任务完成后返回。

Threads/threading

名称说明
ThreadThread()函数用于创建并发线程。
getThreadgetThread()函数用于根据指定的线程ID获取线程对象。
mainThreadmainThread()函数用于获取主线程的线程对象,即策略中main()函数所在的线程。
currentThreadcurrentThread()函数用于获取当前线程的线程对象。
LockLock()函数用于创建线程锁对象。
ConditionCondition()函数用于创建一个条件变量对象,该对象用于在多线程并发环境中实现线程间的同步与通信。
EventEvent()函数用于创建一个线程事件对象,该对象用于线程间的同步,允许一个线程等待另一个线程的通知或信号。
DictDict()函数用于创建一个字典对象,用于在并发线程间传递和共享数据。
ServeServe()函数在策略进程内创建Http服务、TCP服务、Websocket服务(基于Http协议),返回Server对象。
pendingpending函数用于获取当前策略程序中正在运行的并发线程数量。

Threads/Thread

名称说明
peekMessagepeekMessage()函数用于从线程接收消息。
postMessagepostMessage()函数用于向线程发送消息。
joinjoin()函数用于等待线程退出,并回收系统资源。
terminateterminate()函数用于强制终止线程,释放创建线程时占用的硬件资源。
getDatagetData()函数用于访问线程环境中记录的变量。
setDatasetData()函数用于在线程环境中存储变量。
idid()函数用于返回当前多线程对象实例的threadId。
namename()函数用于返回当前多线程对象实例的名称。
eventLoopeventLoop() 函数用于监听当前线程接收到的事件。

Threads/ThreadLock

名称说明
acquireacquire()函数用于请求线程锁(加锁)。
releaserelease()函数用于释放线程锁(解锁)。

Threads/ThreadEvent

名称说明
setset()函数用于设置事件信号。
clearclear()函数用于清除信号。
waitwait()函数用于设置事件(信号)等待,在事件(信号)被设置之前会阻塞;支持设置超时参数。
isSetisSet()函数用于判断事件(信号)是否已被设置。

Threads/ThreadCondition

名称说明
notifynotify()函数用于唤醒一个正在等待的线程(如果存在)。
notifyAllnotifyAll()函数用于唤醒所有正在等待的线程。
waitwait()函数用于在特定条件下使线程进入等待状态。
acquireacquire()函数用于请求线程锁(加锁)。
releaserelease()函数用于释放线程锁(解锁)。

Threads/ThreadDict

名称说明
getget()函数用于获取字典对象中记录的键值。
setset()函数用于设置键值对。

Threads/Server

名称说明
addraddr()函数返回服务实际监听的地址和端口。
closeclose()函数停止接收新连接,正在执行的处理函数继续执行完(优雅关闭)。
stopstop()函数先关闭服务(同close()),再强制结束所有正在执行的处理函数线程。
joinjoin()函数等待服务关闭且所有处理函数执行完毕。
pendingpending()函数返回当前正在执行的处理函数数量,即正在处理的连接或请求数。

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.MACDTA.MACD()函数用于计算指数平滑异同移动平均线(MACD)指标。
TA.KDJTA.KDJ()函数用于计算随机指标(KDJ)。
TA.RSITA.RSI()函数用于计算相对强弱指标(RSI)。
TA.ATRTA.ATR()函数用于计算平均真实波幅指标(ATR)。
TA.OBVTA.OBV()函数用于计算能量潮指标(OBV)。
TA.MATA.MA()函数用于计算移动平均线指标(Moving Average)。
TA.EMATA.EMA()函数用于计算指数移动平均线(EMA)指标。
TA.BOLLTA.BOLL()函数用于计算布林带指标。
TA.AlligatorTA.Alligator()函数用于计算鳄鱼线指标(Alligator)。
TA.CMFTA.CMF()函数用于计算蔡金资金流量指标(Chaikin Money Flow)。
TA.HighestTA.Highest()函数用于计算周期内最高价。
TA.LowestTA.Lowest()函数用于计算周期最低价。
TA.SMATA.SMA()函数用于计算简单移动平均线(SMA)指标。

Talib/OverlapStudies

名称说明
talib.BBANDStalib.BBANDS()函数用于计算Bollinger Bands(布林带)。
talib.DEMAtalib.DEMA()函数用于计算Double Exponential Moving Average(双指数移动平均线)。
talib.EMAtalib.EMA()函数用于计算Exponential Moving Average(指数移动平均线)。
talib.HT_TRENDLINEtalib.HT_TRENDLINE()函数用于计算Hilbert Transform - Instantaneous Trendline(希尔伯特变换瞬时趋势线)。
talib.KAMAtalib.KAMA()函数用于计算Kaufman自适应移动平均线(Kaufman Adaptive Moving Average)。
talib.MAtalib.MA()函数用于计算Moving average(移动平均线)。
talib.MAMAtalib.MAMA()函数用于计算MESA自适应移动平均线(MESA Adaptive Moving Average)。
talib.MIDPOINTtalib.MIDPOINT()函数用于计算MidPoint over period(中点价格)。
talib.MIDPRICEtalib.MIDPRICE()函数用于计算Midpoint Price over period(中点价格)。
talib.SARtalib.SAR()函数用于计算抛物线转向指标(Parabolic SAR)。
talib.SAREXTtalib.SAREXT()函数用于计算Parabolic SAR - Extended(增强型抛物线转向指标)。
talib.SMAtalib.SMA()函数用于计算Simple Moving Average(简单移动平均线)。
talib.T3talib.T3()函数用于计算Triple Exponential Moving Average (T3) (三重指数移动平均)。
talib.TEMAtalib.TEMA()函数用于计算Triple Exponential Moving Average(三重指数移动平均线)。
talib.TRIMAtalib.TRIMA()函数用于计算Triangular Moving Average(三角移动平均线)。
talib.WMAtalib.WMA()函数用于计算Weighted Moving Average(加权移动平均)。

Talib/MomentumIndicators

名称说明
talib.ADXtalib.ADX()函数用于计算Average Directional Movement Index(平均趋向指数)。
talib.ADXRtalib.ADXR()函数用于计算平均趋向指数评级(Average Directional Movement Index Rating)。
talib.APOtalib.APO()函数用于计算Absolute Price Oscillator(绝对价格振荡器)。
talib.AROONtalib.AROON()函数用于计算Aroon(阿隆指标)。
talib.AROONOSCtalib.AROONOSC()函数用于计算Aroon Oscillator(阿隆震荡指标)。
talib.BOPtalib.BOP()函数用于计算Balance Of Power(均势指标)。
talib.CCItalib.CCI()函数用于计算Commodity Channel Index(商品通道指数)。
talib.CMOtalib.CMO()函数用于计算Chande Momentum Oscillator(钱德动量摆动指标)。
talib.DXtalib.DX()函数用于计算Directional Movement Index(动向指数)。
talib.MACDtalib.MACD()函数用于计算Moving Average Convergence/Divergence(移动平均收敛发散指标)。
talib.MACDEXTtalib.MACDEXT()函数用于计算MACD with controllable MA type(可控移动平均类型的MACD)。
talib.MACDFIXtalib.MACDFIX()函数用于计算Moving Average Convergence/Divergence Fix 12/26(移动平均收敛/发散固定12/26)。
talib.MFItalib.MFI()函数用于计算Money Flow Index(资金流量指数)。
talib.MINUS_DItalib.MINUS_DI()函数用于计算负向指标(Minus Directional Indicator)。
talib.MINUS_DMtalib.MINUS_DM()函数用于计算负向运动指标(Minus Directional Movement)。
talib.MOMtalib.MOM()函数用于计算Momentum(动量指标)。
talib.PLUS_DItalib.PLUS_DI()函数用于计算Plus Directional Indicator(正向指标)。
talib.PLUS_DMtalib.PLUS_DM()函数用于计算Plus Directional Movement(正向运动指标)。
talib.PPOtalib.PPO()函数用于计算Percentage Price Oscillator(价格振荡百分比)。
talib.ROCtalib.ROC()函数用于计算*变动率指标(Rate of change):((price/prevPrice)-1)100。
talib.ROCPtalib.ROCP()函数用于计算价格变化率百分比:(price-prevPrice)/prevPrice。
talib.ROCRtalib.ROCR()函数用于计算价格变化率比值:(price/prevPrice)。
talib.ROCR100talib.ROCR100()函数用于计算Rate of change ratio 100 scale: (price/prevPrice)*100(价格变化率比例100倍)。
talib.RSItalib.RSI()函数用于计算Relative Strength Index(相对强弱指标)。
talib.STOCHtalib.STOCH()函数用于计算随机指标(STOCH指标)。
talib.STOCHFtalib.STOCHF()函数用于计算快速随机指标(Stochastic Fast)。
talib.STOCHRSItalib.STOCHRSI()函数用于计算随机相对强弱指数(Stochastic Relative Strength Index)。
talib.TRIXtalib.TRIX()函数用于计算1-day Rate-Of-Change (ROC) of a Triple Smooth EMA(三重指数平滑移动平均线的一日变化率)。
talib.ULTOSCtalib.ULTOSC()函数用于计算Ultimate Oscillator(极限振荡器)。
talib.WILLRtalib.WILLR()函数用于计算Williams' %R(威廉指标)。

Talib/VolumeIndicators

名称说明
talib.ADtalib.AD()函数用于计算Chaikin A/D Line(累积/派发线指标)。
talib.ADOSCtalib.ADOSC()函数用于计算Chaikin A/D Oscillator(佳庆指标)。
talib.OBVtalib.OBV()函数用于计算On Balance Volume(能量潮指标)。

Talib/VolatilityIndicators

名称说明
talib.ATRtalib.ATR()函数用于计算**Average True Range(平均真实波幅)**指标。
talib.NATRtalib.NATR()函数用于计算Normalized Average True Range(归一化平均真实范围)。
talib.TRANGEtalib.TRANGE()函数用于计算**True Range(真实范围)**指标。

Talib/CycleIndicators

名称说明
talib.HT_DCPERIODtalib.HT_DCPERIOD()函数用于计算Hilbert Transform - Dominant Cycle Period(希尔伯特变换主导周期)。
talib.HT_DCPHASEtalib.HT_DCPHASE()函数用于计算希尔伯特变换主周期相位(Hilbert Transform - Dominant Cycle Phase)。
talib.HT_PHASORtalib.HT_PHASOR()函数用于计算Hilbert Transform - Phasor Components(希尔伯特变换-相量分量)。
talib.HT_SINEtalib.HT_SINE()函数用于计算Hilbert Transform - SineWave(希尔伯特变换 - 正弦波)。
talib.HT_TRENDMODEtalib.HT_TRENDMODE()函数用于计算Hilbert Transform - Trend vs Cycle Mode(希尔伯特变换 - 趋势与周期模式)。

Talib/PriceTransform

名称说明
talib.AVGPRICEtalib.AVGPRICE()函数用于计算Average Price(平均价格)。
talib.MEDPRICEtalib.MEDPRICE()函数用于计算Median Price(中位数价格)。
talib.TYPPRICEtalib.TYPPRICE()函数用于计算典型价格(Typical Price)。
talib.WCLPRICEtalib.WCLPRICE()函数用于计算Weighted Close Price(加权收盘价)。

Talib/StatisticFunctions

名称说明
talib.LINEARREGtalib.LINEARREG()函数用于计算**Linear Regression(线性回归)**指标。
talib.LINEARREG_ANGLEtalib.LINEARREG_ANGLE()函数用于计算Linear Regression Angle(线性回归角度)。
talib.LINEARREG_INTERCEPTtalib.LINEARREG_INTERCEPT()函数用于计算线性回归截距(Linear Regression Intercept)。
talib.LINEARREG_SLOPEtalib.LINEARREG_SLOPE()函数用于计算Linear Regression Slope(线性回归斜率)。
talib.STDDEVtalib.STDDEV()函数用于计算标准偏差(Standard Deviation)。
talib.TSFtalib.TSF()函数用于计算Time Series Forecast(时间序列预测)。
talib.VARtalib.VAR()函数用于计算方差(Variance)。

Talib/MathTransform

名称说明
talib.ACOStalib.ACOS()函数用于计算向量三角反余弦函数(Vector Trigonometric ACos)。
talib.ASINtalib.ASIN()函数用于计算向量三角反正弦函数(Vector Trigonometric ASin)。
talib.ATANtalib.ATAN()函数用于计算向量三角反正切函数(Vector Trigonometric ATan)。
talib.CEILtalib.CEIL()函数用于计算向上取整(Vector Ceil)。
talib.COStalib.COS()函数用于计算Vector Trigonometric Cos(向量三角余弦函数)。
talib.COSHtalib.COSH()函数用于计算向量三角双曲余弦值(Vector Trigonometric Cosh)。
talib.EXPtalib.EXP()函数用于计算向量算术指数函数(Vector Arithmetic Exp)。
talib.FLOORtalib.FLOOR()函数用于计算向量向下取整(Vector Floor)。
talib.LNtalib.LN()函数用于计算向量自然对数(Vector Log Natural)。
talib.LOG10talib.LOG10()函数用于计算Vector Log10(对数函数)。
talib.SINtalib.SIN()函数用于计算Vector Trigonometric Sin(正弦值)。
talib.SINHtalib.SINH()函数用于计算向量三角双曲正弦函数(Vector Trigonometric Sinh)。
talib.SQRTtalib.SQRT()函数用于计算向量平方根(Vector Square Root)。
talib.TANtalib.TAN()函数用于计算向量三角正切值(Vector Trigonometric Tan)。
talib.TANHtalib.TANH()函数用于计算向量三角双曲正切函数(Vector Trigonometric Tanh)。

Talib/MathOperators

名称说明
talib.MAXtalib.MAX()函数用于计算指定周期内的最大值(Highest value over a specified period)。
talib.MAXINDEXtalib.MAXINDEX()函数用于计算指定周期内最大值的索引位置(Index of highest value over a specified period)。
talib.MINtalib.MIN()函数用于计算指定周期内的最小值(Lowest value over a specified period)。
talib.MININDEXtalib.MININDEX()函数用于计算指定周期内最小值的索引位置(Index of lowest value over a specified period)。
talib.MINMAXtalib.MINMAX()函数用于计算指定周期内的最小值和最大值(Lowest and highest values over a specified period)。
talib.MINMAXINDEXtalib.MINMAXINDEX()函数用于计算指定周期内最低值和最高值的索引位置(Indexes of lowest and highest values over a specified period)。
talib.SUMtalib.SUM()函数用于计算求和(Summation)。

Talib/PatternRecognition

名称说明
talib.CDL2CROWStalib.CDL2CROWS()函数用于计算Two Crows(K线形态--两只乌鸦)。
talib.CDL3BLACKCROWStalib.CDL3BLACKCROWS()函数用于计算Three Black Crows(K线图形态--三只黑乌鸦)。
talib.CDL3INSIDEtalib.CDL3INSIDE()函数用于计算Three Inside Up/Down(K线形态:三内上下震荡)。
talib.CDL3LINESTRIKEtalib.CDL3LINESTRIKE()函数用于计算Three-Line Strike(K线图:三线震荡)。
talib.CDL3OUTSIDEtalib.CDL3OUTSIDE()函数用于计算Three Outside Up/Down(K线形态:三外包线)。
talib.CDL3STARSINSOUTHtalib.CDL3STARSINSOUTH()函数用于计算Three Stars In The South(K线形态:南方三星)。
talib.CDL3WHITESOLDIERStalib.CDL3WHITESOLDIERS()函数用于计算Three Advancing White Soldiers(K线形态:三白兵)。
talib.CDLABANDONEDBABYtalib.CDLABANDONEDBABY()函数用于计算弃婴形态(K线图:Abandoned Baby)。
talib.CDLADVANCEBLOCKtalib.CDLADVANCEBLOCK()函数用于计算Advance Block(K线形态:推进阻挡)。
talib.CDLBELTHOLDtalib.CDLBELTHOLD()函数用于计算Belt-hold(K线形态:腰带线)。
talib.CDLBREAKAWAYtalib.CDLBREAKAWAY()函数用于计算Breakaway(K线形态:分离形态)。
talib.CDLCLOSINGMARUBOZUtalib.CDLCLOSINGMARUBOZU()函数用于计算**收盘光头光脚线(Closing Marubozu)**K线形态。
talib.CDLCONCEALBABYSWALLtalib.CDLCONCEALBABYSWALL()函数用于计算Concealing Baby Swallow(K线图:藏婴吞没形态)。
talib.CDLCOUNTERATTACKtalib.CDLCOUNTERATTACK()函数用于计算反击线形态(K线图:反击)。
talib.CDLDARKCLOUDCOVERtalib.CDLDARKCLOUDCOVER()函数用于计算乌云盖顶(Dark Cloud Cover)K线形态。
talib.CDLDOJItalib.CDLDOJI()函数用于计算Doji(K线图:十字星)。
talib.CDLDOJISTARtalib.CDLDOJISTAR()函数用于计算Doji Star(K线图:十字星)。
talib.CDLDRAGONFLYDOJItalib.CDLDRAGONFLYDOJI()函数用于计算Dragonfly Doji(K线形态:蜻蜓十字星)。
talib.CDLENGULFINGtalib.CDLENGULFING()函数用于计算吞没形态(Engulfing Pattern)。
talib.CDLEVENINGDOJISTARtalib.CDLEVENINGDOJISTAR()函数用于计算Evening Doji Star(K线形态:黄昏十字星)。
talib.CDLEVENINGSTARtalib.CDLEVENINGSTAR()函数用于计算**Evening Star(K线图:黄昏之星)**形态。
talib.CDLGAPSIDESIDEWHITEtalib.CDLGAPSIDESIDEWHITE()函数用于计算Up/Down-gap side-by-side white lines (K线图:上/下间隙并排白色线条)。
talib.CDLGRAVESTONEDOJItalib.CDLGRAVESTONEDOJI()函数用于计算**墓碑十字线(Gravestone Doji)**K线形态。
talib.CDLHAMMERtalib.CDLHAMMER()函数用于计算锤子线(K线形态:锤子)。
talib.CDLHANGINGMANtalib.CDLHANGINGMAN()函数用于计算Hanging Man(K线形态:吊人线)。
talib.CDLHARAMItalib.CDLHARAMI()函数用于计算Harami Pattern(K线图:阴阳线模式)。
talib.CDLHARAMICROSStalib.CDLHARAMICROSS()函数用于计算Harami Cross Pattern(K线图:十字星孕线形态)。
talib.CDLHIGHWAVEtalib.CDLHIGHWAVE()函数用于计算High-Wave Candle(K线图:长脚十字线)。
talib.CDLHIKKAKEtalib.CDLHIKKAKE()函数用于计算Hikkake Pattern(K线图:陷阱模式)。
talib.CDLHIKKAKEMODtalib.CDLHIKKAKEMOD()函数用于计算Modified Hikkake Pattern(K线图:改良陷阱模式)。
talib.CDLHOMINGPIGEONtalib.CDLHOMINGPIGEON()函数用于计算Homing Pigeon(K线形态:信鸽形态)。
talib.CDLIDENTICAL3CROWStalib.CDLIDENTICAL3CROWS()函数用于计算Identical Three Crows(K线形态:相同三只乌鸦)。
talib.CDLINNECKtalib.CDLINNECK()函数用于计算颈内线形态(K线图:颈内线)。
talib.CDLINVERTEDHAMMERtalib.CDLINVERTEDHAMMER()函数用于计算倒锤形态(K线图:倒锤)。
talib.CDLKICKINGtalib.CDLKICKING()函数用于计算Kicking(K线形态:踢腿形态)。
talib.CDLKICKINGBYLENGTHtalib.CDLKICKINGBYLENGTH()函数用于计算Kicking - bull/bear determined by the longer marubozu (K线图:踢牛/踢熊)。
talib.CDLLADDERBOTTOMtalib.CDLLADDERBOTTOM()函数用于计算Ladder Bottom(K线形态:梯底)。
talib.CDLLONGLEGGEDDOJItalib.CDLLONGLEGGEDDOJI()函数用于计算长腿十字线(K线形态:Long Legged Doji)。
talib.CDLLONGLINEtalib.CDLLONGLINE()函数用于计算长线蜡烛形态(K线图:长线)。
talib.CDLMARUBOZUtalib.CDLMARUBOZU()函数用于计算**Marubozu(K线图:光头光脚)**模式。
talib.CDLMATCHINGLOWtalib.CDLMATCHINGLOW()函数用于计算Matching Low(K线图:匹配低点)。
talib.CDLMATHOLDtalib.CDLMATHOLD()函数用于计算Mat Hold(K线形态:垫住)。
talib.CDLMORNINGDOJISTARtalib.CDLMORNINGDOJISTAR()函数用于计算Morning Doji Star(K线形态:早晨十字星)。
talib.CDLMORNINGSTARtalib.CDLMORNINGSTAR()函数用于计算Morning Star(K线形态:晨星)。
talib.CDLONNECKtalib.CDLONNECK()函数用于计算On-Neck Pattern(K线图:颈上线形态)。
talib.CDLPIERCINGtalib.CDLPIERCING()函数用于计算Piercing Pattern(K线图:穿透形态)。
talib.CDLRICKSHAWMANtalib.CDLRICKSHAWMAN()函数用于计算Rickshaw Man(K线形态:车夫线)。
talib.CDLRISEFALL3METHODStalib.CDLRISEFALL3METHODS()函数用于计算Rising/Falling Three Methods(K线形态:上升/下降三法)。
talib.CDLSEPARATINGLINEStalib.CDLSEPARATINGLINES()函数用于计算分离线形态(K线图:分离线)。
talib.CDLSHOOTINGSTARtalib.CDLSHOOTINGSTAR()函数用于计算Shooting Star(K线形态:流星)。
talib.CDLSHORTLINEtalib.CDLSHORTLINE()函数用于计算短线蜡烛图形态(K线图:短线)。
talib.CDLSPINNINGTOPtalib.CDLSPINNINGTOP()函数用于计算Spinning Top(K线形态:陀螺)。
talib.CDLSTALLEDPATTERNtalib.CDLSTALLEDPATTERN()函数用于计算Stalled Pattern(K线图:停滞模式)。
talib.CDLSTICKSANDWICHtalib.CDLSTICKSANDWICH()函数用于计算Stick Sandwich(K线形态:棍子三明治)。
talib.CDLTAKURItalib.CDLTAKURI()函数用于计算**Takuri (Dragonfly Doji with very long lower shadow) (K线图:托里)**蜡烛图形态。
talib.CDLTASUKIGAPtalib.CDLTASUKIGAP()函数用于计算Tasuki Gap(K线图:翼隙)。
talib.CDLTHRUSTINGtalib.CDLTHRUSTING()函数用于计算Thrusting Pattern(K线图:推进模式)。
talib.CDLTRISTARtalib.CDLTRISTAR()函数用于计算三星形态(K线图:三星模式)。
talib.CDLUNIQUE3RIVERtalib.CDLUNIQUE3RIVER()函数用于计算Unique 3 River(K线形态:独特三河)。
talib.CDLUPSIDEGAP2CROWStalib.CDLUPSIDEGAP2CROWS()函数用于计算向上跳空双乌鸦形态(K线图:双飞乌鸦)。
talib.CDLXSIDEGAP3METHODStalib.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市场成交记录的数据结构。
RecordK线柱的数据结构,标准的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

名称说明
exchangeexchange 是一个交易所对象,也是在策略实盘设置、回测设置中添加的第一个交易所对象。
exchangesexchanges 是一个交易所对象数组,包含在策略实盘设置或回测设置中添加的所有交易所对象,其中 exchanges[0] 即为 exchange。

ORDER_STATE

名称说明
ORDER_STATE_PENDINGORDER_STATE_PENDING是Order结构中的Status属性的值,表示订单状态为待处理状态。
ORDER_STATE_CLOSEDORDER_STATE_CLOSED是Order结构中的Status属性的值,表示订单状态为已完成。
ORDER_STATE_CANCELEDORDER_STATE_CANCELED 是 Order 结构中 Status 属性的值,表示订单状态为已取消。
ORDER_STATE_UNKNOWNORDER_STATE_UNKNOWN是Order结构中的Status属性的值,表示订单状态为未知状态(其他状态)。

ORDER_TYPE

名称说明
ORDER_TYPE_BUYORDER_TYPE_BUY是Order结构中的Type属性值,表示买入订单类型。
ORDER_TYPE_SELLORDER_TYPE_SELL是Order结构中的Type属性值,用于表示卖单类型。

ORDER_CONDITION_TYPE

名称说明
ORDER_CONDITION_TYPE_OCOORDER_CONDITION_TYPE_OCO是Condition结构中的ConditionType属性的值,表示OCO订单(One-Cancels-the-Other,一触即撤订单)。
ORDER_CONDITION_TYPE_TPORDER_CONDITION_TYPE_TP 是 Condition 结构中的 ConditionType 属性值,表示止盈单(Take Profit)。
ORDER_CONDITION_TYPE_SLORDER_CONDITION_TYPE_SL 是 Condition 结构中的 ConditionType 属性值,表示止损单(Stop Loss)。
ORDER_CONDITION_TYPE_GENERICORDER_CONDITION_TYPE_GENERIC 是 Condition 结构中的 ConditionType 属性值,表示通用条件单。

POSITION_DIRECTION

名称说明
PD_LONGPD_LONG是Position结构中的Type属性值,表示多头仓位类型。
PD_SHORTPD_SHORT是Position结构中的Type属性值,表示空头仓位类型。

ORDER_OFFSET

名称说明
ORDER_OFFSET_OPENORDER_OFFSET_OPEN是Order结构中Offset属性的取值,表示该订单为开仓操作。
ORDER_OFFSET_CLOSEORDER_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_BUYLOG_TYPE_BUY是exchange.Log函数的LogType参数可选值,用于设置exchange.Log函数打印的日志类型为买单日志。
LOG_TYPE_SELLLOG_TYPE_SELL是exchange.Log函数的LogType参数可选值,用于设置exchange.Log函数打印卖单日志。
LOG_TYPE_CANCELLOG_TYPE_CANCEL是exchange.Log函数的LogType参数可选值,用于设置exchange.Log函数打印撤销订单日志。