Gate.io 自定义策略交易全攻略

自定义策略是一种允许用户根据自身需求设定交易规则的灵活工具,适合各种交易者,无论是新手还是专业用户,用户可以通过简单的条件组合,例如“当GT现货价格高于10 USDT时卖出所持有的GT”,或是复杂的多条件逻辑,比如“当BTC现货价格超过50000 USDT且合约价格与指数价格比例高于1时,卖出4张BTC并以51000 USDT的价格买入0.01个BTC”,来实现个性化的交易策略,用户在创建策略时需设置规则的条件和执行逻辑,条件基于市场数据和资金数据,而执行逻辑则决定了在满足条件时具体的交易行为,支持现货和合约交易,用户还可以创建自定义变量以存储和引用数据,策略的执行是按顺序进行的,用户可选择将策略保存到策略库并多次运行,或直接保存并运行,策略创建后默认启用,用户可以随时启用或禁用规则和变量,确保策略的灵活性与高效性。

1. 什么是自定义策略?

自定义策略是⼀个可供用户制定交易规则的策略。适用于所有用户,对于机器人新用户,自定义策略可以组合简单的交易规则,如“当GT现货价格⾼于10 USDT时,以10 USDT的价格卖出所持有的GT”。

对于专业机器人用户,自定义策略也能满足复杂的交易逻辑,如“当BTC现货价格⾼于50000 USDT同时 BTC的合约价格与指数价格⽐例⾼于1时,卖出4张BTC同时以51000 USDT的价格买入0.01个BTC。”

2. 自定义策略参数配置说明

新建规则
规则主要由条件和执行逻辑两部分组成。

条件
条件是用于触发执行逻辑⽽预设的特定条件,用户可以通过Gate现有的市场数据、策略的资金数据, 以及平台提供的数学函数来组合出满足您需求的条件。

点击选项栏右侧图标可选择提供的所有数据:

点击“函数适用说明”可查看所有数据的具体使用⽅法

举例:在BTC现货价格超过50000 USDT时触发该规则,
条件为: price(“BTC_USDT”, 0, “spot”)>50000 可以满足更为复杂的策略,
⽐如需要多个条件:
1.当BTC_USDT合约价格低于50000 USDT

2.BTC_USDT合约价格对于指数价格的溢价⼤于1

3.BTC_USDT仓位为0

条件为: price(“BTC_USDT”, 0, “usdt”) 1 and (position_net(“BTC_USDT”, “usdt”) == 0)

执行逻辑

执行逻辑用于预设当条件被触发后执行什么委托,用户可以通过Gate提供的执行逻辑执行现货、合约 的委托以及创建属于⾃⼰的函数(变量)。类型用于选择交易类型,现货交易或合约交易;交易市场用于 选择策略交易的市场,⼀个规则支持多个执行逻辑选择不同的市场,最多可选择20个市场;委托类型提供多种委托,限价、市价、止盈、止损。

举例:在BTC现货价格超过50000 USDT后卖出BTC,执行逻辑为:

在BTC合约价格低于5000 USDT后5倍开多仓,执行逻辑为:

⼀个规则支持多个执行逻辑⼀起执行,最多支持20个执行逻辑⼀起执行。

新建变量

变量主要由条件和变量值两部分组成,用户可以存储任意变量,使用时只需通过get_value(“variable_name”)拿到变量variable_name的值。

条件
条件是用于触发计算变量值⽽预设的特定条件,用户可以通过Gate现有的市场数据、策略的资金数据,以及平台提供的数学函数来组合出满足您需求的条件。

点击选项栏右侧图标可选择提供的所有数据:

点击“函数适用说明”可查看所有数据的具体使用⽅法
举例:同规则中条件使用的⽅法。

变量值
用于预设当条件被触发后存储什么样的变量值,用户可以通过Gate提供的数据创建变量值。

举例:⼀直获取现货BTC的EMA10分钟指标,变量值为:

每次触发后变量值增加10,变量值为:

