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官方支持页面或联系我们的客户服务团队。