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") < 50000 and premium(“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”) < min_price(“BTC_USDT”, 60, “usdt”) and order_collateral(“usdt”) ==0 and position(“BTC_USDT”, “usdt”) == 0
(1)price(“BTC_USDT”, 0, “usdt”) < min_price(“BTC_USDT”, 60, “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”) < min_price(“BTC_USDT”, 10, “usdt”) and order_collateral(“usdt”) ==0 and position(“BTC_USDT”, “usdt”) > 0
(1)price(“BTC_USDT”, 0, “usdt”) < min_price(“BTC_USDT”, 10, “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”) < 0
(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”) < 0
此條件表示策略之前已經建立倉位,在此基礎上進行平倉操作。
執行邏輯
類型:合約交易;交易市場: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”)< 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
此條件表示開空倉條件:
其中自定義變量“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”)< 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”) > 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”) < 0
(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”) < 0 此條件表示當前已有空倉倉位,在此基礎上進行平倉操作。
執行邏輯
類型:合約交易;交易市場:BTC/USDT 永續合約;委託類型:限價;槓桿倍數:5x;方向:做多;限價:bid_price(“BTC_USDT”, 1, “usdt”);數量:1。

2.3 創建策略
在使用自定義變量的情況下,應將自定義變量的執行順序排在規則之前,例如“range”自定自定義變量的執行順序為1,而開平倉規則的執行順序為2到5。

3.如何創建自定義策略?
說明:自定義策略目前只支持網頁端創建。
交易機器人 - 創建新機器人 - 創建機器人 - 自定義機器人 - 設置參數 - 創建

本產品最終解釋權歸Gate所有。 如需進一步幫助,請訪問Gate官方支持頁面或聯繫我們的客戶服務團隊。
