BitFrog信号策略警报规范
PineScript™脚本速览: "Strategy" 与 "Indicator"
PineScript策略既可用于历史数据的回溯测试,也可用于实时市场的前瞻测试。除执行指标计算外,策略还包括调用 strategy.*() 函数,将交易订单传送至 PineScript™的经纪模拟器。然后,模拟器可以模拟这些订单的执行。回溯测试的结果在图表底部的 "策略测试器"选项卡中可视化显示,该选项卡与 "PineScript编辑器“选项卡相邻。

另一方面,PineScript指标也涉及计算,但不用于回溯测试。由于独立于经纪商模拟器,指标消耗的资源更少,执行速度更快。

请注意,您可以灵活地使用A节或B节中的格式,两者完全兼容。 根据您传输的信息,系统将智能地识别所使用的格式,并相应地解析您的信息。无论您选择哪种方式,这种智能处理都能确保无缝体验。
A节 - PineScript™策略用户
以下规范专为使用 PineScript™ 策略(主要是 strategy.* 函数)编写算法的用户量身定制。该格式专门用于容纳策略占位符值,确保无缝适应性。如需深入了解策略脚本以及使用策略占位变量发送警报的过程,请访问 链接 了解更多信息。
如果您对这一概念不熟悉,B节 - 通用兼容 提供了另一种构建警报的方法,适用于更广泛的场景。
警报消息规范概述
字段名称
说明
id信号ID
标识每个具体信号,防止重复或追踪信号实例
action交易方向
来自TradingView的{{strategy.order.action}}
marketPosition当前仓位方向
来自TradingView的{{strategy.market_position}}
prevMarketPosition上一个仓位方向
来自TradingView的{{strategy.prev_market_position}}
marketPositionSize当前仓位价值
来自TradingView的{{strategy.market_position_size}}
prevMarketPositionSize上一个仓位价值
来自TradingView的{{strategy.prev_market_position_size}}
instrument交易对
来自TradingView的{{ticker}}
signalToken安全令牌
安全令牌,用于验证信号来源信号创建时由BitFrog提供
timestamp时间戳
来自TradingView的{{timenow}}
maxLag最大延迟
[1,3600]之间的非负整数值。默认为60。
investmentType
TradingView配置
amount金额
来自TradingView的{{strategy.order.contracts}}最小下单数量根据交易所变动,低于最小下单则将失败
orderType订单类型
限价:limit,市价单会立即按照当前市场价格执行市价:market,限价单会按照当前市价价格挂单执行
orderPriceOffset价格偏离
限价单触发按照当前触发时间买一卖一挂单执行
1. 「警报消息」- id
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}", //👈id - 订单标识符
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635",
"timestamp": "{{timenow}}"
}
id - 订单标识符
{{strategy.order.id}} - 返回已执行订单的 ID(在生成订单的函数调用中作为第一个参数使用的字符串:strategy.entry、strategy.exit 或 strategy.order)。
2. 「警报消息」- 操作
{
"action": "{{strategy.order.action}}", //👈操作 - "买入"或"卖出"?
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635",
"timestamp": "{{timenow}}"
}
操作 - "买入"或"卖出"?
{{strategy.order.action}} 返回已执行订单的"buy"或"sell"字符串。
3. 「警报消息」- marketPosition
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}", //👈marketPosition - 预期仓位状态(订单执行时)
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635",
"timestamp": "{{timenow}}"
}
marketPosition - 预期仓位状态(订单执行时)
{{strategy.market_position}} - 以字符串形式返回策略的当前位置:"long", "flat",或"short"。
4. 「警报消息」- prevMarketPosition
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}", // 👈 以前的仓位状态(订单执行前)
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "your_token_here",
"timestamp": "{{timenow}}"
}
prevMarketPosition - 以前的仓位状态(订单执行前)
{{strategy.prev_market_position}} - 以字符串形式返回策略的前一个位置: "long", "flat", 或 "short".
5. 「警报消息」- 工具
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}", // 👈 当前信号所绑定的交易对(重要)
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "your_token_here",
"timestamp": "{{timenow}}"
}
ticker — TradingView占位符值
“标准占位符” * 是由双大括号包围并包含在警报消息中的文字片段。 "{{ticker}}"将返回生成警报的TradingView的代码。 例如:“BTCUSDT. P”、“ETHUSDT.P”
* 在PineScript中访问变量的标准占位符。在这里了解更多。
6. 「警报消息」- 信号代码
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635", // 👈 BitFrog 分配的策略密钥
"timestamp": "{{timenow}}"
}
信号代码:信号的身份验证。这种安全措施,用于确保传入的请求是合法和授权的。当用户在Bitfrog成功创建新信号时,将自动生成此信号代码,并需要将其复制到TradingView警报消息。
如何定位已激活信号的信号代码?
查看信号配置信息

