# 使用FTX量化空間做無限網格 ###### tags: `加密貨幣` 例如我們有一筆美元價值$1000的BTC 漲了0.5%變成$1005時,就賣掉$5的BTC 跌了0.5%變成$995時,就買入$5的BTC 也就是BTC價格上升時,BTC現貨數量就減少 而BTC價格下跌時,BTC現貨數量就增加 讓BTC的美元價值始終保持在$1000 而在低買高賣之下,USD就會愈來愈來多 > 更新: BTC漲到5萬以上後,$5的BTC會小於最小交易數0.0001顆,可以改成漲跌1%買賣$10,或用$2000的BTC,漲跌0.5%買賣$5 開一個子帳戶「btc-grid」 先存入美元價值$1000的BTC,以及準備用來購買的USD 價值$1000的BTC數 = 1000 / BTC現價 例如BTC現價41666,那就轉入1000/41666=0.024個BTC 要在BTC跌到20%前持續買進的話,就存200USD 如果沒有$1000的BTC,可以先用定投的方法買入 參考這篇: https://hackmd.io/@knuckles/SyY8clYmt ## 建立新策略 sell BTC Import string: ``` { "name": "sell BTC", "condition": "balance(\"BTC\") > 0.0001", "actions": [ { "ioc": false, "side": "sell", "size": "5 / price(\"BTC/USD\")", "type": "place", "market": "BTC/USD", "postOnly": false, "orderType": "limit", "limitPrice": "1005 / balance(\"BTC\")", "reduceOnly": false, "replaceExisting": true, "cancelIfNoLongerTriggered": false } ] } ``` ![](https://i.imgur.com/Ixj0Rsi.png) 條件設定 balance("BTC")>=0.0001 代表有BTC現貨至少有0.0001時才執行 設定掛單的數量與價格 ![](https://i.imgur.com/0PbbRaC.png) 設定「下自定義訂單」「限價委託」「賣出」「BTC/USD」 訂單數量 例如想在BTC現貨的價值為$1005時,賣掉$5的BTC 此時 BTC數量 * BTC價格 = $1005 所以訂單數量設為 5 / price("BTC/USD") 價格為 1005 / balance("BTC") 訂單數量是要賣掉價值$1000的BTC的0.5%,也就是價值$5的BTC,所以寫成 5/price("BTC/USD"),也可以改成BTC數量的0.5%,寫成 0.005 * balance("BTC"),不過在BTC價格34000~50000間,算出來都會是0.0001xxx,實際交易只會用0.0001,小數點後第5位無條件捨去,如果想要小數點後第5位四捨五入的話,可以寫成 5/price("BTC/USD")+0.00005 > 注意如果BTC價格>50000時,訂單數量 (5/BTC價格)<0.0001,會小於最小下單金額而下單失敗,可以改成上下10%掛單(10/BTC價格),或是增加要維持的BTC美元價值,例如改成$2000 不勾選「Post Only」,避免價格超過訂單限價時就停住不再賣了 而是直接用市價賣掉直到BTC現貨價值低於$1005 不想用市價賣的話,也可以把限價改為 max(1005/balance("BTC"), offer_price("BTC/USD")),當現價超過0.5%時,就會改用賣單第一筆來掛 點「保存草稿」 ## 建立新策略 buy BTC Import string: ``` { "name": "buy BTC", "condition": "balance(\"USD\") > 10", "actions": [ { "ioc": false, "side": "buy", "size": "5 / price(\"BTC/USD\")", "type": "place", "market": "BTC/USD", "postOnly": false, "orderType": "limit", "limitPrice": "995 / balance(\"BTC\")", "reduceOnly": false, "replaceExisting": true, "cancelIfNoLongerTriggered": false } ] } ``` ![](https://i.imgur.com/nJFL04l.png) 設定條件 balance("USD")>10 代表USD存量大於10才執行 然後設定掛單的數量與價格 ![](https://i.imgur.com/CGmkCEb.png) 設定「下自定義訂單」「限價委託」「買入」「BTC/USD」 訂單數量設為 5 / price("BTC/USD") 價格為 995 / balance("BTC") 不勾選「Post Only」,避免價格低於訂單限價時就停住不再買了 而是直接用市價買直到BTC現貨價值高於$995 不想用市價買的話,也可以把限價改為 min(995/balance("BTC"), bid_price("BTC/USD")),當現價跌超過0.5%時,就會改用買單第一筆來掛 點「保存草稿」 ## 啟用策略 準備好要開始時,分別選取兩個策略後點「啟用策略」 ![](https://i.imgur.com/laxf0r8.png) 將兩個策略執行後就會看到在上下0.5%的價位掛好了買單跟賣單了 ![](https://i.imgur.com/BU3dkod.png) 當現價碰到買單或賣單而成交後,BTC現貨數量改變, 就會依現貨價值的上下0.5%處重新掛買單和賣單 執行了約十個小時的結果: ![](https://i.imgur.com/lO4MoIU.png) ![](https://i.imgur.com/aG4frUo.png) ![](https://i.imgur.com/vCv1eZA.png) BTC的美元價值還是$1000,但USD多了$12 如果一開始轉入的0.024個BTC只是放著的話,美元價值會從$1000變成 0.024 * 42076 = 1009.8,只多了$9.8,因為剛好遇到下跌又上漲的行情,所以無限網格會比純買幣多賺一點 放了一天半後,又來一次下跌又上漲 ![](https://i.imgur.com/E4D1aMy.png) ![](https://i.imgur.com/ORtxwk4.png) BTC的美元價值$1000,USD多了$39 一開始的0.024個BTC只是放著的話,現在是 0.024 * 43346 = 1040.3,多了$40 結果跟無限網格差不多,因為漲上去但振盪次數不夠多的話,網格不會比純買幣好 之後BTC直接漲破5萬後就停掉沒有用網格了 ## 使用FTT做無限網格 另外開一個FTT無限網格,放$1000USD與$3000的FTT 設定漲0.67%,賣$20的FTT,跌0.67%,買$20的FTT 新增一個變數usd_value,設定為3000,代表要鎖定的FTT美元價值,之後可以再調整成想要的值 ![](https://i.imgur.com/5uTizmJ.png) ### 設定策略 buy FTT ![](https://i.imgur.com/5EsvW6z.png) 條件 balance("USD")>20 ![](https://i.imgur.com/jaUo8lG.png) 訂單數量 (get_variable("usd_value")*0.0067) / price("FTT/USD") + 0.05 限價 (get_variable("usd_value")*0.9933) / balance("FTT") ### 設定策略 sell FTT ![](https://i.imgur.com/19cHiAi.png) 條件 balance("FTT")>=0.1 ![](https://i.imgur.com/EcLdjum.png) 訂單數量 (get_variable("usd_value")*0.0067) / price("FTT/USD") + 0.05 限價 (get_variable("usd_value")*1.0067)/ balance("FTT") ### 執行結果 放了10天的結果 ![](https://i.imgur.com/qRFk8mJ.png) ![](https://i.imgur.com/SmmO7dw.png) 使用無限網格的話賺了$257+$11=$268,如果是現貨放著的話51.3~55.3漲了約8%,賺$3000*8%=$240 放12天跌到52.6,只漲2.5% ![](https://i.imgur.com/SFtM2Dy.png) ![](https://i.imgur.com/yAS2RIC.png) 用無限網格的話賺 $117+$7=$124 現貨放著的話賺 $3000*2.5%=$75 放到第22天漲到63塊,漲22.8% ![](https://i.imgur.com/Ffn0KMv.png) ![](https://i.imgur.com/jXxChNO.png) 用無限網格的話賺 $706-$10=$696 (原本放著的$1000轉走了) 現貨放著的話賺 $3000*22.8%=$684 ### 將獲利複投 自動增加 usd_value 若是希望將賺到的USD再重覆投入FTT網格的話,可以設定將鎖定的FTT美元價值慢慢提高,例如現在USD有$706,那設定每小時看USD有超過$710的話,就把 usd_value 加10,這樣買入的策略下次就會多買一點,賣出策略會賣少一點 但小心這樣相當於在高位複投,如果又大跌會賠更多 新增一個策略 set usd_value ![](https://i.imgur.com/1QJFIoH.png) ### 執行結果 又經歷了一段起起伏伏後,目前價格64塊,漲24.75% ![](https://i.imgur.com/FoWv5ig.png) usd_value被自動增加到3160 ![](https://i.imgur.com/n9Nu5aP.png) 無限網格獲利 $616+$168 = $784 現貨放著的話 $3000*24.75% = $742 ### 計算獲利 如果將部份幣轉走,或是補了更多USD進來,久了可能就搞不清楚獲利是多少了,所以再寫個策略來自動計算獲利 先新增兩個變數來記錄轉走的幣和補進來的USD spot_trans usd_deposit 沒有把幣轉走的話,spot_trans就設為0 一開始存的USD是1000的話,usd_deposit就填1000 如果有提走或補進來的話,再手動更改這個值 新增變數來記錄獲利的值 profit 然後新增策略 count_profit ![](https://i.imgur.com/zkgRMF7.png) 計算的方法為 balance("USD")-get_variable("usd_deposit")+ (balance("FTT")+get_variable("spot_trans"))*price("FTT/USD")-3000 其中 balance("USD")-get_variable("usd_deposit") 代表目前的USD餘額減掉一開始存的USD數量 (balance("FTT")+get_variable("spot_trans"))*price("FTT/USD")代表幣的數量乘以幣的單價,也就是目前FTT的美金價值 最後減掉一開始幣的美金價值,例如之前一開始放的FTT美金價值為3000