Type/to search
Built-in Functions
Global
Version
Sleep
IsVirtual
Mail
Mail_Go
SetErrorFilter
GetPid
GetLastError
GetCommand
GetMeta
Dial
HttpQuery
HttpQuery_Go
Encode
UnixNano
Unix
GetOS
MD5
DBExec
UUID
EventLoop
__Serve
_G
_D
_N
_C
_Cross
JSON.parse
JSON.stringify
SetChannelData
GetChannelData
Log
Market
Trade
Account
Futures
NetSettings
Threads
threading
Thread
getThread
mainThread
currentThread
Lock
Condition
Event
Dict
pending
Thread
ThreadLock
ThreadEvent
ThreadCondition
ThreadDict
Web3
TA
Talib
talib.CDL2CROWS
talib.CDL3BLACKCROWS
talib.CDL3INSIDE
talib.CDL3LINESTRIKE
talib.CDL3OUTSIDE
talib.CDL3STARSINSOUTH
talib.CDL3WHITESOLDIERS
talib.CDLABANDONEDBABY
talib.CDLADVANCEBLOCK
talib.CDLBELTHOLD
talib.CDLBREAKAWAY
talib.CDLCLOSINGMARUBOZU
talib.CDLCONCEALBABYSWALL
talib.CDLCOUNTERATTACK
talib.CDLDARKCLOUDCOVER
talib.CDLDOJI
talib.CDLDOJISTAR
talib.CDLDRAGONFLYDOJI
talib.CDLENGULFING
talib.CDLEVENINGDOJISTAR
talib.CDLEVENINGSTAR
talib.CDLGAPSIDESIDEWHITE
talib.CDLGRAVESTONEDOJI
talib.CDLHAMMER
talib.CDLHANGINGMAN
talib.CDLHARAMI
talib.CDLHARAMICROSS
talib.CDLHIGHWAVE
talib.CDLHIKKAKE
talib.CDLHIKKAKEMOD
talib.CDLHOMINGPIGEON
talib.CDLIDENTICAL3CROWS
talib.CDLINNECK
talib.CDLINVERTEDHAMMER
talib.CDLKICKING
talib.CDLKICKINGBYLENGTH
talib.CDLLADDERBOTTOM
talib.CDLLONGLEGGEDDOJI
talib.CDLLONGLINE
talib.CDLMARUBOZU
talib.CDLMATCHINGLOW
talib.CDLMATHOLD
talib.CDLMORNINGDOJISTAR
talib.CDLMORNINGSTAR
talib.CDLONNECK
talib.CDLPIERCING
talib.CDLRICKSHAWMAN
talib.CDLRISEFALL3METHODS
talib.CDLSEPARATINGLINES
talib.CDLSHOOTINGSTAR
talib.CDLSHORTLINE
talib.CDLSPINNINGTOP
talib.CDLSTALLEDPATTERN
talib.CDLSTICKSANDWICH
talib.CDLTAKURI
talib.CDLTASUKIGAP
talib.CDLTHRUSTING
talib.CDLTRISTAR
talib.CDLUNIQUE3RIVER
talib.CDLUPSIDEGAP2CROWS
talib.CDLXSIDEGAP3METHODS
talib.AD
talib.ADOSC
talib.OBV
talib.ACOS
talib.ASIN
talib.ATAN
talib.CEIL
talib.COS
talib.COSH
talib.EXP
talib.FLOOR
talib.LN
talib.LOG10
talib.SIN
talib.SINH
talib.SQRT
talib.TAN
talib.TANH
talib.MAX
talib.MAXINDEX
talib.MIN
talib.MININDEX
talib.MINMAX
talib.MINMAXINDEX
talib.SUM
talib.HT_DCPERIOD
talib.HT_DCPHASE
talib.HT_PHASOR
talib.HT_SINE
talib.HT_TRENDMODE
talib.ATR
talib.NATR
talib.TRANGE
talib.BBANDS
talib.DEMA
talib.EMA
talib.HT_TRENDLINE
talib.KAMA
talib.MA
talib.MAMA
talib.MIDPOINT
talib.MIDPRICE
talib.SAR
talib.SAREXT
talib.SMA
talib.T3
talib.TEMA
talib.TRIMA
talib.WMA
talib.LINEARREG
talib.LINEARREG_ANGLE
talib.LINEARREG_INTERCEPT
talib.LINEARREG_SLOPE
talib.STDDEV
talib.TSF
talib.VAR
talib.ADX
talib.ADXR
talib.APO
talib.AROON
talib.AROONOSC
talib.BOP
talib.CCI
talib.CMO
talib.DX
talib.MACD
talib.MACDEXT
talib.MACDFIX
talib.MFI
talib.MINUS_DI
talib.MINUS_DM
talib.MOM
talib.PLUS_DI
talib.PLUS_DM
talib.PPO
talib.ROC
talib.ROCP
talib.ROCR
talib.ROCR100
talib.RSI
talib.STOCH
talib.STOCHF
talib.STOCHRSI
talib.TRIX
talib.ULTOSC
talib.WILLR
talib.AVGPRICE
talib.MEDPRICE
talib.TYPPRICE
talib.WCLPRICE
OS
Structures
Built-in Variables