在警报信息部分找到信号代码

7. 「警报消息」- 时间戳
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635",
"timestamp": "{{timenow}}" // 👈 发出信号的时间戳
}
timenow - TradingView占位符值
“标准占位符”*是由双大括号包围并包含在警报消息中的文字片段。
"{{timenow}}" 将返回生成警报的当前和确切时间,UTC和yyyy-MM-ddTHH:mm:ssZ格式。
例如: "2023-06-01T17:38:10Z"
* 在PineScript中访问变量的标准占位符。在这里了解更多。
8. 「警报消息」- maxLag
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}",
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base",
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60", // 👈 最大允许延迟(秒),超过该值的信号将被忽略
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635",
"timestamp": "{{timenow}}"
}
maxLag - 最大可接受延迟
在信号策略中,“maxLag”是指在交易信号被接收前以秒为单位的最大可接受延迟时间。 默认设置为60秒。设置maxLag值有助于确保信号策略的及时运行,避免对可能不再反映当前市场状况的过时信号或潜在不准确信号采取行动。
9. 「警报消息」- 投资类型和金额
{
"action": "{{strategy.order.action}}",
"amount": "{{strategy.order.contracts}}", // 👈直接引用策略中设置的下单数量
"id": "{{strategy.order.id}}",
"instrument": "{{ticker}}",
"investmentType": "base", // 👈以币数量下单,与策略数量一致
"marketPosition": "{{strategy.market_position}}",
"marketPositionSize": "{{strategy.market_position_size}}",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"prevMarketPosition": "{{strategy.prev_market_position}}",
"prevMarketPositionSize": "{{strategy.prev_market_position_size}}",
"signalToken": "fb16aaeb4d5e2e5d36a6eacd66d06635",
"timestamp": "{{timenow}}"
}
重要提示: 为了确保与您的TradingView策略有最佳的兼容性,我们强烈建议将 investmentType 配置为"base",并将数量设置为"{{strategy.order.contract}}"。通过这种方法,BitFrog 上的订单数量将与您TradingView策略中指定的订单数量保持一致。
B节 - 通用兼容
以下提供的规范用途广泛,可根据任何情况进行定制。无论您是使用 PineScript™ 制作策略或指标脚本,还是手动将警报输入 TradingView 的警报用户界面,这些规格都具有适应性和可定制性。
警报消息规范概述
字段名称
说明
id信号ID
标识每个具体信号,防止重复或追踪信号实例
instrument 交易对
来自TradingView的{{ticker}},如 BTCUSDT.P为确保数据源与执行端的一致性,您配置TradingViewK线来源交易所与您下单交易所需保持一致
action交易方向
做多:open_long做空:open_short市价全平:close反手策略-做反手:需配置做多开仓、做空开仓,例如:配置做多、做空,触发做多信号后,将为您开多仓,触发做空信号后,将为您平多仓并开空仓
orderType订单类型
限价:limit,市价单会立即按照当前市场价格执行市价:market,限价单会按照当前市价价格挂单执行
orderPriceOffset价格偏离
限价单触发按照当前触发时间买一卖一挂单执行
investmentType投资类型
USDT数量: "investmentType": "usdt", 每次单笔开仓以输入USDT数量下单,这是加上杠杆后的数量币数量:"investmentType": "base",每次单笔开仓以输入交易对币数量下单,这是加上杠杆后的数量资金比例:"investmentType": "percent",每次单笔开仓以您账户资金*设置资金比例*杠杆 下单
amount金额
USDT数量:正浮数币数量:正浮点数资金比例:(浮动值在[0.01,100]之间,单位为%) 最小下单数量根据交易所变动,低于最小下单则将失败
signalToken安全令牌
安全令牌,用于验证信号来源信号创建时由BitFrog提供
maxLag下单延迟
信号的最大延迟,防止过期信号被执行,交易信号被接收前以秒为单位的最大可接受延迟时间,仅针对开仓
1. 「警报消息」- 操作
{
"action": "open_long", // 👈 交易动作,可选值详见说明
"amount": "10",
"instrument": "{{ticker}}",
"investmentType": "base",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2",
"timestamp": "{{timenow}}"
}
交易模式:
假设在BitFrog信号策略以单向(买入/卖出)模式运行,这意味着只会在一个方向上持有头寸。
下单
开多 — open_long:下单持有多头头寸,预期价格会上涨。
开空 — open_short:下单持有空头头寸,预期价格会下跌。
平仓
平仓 — close:根据当前持仓头寸进行全部平仓。
2. 「警报消息」- 工具
{
"action": "open_long",
"amount": "10",
"instrument": "{{ticker}}", // 👈 TradingView 占位符:代表当前图表交易对
"investmentType": "base",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2",
"timestamp": "{{timenow}}"
}
ticker — TradingView占位符值
“标准占位符” * 是由双大括号包围并包含在警报消息中的文字片段。 "{{ticker}}"将返回生成警报的TradingView的代码。 例如:“BTCUSDT. P”、“ETHUSDT.P”。
* 在PineScript中访问变量的标准占位符。在这里了解更多。
3. 「警报消息」- 信号代码
{
"action": "open_long",
"amount": "10",
"instrument": "{{ticker}}",
"investmentType": "base",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2", // 👈 信号代码:由 BitFrog 自动生成的身份验证标识
"timestamp": "{{timenow}}"
}
信号代码:信号的身份验证。这种安全措施,用于确保传入的请求是合法和授权的。当用户在BitFrog成功创建新信号时,将自动生成此信号代码,并需要将其复制到TradingView警报消息。
4. 「警报消息」- 时间戳
{
"action": "open_long",
"amount": "10",
"instrument": "{{ticker}}",
"investmentType": "base",
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2",
"timestamp": "{{timenow}}" // 👈 TradingView 占位符,表示警报生成时间
}
timenow - TradingView占位符值
“标准占位符”*是由双大括号包围并包含在警报消息中的文字片段。
"{{timenow}}" 将返回生成警报的当前和确切时间,UTC和yyyy-MM-ddTHH: mm:ssZ格式。
格式示例(UTC 时间,ISO 8061 格式)
yyyy-MM-ddTHH:mm:ssZ 格式 例如:"2023-06-01T17:38:10Z"
yyyy-MM-ddTHH:mm:ss.SSSZ 格式 例如:"2023-06-01T17:38:10.836Z"
yyyy-MM-ddTHH:mm:ss+0000 格式 例如:"2023-06-01T17:38:10+0000"
* 在PineScript中访问变量的标准占位符。在这里了解更多。
5. 「警报消息」- maxLag
{
"action": "open_long",
"amount": "10",
"instrument": "{{ticker}}",
"investmentType": "base",
"maxLag": "60", // 👈 最大可接受信号延迟(单位:秒),超过该时间的信号将被视为无效
"orderPriceOffset": "0",
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2",
"timestamp": "{{timenow}}"
}
maxLag - 最大可接受延迟
在信号策略中,“maxLag”是指在交易信号被接收前以秒为单位的最大可接受延迟时间。 默认设置为60秒。设置maxLag值有助于确保信号策略的及时运行,避免对可能不再反映当前市场状况的过时信号或潜在不准确信号采取行动。
6. 「警报消息」- 订单
{
"action": "open_long",
"amount": "10",
"instrument": "{{ticker}}",
"investmentType": "base",
"maxLag": "60",
"orderType": "limit", // 👈 限价单:下单时挂指定价格。若为 "market",则为市价单,不需设置 orderPriceOffset
"orderPriceOffset": "0", // 👈 限价偏移:以当前盘口价格为基准的浮动距离,单位为最小报价精度(tick size)
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2",
"timestamp": "{{timenow}}"
}
订单类型(orderType)
市场价(market):通过市场价进行下单,比如开仓(action=open_xx)或平仓(action=close)时,则无需提供orderPriceOffset。
限价(limit):设置限价单,进行开仓(action=open_xx)或平仓(close)。
订单价格偏移量(orderPriceOffset)
如上所述,该参数仅在限价单类型需要填写,即当下单限价单时,允许订单以限定价格为基数的偏移量,可以在增加订单成交的几率的同时,又能确保以较为理想的价格成交。设置后,在不同操作时,偏移价格计算方式如下: 开多:(1-订单价格偏移量)*买一价 开空:(1+订单价格偏移量)*卖一价 平多:(1+订单价格偏移量)*卖一价 平空:(1-订单价格偏移量)*买一价
操作
计算公式
订单价格
开多
(1-0.01) x100
99元
开空
(1+0.01) x 102
103.02元
平多
(1+0.01) x 102
103.02元
平空
(1-0.01) x100
99元
7. 「警报消息」- 投资类型和金额
{
"action": "open_long",
"amount": "10", // 👈 委托数量,建议使用 "{{strategy.order.contracts}}" 以保持与 TradingView 策略数量一致
"instrument": "{{ticker}}",
"investmentType": "base", // 👈 投资类型:base 表示按基础币种数量下单,推荐值为 "base"
"maxLag": "60",
"orderType": "limit",
"orderPriceOffset": "0",
"signalToken": "70b6498ea82de2b2e35fa3988c09c3e2",
"timestamp": "{{timenow}}"
}
B节警报设置示例
示例1:多头开仓->多头平仓(全部平仓)

示例2:多仓,反手开空

示例3:使用多次下单开仓
多重进场是信号策略的一项功能,允许对给定工具执行多重进场。交易者可以通过入场点的多样化(即美元成本平均法)来优化交易方法,从而有可能增加在动态市场环境中捕捉盈利交易的机会。

Last updated