添加变量或规则时,若该变量值或条件及执行逻辑中引用了其他变量,则需同时添加该变量,否则无法获取到正确的变量值或条件或执行逻辑。
执行顺序

自定义策略每10秒循环⼀次按执行顺序从低到⾼执行该策略中所有的规则与变量,若变量与变量或规则间有引用关系则需注意先添加被引用的变量,否则将无法得到用户预设的策略效果。

举例:如上图策略,ema-BTC在buy BTC、sell BTC中作为条件,满足条件时该策略需先买入BTC再卖出BTC,则该策略的添加顺序为ema-BTC、buy BTC、sell BTC。

保存并运行

1.用户可以选择“保存”,将新建的策略保存⾄策略库,以后再运行策略。运行策略时只需在策略库中点击即可运行策略,保存在策略库中的策略可以多次运行。

2.也可以选择“保存并运行”,将新建的策略保存⾄策略库并且投入资金运行该策略。

启用与禁用
创建策略后,默认该策略中的规则与变量为启用状态,编辑策略时,可以对规则与变量禁用或启用,点击“保存”后操作立即生效,直接影响进行中的策略。

1.禁用规则与变量时,“禁用”为禁用该策略中的此规则或变量,“全部禁用”为禁用所有该策略中的此规则或变量。

自定义策略示例

1.区间突破策略
本例着重说明如何使用自定义规则创建策略

开仓
多仓:突破最近60分钟的高点
空仓:跌破最近60分钟的低点

平仓
平多:跌破近10分钟的低点
平空:突破近10分钟的高点

1.1 新建规则

开多仓规则 -long position opening conditions

条件

price(“BTC_USDT”, 0, “usdt”) > max_price(“BTC_USDT”, 60, “usdt”) and order_collateral(“usdt”) ==0 and position(“BTC_USDT”, “usdt”) == 0

(1)price(“BTC_USDT”, 0, “usdt”) > max_price(“BTC_USDT”, 60, “usdt”)
此条件表示当前最新BTC永续合约价格大于最近60分钟BTC永续合约的最高价。

(2)and order_collateral(“usdt”) ==0
此条件表示当前策略没有挂单,order_collateral为预设函数,表示获取未完成订单的保证金,如果该函数返回值为0,表示目前策略没有进行中的挂单。

(3)and position(“BTC_USDT”, “usdt”) == 0
此条件表示策略当前仓位为0,position为预设函数,返回指定市场下,策略当前仓位数量。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5X;方向:做多;限价:bid_price(“BTC_USDT”, 1, “usdt”);数量:1。

开空仓规则 -short position opening conditions

条件

price(“BTC_USDT”, 0, “usdt”)

(1)price(“BTC_USDT”, 0, “usdt”) 此条件表示当前最新BTC永续合约价格低于最近60分钟BTC永续合约的最低价。

(2)and order_collateral(“usdt”) ==0
此条件表示当前策略没有挂单。

(3)and position(“BTC_USDT”, “usdt”) == 0
此条件表示策略当前仓位为0 。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做空;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。

平多仓规则 -close long position

条件

price(“BTC_USDT”, 0, “usdt”) 0

(1)price(“BTC_USDT”, 0, “usdt”) 此条件表示当前最新BTC永续合约价格低于最近10分钟BTC永续合约的最低价。

(2)and order_collateral(“usdt”) ==0
此条件表示策略当前没有挂单。

(3)and position(“BTC_USDT”, “usdt”) > 0
此条件表示策略之前已经建立仓位,在此基础上进行平仓操作。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做空;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。

平空仓规则 -close short position

条件

price(“BTC_USDT”, 0, “usdt”) > max_price(“BTC_USDT”, 10, “usdt”) and order_collateral(“usdt”) ==0 and position(“BTC_USDT”, “usdt”)

(1)price(“BTC_USDT”, 0, “usdt”) > max_price(“BTC_USDT”, 10, “usdt”)
此条件表示当前最新BTC永续合约价格高于最近10分钟BTC永续合约的最高价。

(2)and order_collateral(“usdt”) ==0
此条件表示策略当前没有挂单。