The exchange.SetContractType() function is used to set the current contract code for the exchange exchange object.

exchange.SetContractType(symbol)

Examples

  • Set the current contract to the current week contract:

    javascript
    function main() { // Set to current week contract exchange.SetContractType("this_week") }
    python
    def main(): exchange.SetContractType("this_week")
    c++
    void main() { exchange.SetContractType("this_week"); }
  • When setting a contract with USDT as margin, you need to switch the trading pair in the code (you can also set the trading pair directly when adding the exchange object):

    javascript
    function main() { // Default trading pair is BTC_USD, set contract to current week, contract is coin-margined contract exchange.SetContractType("this_week") Log("ticker:", exchange.GetTicker()) // Switch trading pair, then set contract, switch to USDT-margined contract, different from coin-margined contract exchange.IO("currency", "BTC_USDT") exchange.SetContractType("swap") Log("ticker:", exchange.GetTicker()) }
    python
    def main(): exchange.SetContractType("this_week") Log("ticker:", exchange.GetTicker()) exchange.IO("currency", "BTC_USDT") exchange.SetContractType("swap") Log("ticker:", exchange.GetTicker())
    c++
    void main() { exchange.SetContractType("this_week"); Log("ticker:", exchange.GetTicker()); exchange.IO("currency", "BTC_USDT"); exchange.SetContractType("swap"); Log("ticker:", exchange.GetTicker()); }
  • Print the return value of the exchange.SetContractType() function:

    javascript
    function main(){ // Set contract to current week var ret = exchange.SetContractType("this_week") // Return the information of the current week contract Log(ret) }
    python
    def main(): ret = exchange.SetContractType("this_week") Log(ret)
    c++
    void main() { auto ret = exchange.SetContractType("this_week"); Log(ret); }

Returns

TypeDescription

object

The exchange.SetContractType() function returns a structure containing the exchange contract code corresponding to the current contract code. For example, on Binance Futures exchange, when the current contract code is quarter, the return value structure of this function is: {"InstrumentID":"BTCUSD_230630","instrument":"BTCUSD_230630"}.

Arguments

NameTypeRequiredDescription

symbol

string

Yes

The symbol parameter is used to set the contract code. Available values include: "this_week", "next_week", "quarter", "next_quarter", "swap", etc.

Unless otherwise specified, delivery contract codes in cryptocurrency futures contracts generally include:

  • this_week: Current week contract.

  • next_week: Next week contract.

  • quarter: Quarterly contract.

  • next_quarter: Next quarter contract.

Unless otherwise specified, perpetual contract codes in cryptocurrency futures contracts generally include:

  • swap: Perpetual contract.

See Also

Remarks

In cryptocurrency futures contract strategies, taking switching to the BTC_USDT trading pair as an example:

When using the exchange.SetCurrency("BTC_USDT") or exchange.IO("currency", "BTC_USDT") function to switch trading pairs, after switching you need to use the exchange.SetContractType() function to reset the contract in order to determine the current contract to operate under the new trading pair. The system determines whether it is a coin-margined contract or USDT-margined contract based on the trading pair.

For example: When the trading pair is set to BTC_USDT, using the exchange.SetContractType("swap") function to set the contract code to swap sets it to the USDT-margined perpetual contract for BTC. If the trading pair is BTC_USD, using the exchange.SetContractType("swap") function to set the contract code to swap sets it to the coin-margined perpetual contract for BTC.

Detailed introduction to supported cryptocurrency futures contract exchanges. The contract naming for each exchange is as follows:

  • Futures_OKCoin (OKX)
    Set to perpetual contract: exchange.SetContractType("swap")
    Set to current week contract: exchange.SetContractType("this_week")
    Set to next week contract: exchange.SetContractType("next_week")
    Set to monthly contract: exchange.SetContractType("month")
    Set to next month contract: exchange.SetContractType("next_month")
    Set to quarterly contract: exchange.SetContractType("quarter")
    Set to next quarter contract: exchange.SetContractType("next_quarter")

    OKX supports pre-market trading contracts: The contract delivery date is fixed, and an example of the exchange-defined contract code is: HMSTR-USDT-250207. On the FMZ platform, set the trading pair to HMSTR_USDT, then use exchange.SetContractType("HMSTR-USDT-250207") to set this contract.
    For functions that support the symbol parameter, such as: exchange.GetTicker(), exchange.CreateOrder(), etc., you can specify the symbol parameter as: HMSTR_USDT.HMSTR-USDT-250207 to get market data for this contract or execute orders.

  • Futures_HuobiDM (Huobi Futures)
    Set to current week contract: exchange.SetContractType("this_week").
    Set to next week contract: exchange.SetContractType("next_week").
    Set to quarterly contract: exchange.SetContractType("quarter").
    Set to next quarter contract: exchange.SetContractType("next_quarter").
    Set to perpetual contract: exchange.SetContractType("swap").
    Supports contracts with USDT as margin. Taking BTC contract as an example: use exchange.IO("currency", "BTC_USDT") to switch to contracts with USDT as margin,
    or directly set the current trading pair to BTC_USDT when configuring live trading parameters and adding exchange objects. After switching trading pairs, you need to call the exchange.SetContractType() function again to set the contract.

  • Futures_BitMEX (BitMEX)
    Set to perpetual contract: exchange.SetContractType("swap").
    Futures_BitMEX exchange's delivery contracts are monthly contracts, with contract codes as follows (January to December):

    code
    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"

    Set delivery contract: exchange.SetContractType("December"). For example, when the trading pair is set to XBT_USDT, calling exchange.SetContractType("December") function sets the BTC USDT-margined December delivery contract (the actual contract code is XBTUSDTZ23).

    Futures_BitMEX Contract Information Summary

    Futures_BitMEX Defined Contract CodeCorresponding Trading Pair on FMZCorresponding Contract Code on FMZNotes
    DOGEUSDDOGE_USDswapUSD quoted, XBT settled. XBT is BTC.
    DOGEUSDTDOGE_USDTswapUSDT quoted, USDT settled.
    XBTETHXBT_ETHswapETH quoted, XBT settled.
    XBTEURXBT_EURswapEUR quoted, XBT settled.
    USDTUSDCUSDT_USDCswapUSDC quoted, XBT settled.
    ETHUSD_ETHETH_USD_ETHswapUSD quoted, ETH settled.
    XBTH24XBT_USDMarchExpiry: March 2024, month code: H; USD quoted, XBT settled.
    ETHUSDZ23ETH_USDDecemberExpiry: December 2023, month code: Z; USD quoted, XBT settled.
    XBTUSDTZ23XBT_USDTDecemberExpiry: December 2023, month code: Z; USDT quoted, USDT settled.
    ADAZ23ADA_XBTDecemberExpiry: December 2023, month code: Z; XBT quoted, XBT settled.
    P_XBTETFX23USDT_XXXP_XBTETFX23Expiry: November 2023; percentage quoted, USDT settled.
  • Futures_GateIO
    Set to current week contract: exchange.SetContractType("this_week").
    Set to next week contract: exchange.SetContractType("next_week").
    Set to quarterly contract: exchange.SetContractType("quarter").
    Set to next quarter contract: exchange.SetContractType("next_quarter").
    Set to perpetual contract: exchange.SetContractType("swap").
    Supports contracts with USDT as margin. Taking BTC contract as an example, use exchange.IO("currency", "BTC_USDT") to switch to contracts with USDT as margin,
    or directly set the current trading pair to BTC_USDT when configuring live trading parameters and adding exchange objects. After switching trading pairs, you need to call the exchange.SetContractType() function again to set the contract.

  • Futures_Deribit
    Set to perpetual contract: exchange.SetContractType("swap").
    Supports Deribit's USDC contracts.
    Delivery contracts include: "this_week", "next_week", "month", "quarter", "next_quarter", "third_quarter", "fourth_quarter".
    Spread contracts (future_combo): "this_week,swap", "next_week,swap", "next_quarter,this_week", "third_quarter,this_week", "month,next_week", and various other combinations.
    For options contracts, you need to pass the specific option contract code defined by the exchange. Please refer to the Deribit official website for details.

  • Futures_KuCoin
    Coin-margined contracts, for example, set the trading pair to BTC_USD, then set the contract code for coin-margined contracts:
    Set to perpetual contract: exchange.SetContractType("swap").
    Set to current quarter contract: exchange.SetContractType("quarter").
    Set to next quarter contract: exchange.SetContractType("next_quarter").

    Contracts with USDT as margin:
    For example, set the trading pair to BTC_USDT, then set the contract code for USDT-margined contracts.
    Set to perpetual contract: exchange.SetContractType("swap").

  • Futures_Binance
    Binance Futures exchange defaults to the perpetual contract of the current trading pair, contract code: swap.
    Set to perpetual contract: exchange.SetContractType("swap"). Binance perpetual contracts support USDT as margin, for example, BTC's USDT-margined perpetual contract, set the trading pair to BTC_USDT. Binance also supports coin-margined perpetual contracts, for example, BTC's coin-margined perpetual contract, set the trading pair to BTC_USD.
    Set to quarterly contract: exchange.SetContractType("quarter"). Delivery contracts support coin-margined contracts (i.e., using coins as margin), for example, BTC's quarterly contract, set the trading pair to BTC_USD, then set the contract exchange.SetContractType("quarter") to set BTC's coin-margined quarterly contract.
    Set to next quarter contract: exchange.SetContractType("next_quarter"). For example, BTC's coin-margined next quarter contract, set the trading pair to BTC_USD, then set the contract exchange.SetContractType("next_quarter").
    Binance supports some delivery contracts with USDT as margin. Taking BTC as an example, set the trading pair to BTC_USDT, then set the contract code.

    Supports Binance options contracts:
    The option contract code format follows the exchange-defined option contract codes: BTC-241227-15000-C, XRP-240112-0.5-C, BTC-241227-15000-P. Taking Binance option contract code BTC-241227-15000-P as an example: BTC is the option currency code, 241227 is the exercise date, 15000 is the strike price, P indicates a put option, and C indicates a call option.
    For specific information about option types (European options/American options), please refer to the exchange's option contract documentation.
    The exchange may restrict option sellers, requiring separate qualification application. Binance options require seller qualification application.

  • Futures_Bibox
    Bibox perpetual contract code: swap.
    Set to perpetual contract: exchange.SetContractType("swap").

  • Futures_Bybit
    Defaults to the perpetual contract of the current trading pair, contract code: swap.
    Current week contract code: this_week.
    Next week contract code: next_week.
    Third week contract code: third_week.
    Monthly contract code: month.
    Next month contract code: next_month.
    Quarterly contract code: quarter.
    Next quarter contract code: next_quarter.
    Third quarter contract code: third_quarter.
    Direct use of exchange contract naming: For example ETHUSDT-04APR25, since some contract types on Bybit exchange do not have clear periodicity, the exchange-defined contract code naming is used directly.

  • Futures_Kraken
    Defaults to the perpetual contract of the current trading pair, contract code: swap.
    swap: Perpetual contract.
    month: Current month contract.
    quarter: Quarterly contract.
    next_quarter: Next quarter contract.
    third_quarter: Third quarter contract.
    swap_pf: Multi-collateral perpetual contract.
    quarter_ff: Multi-collateral quarterly contract.
    month_ff: Multi-collateral current month contract.
    next_quarter_ff: Multi-collateral next quarter contract.
    third_quarter_ff: Multi-collateral third quarter contract.
    Direct use of exchange contract naming: For example FF_ETHUSD_250307, since some contract types on Kraken exchange do not have clear periodicity, the exchange-defined contract code naming is used directly.

  • Futures_Bitfinex
    Defaults to the perpetual contract of the current trading pair, contract code: swap.

  • Futures_Bitget
    Defaults to the perpetual contract of the current trading pair, contract code: swap.
    Setting the trading pair to BTC_USD is for coin-margined contracts, setting the trading pair to BTC_USDT is for USDT-settled contracts. Simulated contracts can set the trading pair to: SBTC_USD, BTC_SUSDT.

  • Futures_dYdX (v4)
    dYdX perpetual contract code: swap.
    Set to perpetual contract: exchange.SetContractType("swap"), dYdX only has the USD.swap instrument dimension, using USDC as margin.

  • Futures_MEXC
    MEXC perpetual contract code: swap.
    Set to perpetual contract: exchange.SetContractType("swap"). Setting the trading pair to BTC_USD is for coin-margined contracts, setting the trading pair to BTC_USDT is for USDT-settled contracts.

  • Futures_Crypto
    Tokens in the crypto.com exchange account can be converted to USD-denominated credit for use as margin in contract trading.
    Set to perpetual contract: exchange.SetContractType("swap"). For example, when the trading pair is set to BTC_USD, calling exchange.SetContractType("swap") function sets the BTC perpetual contract.
    crypto.com exchange's delivery contracts are monthly contracts, with contract codes as follows (January to December):

    code
    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"

    Set delivery contract: exchange.SetContractType("October"). For example, when the trading pair is set to BTC_USD, calling exchange.SetContractType("October") function sets the BTC October delivery contract.
    The contract code corresponding to the current moment is: BTCUSD-231027.

  • Futures_WOO
    Futures_WOO exchange supports USDT-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to BTC_USDT, calling exchange.SetContractType("swap") function sets the current contract to BTC's USDT-margined perpetual contract.

  • Futures_Hyperliquid
    Futures_Hyperliquid exchange supports USDC-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to ETH_USD, calling exchange.SetContractType("swap") function sets the current contract to ETH's USDC-margined perpetual contract.
    Futures_Hyperliquid only has the USD.swap instrument dimension, using USDC as margin.
    Futures_Hyperliquid supports HIP-3 instruments.

  • Futures_Lighter
    Futures_Lighter exchange supports USDC-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to BTC_USDC, calling exchange.SetContractType("swap") function sets the current contract to BTC's USDC-margined perpetual contract.
    Futures_Lighter only supports perpetual contracts.

  • Futures_Backpack
    Futures_Backpack exchange supports USDC-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to ETH_USDC, calling exchange.SetContractType("swap") function sets the current contract to ETH's USDC-margined perpetual contract.

  • Futures_edgeX
    Futures_edgeX exchange supports USDT-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to BTC_USDT, calling exchange.SetContractType("swap") function sets the current contract to BTC's USDT-margined perpetual contract.

  • Futures_WOOFI
    Futures_WOOFI exchange supports USDC-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to ETH_USDC, calling exchange.SetContractType("swap") function sets the current contract to ETH's USDC-margined perpetual contract.

  • Futures_Coinw
    Futures_Coinw exchange supports USDT-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to ETH_USDT, calling exchange.SetContractType("swap") function sets the current contract to ETH's USDT-margined perpetual contract.

  • Futures_Aster
    Futures_Aster exchange supports USDT-margined contracts, perpetual contract code is swap. For example, when the trading pair is set to ETH_USDT, calling exchange.SetContractType("swap") function sets the current contract to ETH's USDT-margined perpetual contract.

  • Futures_DeepCoin
    Coin-margined contracts, for example, set the trading pair to BTC_USD, then set the contract code for coin-margined contracts:
    Set to perpetual contract: exchange.SetContractType("swap").

    Contracts with USDT as margin:
    For example, set the trading pair to BTC_USDT, then set the contract code for USDT-margined contracts.
    Set to perpetual contract: exchange.SetContractType("swap").