# 在FTX量化空間用ATLAS做期現套利 ###### tags: `加密貨幣` 希望達到的效果是一開始會分別下單買200個現貨和合約,看誰先成交 若是合約比現貨多200時,現貨再下單200個 若是現貨比合約多200時,合約再下單200個 若現貨和合約一樣多時,現貨和合約都下單200個 一直到現貨和合約的倉位都達到建倉限制為止 要用限價下單的方式慢慢建倉,如果有質押25FTT可以免手續費,而且如果用市價下單的話,小幣成交量小可能會造成滑價 但是要考慮使用限價下單時,200個不一定會全部成交 沒有質押FTT時,掛單買現貨會扣一點點現貨當手續費,若有質押150FTT時,限價買現貨會返傭下單200會買到200.001個 所以建倉時,現貨和合約不會剛好一樣或是剛好相差200個 使用限價下單要等價格有回檔才會成交,所以建倉時會有大部份時間是單邊做多或做空,此時價格有大幅漲跌,就可能會吃到虧損,所以才要一小筆一小筆的慢慢建倉,最多只有單邊做多或做空200個ATLAS的話,也只有大約$30而已,虧損吃不到多少 如果是輪流買現貨再買合約的話,最可能的情況是漲上去時買現貨的單一直追價,終於回檔一下成交後,就又跌下去了,變成賣合約的單一直追價,結果都在相對高點買,低點賣,可以改成在一個區間內現貨和合約都下單,這樣漲時合約就會成交,跌時現貨就會成交 所以改成現貨與合約的數量差在200以內時,現貨與合約都會下單100個 合約比現貨多超過200時,合約暫停下單,現貨下單100個 現貨比合約多超過200時,現貨暫停下單,合約下單100個 ## 建立三個變數 create_position_limit 建倉限制,代表最多要買多少ATLAS現貨與合約 spot_trans 代表有多少現貨轉走了,沒有轉走的話填0就好 ## 建倉現貨做多 Create Spot Position ![](https://i.imgur.com/Tvfv1Zo.png) 條件 `get_variable("create_position_limit")-(balance("ATLAS")+get_variable("spot_trans"))>10 and position("ATLAS-PERP")+200>(balance("ATLAS")+get_variable("spot_trans")) and premium("ATLAS-PERP")>1` get_variable("create_position_limit")-(balance("ATLAS")+get_variable("spot_trans"))>10 代表建倉限制-現貨數量>10,現貨數量少於建倉限制超過10的時候,10是ATLAS下單最小要買的數量 position("ATLAS-PERP")+200>(balance("ATLAS")+get_variable("spot_trans")) 合約數量+200>現貨數量,或是現貨數量-合約數量<200 代表合約大於現貨或是合約小於現貨但數量差距小於200時 premium("ATLAS-PERP")>1 premium代表合約價錢/現貨價錢,大於1就是合約價錢比現貨價錢高,此時做空合約做多現貨比較好 ![](https://i.imgur.com/m5I1PYF.png) 訂單數量 `min( get_variable("create_position_limit")-(balance("ATLAS")+get_variable("spot_trans")), position("ATLAS-PERP")+200-(balance("ATLAS")+get_variable("spot_trans")), 100 )` 下單的數量,有三個值,用min()取最小那個 1. 建倉限制-現貨數量,避免買到超過建倉限制 2. 合約數量+200-現貨數量,合約與現貨的差再加200 3. 100,若超過100的話,限制只買100 例如現貨比合約少20個時,第2項算出來是220,但第3項限制只買100個,所以只會下單100個,成交後現貨比合約多80個 現貨比合約多80個時,第2項算出來是120,那就只會下單現貨120個,成交後現貨比合約多200個 現貨比合約多200時,不合條件合約+200>現貨,所以不會下單,等合約有再增加後才會繼續下單 ## 建倉合約做空 Create Perp Position ![](https://i.imgur.com/67Z7shV.png) 條件 `get_variable("create_position_limit")-position("ATLAS-PERP")>10 and (balance("ATLAS")+get_variable("spot_trans"))+200>position("ATLAS-PERP") and premium("ATLAS-PERP")>1` ![](https://i.imgur.com/pvSttdh.png) 訂單數量 `min( get_variable("create_position_limit")-position("ATLAS-PERP"), (balance("ATLAS")+get_variable("spot_trans"))+200-position("ATLAS-PERP"), 100 )` # 關閉或減少期現套利的倉位 當費率變少或變成負的時候,要減倉期現套利的倉位,也就是分別賣掉現貨,買入合約 ## 設定變數 deleverage_position_limit 減倉限制,代表要減倉到剩下多少現貨與合約 ## 減倉現貨 ![](https://i.imgur.com/Ji26jnC.png) 條件 `balance("ATLAS")-get_variable("deleverage_position_limit")>10 and balance("ATLAS")+200>position("ATLAS-PERP")` ![](https://i.imgur.com/d3QCNre.png) 訂單數量 `min( balance("ATLAS")-get_variable("deleverage_position_limit"), balance("ATLAS")+200-position("ATLAS-PERP"), 100 )` ## 買入合約 ![](https://i.imgur.com/1w0GuGq.png) 條件 `position("ATLAS-PERP")-get_variable("deleverage_position_limit")>10 and position("ATLAS-PERP")+200>balance("ATLAS")` ![](https://i.imgur.com/vOLxJQp.png) 訂單數量 `min( position("ATLAS-PERP")-get_variable("deleverage_position_limit"), position("ATLAS-PERP")+200-balance("ATLAS"), 100 )` 勾選「僅減少」代表只平掉做空的合約,避免將做空的合約都平掉後,又多買了一些變成做多合約