Gate.io - 如何创建自定义交易策略的详细指南
区间突破策略和极值突破策略是两种常见的交易策略,前者通过监测最近60分钟的高低点来决定开仓和平仓,具体而言,若当前价格突破60分钟高点则开多仓,若跌破60分钟低点则开空仓,而平仓则是通过监测最近10分钟的低点和高点来实现;而后者则利用自定义变量来设定交易规则,通过比较当前价格与上一时刻收盘价及自定义变量的关系来决定开仓和平仓,确保策略在市场波动中能够及时反应,执行逻辑包括合约交易、限价委托和杠杆设置等,适用于BTC/USDT永续合约,策略的设计旨在最大化收益并控制风险,用户可以根据自身的风险承受能力和市场情况灵活调整策略参数,最终实现更高效的交易效果。
一、区间突破策略
本例着重说明如何使用自定义规则创建策略
开仓
多仓:突破最近60分钟的高点
空仓:跌破最近60分钟的低点
平仓
平多:跌破近10分钟的低点
平空:突破近10分钟的高点
1. 新建规则
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。
1.2 开空仓规则 -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。
1.3 平多仓规则 -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。
1.4 平空仓规则 -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。
2. 创建策略
按照先开仓再平仓的执行顺序依次添加“long position opening conditions” 、“short position opening conditions”、“close long position”、“close short position”这些规则。
二、极值突破策略
本例着重说明如何使用自定义变量创建策略
开多仓/平空仓
其中:price(t)表示当前时刻的最新价格
close(t-1)表示上一时刻的收盘价格
开空仓/平多仓
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.2 开空仓规则-open short
条件 (1)price(“BTC_USDT”, 0, “usdt”) (2)and order_collateral(“usdt”) ==0 (3)and position(“BTC_USDT”, “usdt”) == 0 执行逻辑 条件 (1)price(“BTC_USDT”, 0, “usdt”) (2)and order_collateral(“usdt”) ==0 (3)and position(“BTC_USDT”, “usdt”) > 0 执行逻辑 条件 (1)price(“BTC_USDT”, 0, “usdt”)>price(“BTC_USDT”, 1, “usdt”)+get_value(“range”)*0.5 (2)and order_collateral(“usdt”) ==0 (3)and position(“BTC_USDT”, “usdt”) 此条件表示当前已有空仓仓位,在此基础上进行平仓操作。 执行逻辑 在使用自定义变量的情况下,应将自定义变量的执行顺序排在规则之前,例如“range”自定自定义变量的执行顺序为1,而开平仓规则的执行顺序为2到5。 本产品最终解释权归Gate所有。
price(“BTC_USDT”, 0, “usdt”)
其中自定义变量“range”,通过get_value函数访问。
此条件表示策略当前没有进行中的挂单。
此条件表示策略没有已开仓位。
类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做空;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。2.3 平多仓规则-close long
price(“BTC_USDT”, 0, “usdt”)
其中自定义变量“range”,通过get_value函数访问。
此条件表示策略当前没有进行中的挂单。
此条件表示当前已有多仓仓位,在此基础上进行平仓操作。
类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做空;限价:ask_price(“BTC_USDT”, 1, “usdt”);数量:1。2.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”)
此条件表示平空仓条件 :
其中自定义变量“range”,通过get_value函数访问。
此条件表示策略当前没有进行中的挂单。
类型:合约交易;交易市场:BTC/USDT 永续合约;委托类型:限价;杠杆倍数:5x;方向:做多;限价:bid_price(“BTC_USDT”, 1, “usdt”);数量:1。3. 创建策略