(3)and position(“BTC_USDT”, “usdt”)

此条件表示策略之前已经建立仓位,在此基础上进行平仓操作。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做多;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。

1.2创建策略

按照先开仓再平仓的执行顺序依次添加“long position opening conditions” 、“short position opening conditions”、“close long position”、“close short position”这些规则。

2.极值突破策略

本例着重说明如何使用自定义变量创建策略
开多仓/平空仓

其中:price(t)表示当前时刻的最新价格
close(t-1)表示上一时刻的收盘价格
开空仓/平多仓

2.1 新建变量

变量名称:
range
条件
true
变量值
max_price(“BTC_USDT”, 10, “usdt”) - min_price(“BTC_USDT”, 10, “usdt”)

2.2 新建规则

1.开多仓规则-open long

条件

price(“BTC_USDT”, 0, “usdt”)>price(“BTC_USDT”, 1, “usdt”)+get_value(“range”)*0.5 and order_collateral(“usdt”) ==0 and position(“BTC_USDT”, “usdt”) == 0

(1)price(“BTC_USDT”, 0, “usdt”)>price(“BTC_USDT”, 1, “usdt”)+get_value(“range”)0.5
此条件表示多单开仓条件 :
price(t) > Close(t-1) + 0.5range
其中自定义变量“range”,通过get_value函数访问。

(2)and order_collateral(“usdt”) ==0
此条件表示策略当前没有进行中的挂单。

(3)and position(“BTC_USDT”, “usdt”) == 0
此条件表示策略没有已开仓位。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做多;限价:bid_price(“BTC_USDT”, 1, “usdt”);数量:1。

2.开空仓规则-open short

条件

price(“BTC_USDT”, 0, “usdt”)

(1)price(“BTC_USDT”, 0, “usdt”)此条件表示开空仓条件:

其中自定义变量“range”,通过get_value函数访问。

(2)and order_collateral(“usdt”) ==0
此条件表示策略当前没有进行中的挂单。

(3)and position(“BTC_USDT”, “usdt”) == 0
此条件表示策略没有已开仓位。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做空;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。

3. 平多仓规则-close long

条件

price(“BTC_USDT”, 0, “usdt”) 0

(1)price(“BTC_USDT”, 0, “usdt”)

此条件表示平多仓条件:

其中自定义变量“range”,通过get_value函数访问。

(2)and order_collateral(“usdt”) ==0
此条件表示策略当前没有进行中的挂单。

(3)and position(“BTC_USDT”, “usdt”) > 0
此条件表示当前已有多仓仓位,在此基础上进行平仓操作。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做空;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。

4.平空仓规则-close short

条件

price(“BTC_USDT”, 0, “usdt”)>price(“BTC_USDT”, 1, “usdt”)+get_value(“range”)*0.5 and order_collateral(“usdt”) ==0 and position(“BTC_USDT”, “usdt”)

(1)price(“BTC_USDT”, 0, “usdt”)>price(“BTC_USDT”, 1, “usdt”)+get_value(“range”)*0.5

此条件表示平空仓条件 :


其中自定义变量“range”,通过get_value函数访问。

(2)and order_collateral(“usdt”) ==0
此条件表示策略当前没有进行中的挂单。

(3)and position(“BTC_USDT”, “usdt”) 此条件表示当前已有空仓仓位,在此基础上进行平仓操作。

执行逻辑

类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做多;限价:bid_price(“BTC_USDT”, 1, “usdt”);数量:1。

2.3 创建策略

在使用自定义变量的情况下,应将自定义变量的执行顺序排在规则之前,例如“range”自定自定义变量的执行顺序为1,而开平仓规则的执行顺序为2到5。

3.如何创建自定义策略?

说明:自定义策略目前只支持网页端创建。
交易机器人 - 创建新机器人 - 创建机器人 - 自定义机器人 - 设置参数 - 创建

本产品最终解释权归Gate所有。
如需进一步帮助,请访问Gate官方支持页面或联系我们的客户服务团队。