随着信号机器人的推出,TradingView用户现在可以发布信号并在OKX上创建信号机器人。本指南将详细介绍OKX支持的各种警报消息规范,帮助用户更好地配置和使用交易信号功能。
Pine Script™策略与指标的区别
在深入了解警报消息规范之前,有必要先理解Pine Script™中策略(Strategy)与指标(Indicator)的基本区别。
Pine Script™策略主要用于历史数据回测和实时市场的前向测试。除了进行指标计算外,策略还包括对strategy.*()函数的调用,这些函数将交易订单发送到Pine Script™的代理模拟器,模拟订单执行。回测结果展示在图表底部的"策略测试器"选项卡中。
Pine Script™指标同样进行计算,但不用于回测场景。由于不依赖代理模拟器,指标消耗资源更少,执行速度更快。
值得注意的是,您可以选择使用Section A或Section B中的格式 - 两种格式完全兼容。系统会根据您发送的消息智能识别所使用的格式并进行相应解析,确保无缝体验。
专为Pine Script™策略用户设计的规范
以下规范专门为使用Pine Script™策略编写算法的用户量身定制,主要适用于strategy.*函数。该格式专门适配策略占位符值,确保无缝兼容性。
警报消息规范概述
| 参数 | 是否必需 | 取值 |
|---|---|---|
| id | 必需 | - TradingView的{{strategy.order.id}} |
| action | 必需 | - TradingView的{{strategy.order.action}} |
| marketPosition | 必需 | - TradingView的{{strategy.market_position}} |
| prevMarketPosition | 必需 | - TradingView的{{strategy.prev_market_position}} |
| instrument | 必需 | - TradingView的{{ticker}}或OKX的Instld格式 |
| signalToken | 必需 | OKX创建信号时提供 |
| timestamp | 必需 | TradingView的{{timenow}} |
| maxLag | 可选 | [1, 3600]之间的非负整数值,默认为60 |
| investmentType | 可选* | 基础货币金额、保证金金额、固定合约数等 |
| amount | 必需 | 根据investmentType类型提供相应数值 |
*investmentType默认值:进入信号为"percentage_investment",退出信号为"percentage_position"。但强烈建议将此值设置为"base",并将amount设置为"{{strategy.order.contracts}",以获得与TradingView策略的最大兼容性。
关键参数详解
1. id参数 - 订单标识符
{{strategy.order.id}} - 返回已执行订单的ID(在生成订单的函数调用中作为第一个参数字符串使用)。
2. action参数 - 买入或卖出
{{strategy.order.action}} - 返回已执行订单的"buy"或"sell"字符串。
3. marketPosition参数 - 预期持仓状态
{{strategy.market_position}} - 以字符串形式返回策略的当前持仓状态:"long"、"flat"或"short"。
4. instrument参数 - 交易标的格式
支持两种格式:
- TradingView占位符值:"{{ticker}}",返回生成警报的标的代码
- OKX仪器格式:仪器ID,即OKX API中的"instId"
5. signalToken参数 - 信号认证
令牌是一种安全措施,确保传入请求是合法和授权的。此signalToken将在用户成功创建新信号时自动生成,需要复制到TradingView警报消息中。
6. timestamp参数 - 时间戳
{{timenow}}将返回警报生成时的当前确切时间,采用UTC时间和yyyy-MM-ddTHH:mm:ssZ格式。
7. maxLag参数 - 最大可接受延迟
"maxLag"指交易信号被视为无效之前的最大允许延迟或延迟(以秒为单位)。默认设置为60秒。设置maxLag值有助于确保信号机器人及时运行,避免根据过时或可能不再反映当前市场状况的信号进行操作。
通用兼容规范
以下规范具有通用性,可适应任何场景。无论您是使用PineScript™编写策略或指标(研究)脚本,还是手动在TradingView的警报用户界面中输入警报,这些规范都保持适应性和可定制性。
通用规范概述
| 参数 | 是否必需 | 取值 |
|---|---|---|
| action | 必需 | ENTER_LONG、ENTER_SHORT、EXIT_LONG、EXIT_SHORT |
| instrument | 必需 | TradingView的{{ticker}}或OKX的Instld格式 |
| signalToken | 必需 | OKX创建信号时提供 |
| timestamp | 必需 | TradingView的{{timenow}} |
| maxLag | 可选 | [1, 3600]之间的非负整数值,默认为60 |
| orderType | 条件必需 | market或limit(orderType = Limit时需要) |
| orderPriceOffset | 条件必需 | [0, 100]之间的浮点数值(%) |
| investmentType | 可选 | 多种投资类型选项 |
| amount | 条件必需 | 根据investmentType类型提供相应数值 |
操作模式说明
信号机器人在单向(即买入/卖出)模式下运行,意味着对于给定标的,机器人只会持有一个方向的仓位。
开仓订单:
- ENTER_LONG:开立多头仓位,预期价格将上涨
- ENTER_SHORT:开立空头仓位,预期价格将下跌
平仓订单:
- EXIT_LONG:通过卖出持仓部分或完全平掉多头仓位
- EXIT_SHORT:通过买回合约部分或完全平掉空头仓位
订单类型和价格偏移
orderType参数:
- 市价单:下市价单开仓(action = ENTER_XX)或平仓(action = EXIT_XX),无需提供orderPriceOffset
- 限价单:下限价单开仓(action = ENTER_XX)或平仓(action = EXIT_XX)
orderPriceOffset参数(仅适用于限价单):
- 不同的操作类型对应不同的价格计算方式
实际应用示例
示例1:多头入场 -> 多头退出(完全平仓),无多次入场
示例2:多头入场 -> 空头入场(一步反转),无多次入场
示例3:多头入场 -> 多头退出(部分)-> 多头退出(完全平仓)
示例4:使用多次入场功能
多次入场是信号机器人中的一项功能,允许对给定标的执行多个入场点。交易者可以通过分散入场点(即美元成本平均法)来优化交易方法,在动态市场环境中增加捕捉盈利交易的机会。
对于信号提供者,如果用户已在机器人中配置了某些可选参数,他们可以排除这些参数。这对于专注于仅提供买入/卖出触发信号的提供者特别有用,具体的投资金额由每个订阅者自行决定。
常见问题
如何选择适合的警报消息格式?
如果您是Pine Script™策略的高级用户,并且主要使用strategy.*()函数构建交易信号,建议使用Section A的专用格式。该格式与Pine Script™的策略占位符无缝集成,能够轻松传输交易信号。
对于不使用Pine Script™策略脚本的用户,或者使用自定义指标、各种图表技术甚至手动警报的情况,Section B提供的通用规范更适合。这种"一刀切"的规范框架能够满足各种信号生成方法的需求。
如何获取和配置signalToken?
signalToken是一种安全措施,确保传入请求是合法和授权的。当用户在我们的平台上成功创建新信号时,此signalToken将自动生成。您需要将此token复制到TradingView警报消息中。
要查找已激活信号的signalToken:
- 查看信号的详细信息部分
- 在推荐的警报消息部分找到您的signalToken
maxLag参数的作用和推荐设置是什么?
maxLag参数指的是交易信号被视为无效之前的最大允许延迟或延迟(以秒为单位)。它计算从信号从TradingView发送(使用警报消息中的"timestamp"字段)到在OKX接收以执行订单的时间差。
默认设置为60秒。设置maxLag值有助于确保信号机器人及时运行,避免根据过时或可能不再反映当前市场状况的信号进行操作。根据您的交易策略和市场条件,您可以调整此值,但建议保持在1到3600秒的范围内。
投资类型和金额参数应该如何配置?
为了确保与您的TradingView策略的最佳兼容性,我们强烈建议将investmentType配置为"base",并将amount设置为"{{strategy.order.contracts}}"。通过这种方法,OKX上的订单数量将与您的TradingView策略中指定的订单数量保持一致。
对于进入信号,有多种投资类型选项可供选择,包括基础货币金额、保证金金额、固定合约数等。对于退出信号,选项包括基础货币金额或基于开仓仓位百分比的平仓比例。
信号参数和机器人参数的优先级规则是什么?
当信号参数和机器人配置都定义同一字段时,适用以下优先级规则:
规则1:机器人和信号都定义字段
- 机器人参数优先于信号参数
规则2:只有一方定义字段
- 如果只有信号提供了参数配置,则使用信号参数
- 如果只有机器人提供了参数配置,则使用机器人参数
这种灵活的优先级系统允许信号提供者专注于提供交易信号,而订阅者可以根据自己的风险偏好和资金管理策略自定义执行参数。