Sumber dimuat naik... memuat...

Masa hadapan

exchange.GetPositions

Peraturanexchange.GetPositions()fungsi digunakan untuk mendapatkan maklumat kedudukan;GetPositions()fungsi adalah fungsi ahli objek pertukaran {@var/EXCHANGE exchange}.GetPositions()fungsi mendapat maklumat kedudukan akaun pertukaran terikat kepada objek pertukaranexchange. Tujuan fungsi (metode) ahliexchangeobjek hanya berkaitan denganexchangedan tidak akan diulang di sini.

Peraturanexchange.GetPositions()fungsi mengembalikan pelbagai struktur {@struct/Position Position} jika permintaan data berjaya, dan ia mengembalikan nilai null jika permintaan data gagal. {@struct/Position Position} array, nilai sifar

pertukaran.GetPositions ((() pertukaran.GetPositions (simbol)

Parametersymboldigunakan untuk menetapkansimbol perdaganganatauJulat simbol daganganuntuk ditanyakan. JikasymbolJika parameter tidak diteruskan, lalai adalah untuk meminta data kedudukan semua simbol dalam julat dimensi pasangan dagangan semasa dan kod kontrak.

simbol palsu senar

/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

function main() {
    var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    for (var symbol of arrSymbol) {
        exchange.CreateOrder(symbol, "buy", -1, 1)
        exchange.CreateOrder(symbol, "sell", -1, 1)
    }

    var defaultPositions = exchange.GetPositions()
    var swapPositions = exchange.GetPositions("USDT.swap")
    var futuresPositions = exchange.GetPositions("USDT.futures")
    var btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")

    var tbls = []
    var arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
    var tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
    for (var index in arr) {
        var positions = arr[index]
        var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], rows: [] }
        for (var pos of positions) {
            tbl.rows.push([pos.Symbol, pos.MarginLevel, pos.Amount, pos.FrozenAmount, pos.Price, pos.Profit, pos.Type, pos.ContractType, pos.Margin])
        }
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) + "`")

    // Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
    return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''

import json

def main():
    arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]

    for symbol in arrSymbol:
        exchange.CreateOrder(symbol, "buy", -1, 1)
        exchange.CreateOrder(symbol, "sell", -1, 1)

    defaultPositions = exchange.GetPositions()
    swapPositions = exchange.GetPositions("USDT.swap")
    futuresPositions = exchange.GetPositions("USDT.futures")
    btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")

    tbls = []
    arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
    tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
    for index in range(len(arr)):
        positions = arr[index]
        tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], "rows": []}
        for pos in positions:
            tbl["rows"].append([pos["Symbol"], pos["MarginLevel"], pos["Amount"], pos["FrozenAmount"], pos["Price"], pos["Profit"], pos["Type"], pos["ContractType"], pos["Margin"]])

        tbls.append(tbl)

    LogStatus("`" + json.dumps(tbls) + "`")

    return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

void main() {
    auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
    
    for (const auto& symbol : arrSymbol) {
        exchange.CreateOrder(symbol, "buy", -1, 1);
        exchange.CreateOrder(symbol, "sell", -1, 1);
    }
    
    auto defaultPositions = exchange.GetPositions();
    auto swapPositions = exchange.GetPositions("USDT.swap");
    auto futuresPositions = exchange.GetPositions("USDT.futures");
    auto btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap");
    
    json tbls = R"([])"_json;
    std::vector<std::vector<Position>> arr = {defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions};
    std::string tblDesc[] = {"defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"};
    for (int index = 0; index < arr.size(); index++) {
        auto positions = arr[index];
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"],
            "rows": []
        })"_json;
        tbl["title"] = tblDesc[index];
    
        for (const auto& pos : positions) {
            json arrJson = R"([])"_json;
    
            arrJson.push_back(pos.Symbol);
            arrJson.push_back(pos.MarginLevel);
            arrJson.push_back(pos.Amount);
            arrJson.push_back(pos.FrozenAmount);
            arrJson.push_back(pos.Price);
            arrJson.push_back(pos.Profit);
            arrJson.push_back(pos.Type);
            arrJson.push_back(pos.ContractType);
            arrJson.push_back(pos.Margin);
    
            tbl["rows"].push_back(arrJson);
        }
    
        tbls.push_back(tbl);
    }
    
    LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
    
    return; 
}

Menggunakan objek pertukaran niaga hadapan untuk meletakkan pesanan pasaran untuk pelbagai pasangan dagangan yang berbeza dan kod kontrak.

Kontrak niaga hadapan mata wang kripto berbeza dengan spot mata wang kripto, yang hanya mempunyai konsep kedudukan yang logik.Pasangan dagangan, Kod kontrakSila rujuk {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} fungsi. DalamGetPositionsfungsi, senario penggunaan parameter simbol diringkaskan seperti berikut:

Klasifikasi Objek Pertukaran simbol Parameter Lingkup pertanyaan Perhatikan
Masa hadapan Jangan lulus parameter simbol Mencari semua produk dagangan dalam julat dimensi pasangan dagangan semasa dan kod kontrak Jika pasangan dagangan semasa adalah BTC_USDT dan kod kontrak adalah swap, semua kontrak kekal berasaskan USDT akan ditanyakan.GetPositions("USDT.swap")
Masa hadapan Tentukan produk dagangan, parameter simbol adalah: BTC_USDT.swap Mencari kontrak kekal berasaskan USDT BTC tertentu Untuk objek pertukaran niaga hadapan, format simbol parameter adalah: gabunganPasangan dagangandanKod kontrakditakrifkan oleh platform FMZ, dipisahkan dengan aksara"..
Masa hadapan Tentukan julat produk dagangan, parameter simbol adalah: USDT.swap Mencari semua kontrak kekal berasaskan USDT -
Bursa niaga hadapan yang menyokong opsyen Jangan lulus parameter simbol Mencari semua kontrak opsyen dalam julat dimensi pasangan dagangan semasa Jika pasangan dagangan semasa adalah BTC_USDT, kontrak ditetapkan kepada kontrak opsyen, contohnya, kontrak opsyen Binance: BTC-240108-40000-C
Bursa niaga hadapan yang menyokong opsyen Menentukan produk perdagangan tertentu Mencari kontrak opsyen yang ditentukan Sebagai contoh, untuk Bursa niaga hadapan Binance, parameter simbol adalah: BTC_USDT.BTC-240108-40000-C
Bursa niaga hadapan yang menyokong opsyen Tentukan julat produk dagangan, parameter simbol adalah: USDT.option Mencari semua kontrak opsyen berasaskan USDT -

DalamGetPositionsfungsi, objek pertukaran niaga hadapan Julat dimensi pertanyaan diringkaskan seperti berikut:

simbol Parameter Penentuan skop permintaan Perhatikan
USDT.swap Julat kontrak kekal berasaskan USDT. Untuk

dimensi yang tidak disokong oleh antara muka API pertukaran, Kesilapan akan dilaporkan dan nilai null akan dikembalikan apabila memanggil.

USDT.futures. USDT berasaskan kontrak penghantaran.

USD.swap. kontrak.

USD.futures.Skop penghantaran berasaskan mata wang kontrak.

USDT.option.Rentang kontrak pilihan berasaskan USDT.

USD.option. Rentang kontrak pilihan berasaskan mata wang.

  • |

USDT.futures_combo. Pelbagai kombinasi CFD. Futures_Deribit Exchange

USD.futures_ff. Jangkauan kontrak penghantaran margin bercampur. Futures_Kraken Exchange.

USD.swap_pf Rentang kontrak kekal margin campuran. Futures_Kraken Exchange.

Serasi denganexchange.GetPosition()panggilan,GetPositionadalah sama denganGetPositions.

Apabila akaun yang diwakili oleh objek pertukaranexchangetidak mempunyai kedudukan dalamJulat pertanyaanatauInstrumen dagangan tertentu, yangexchange.GetPositions()fungsi mengembalikan array kosong, contohnya:[].

{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}

exchange.SetMarginLevel

Peraturanexchange.SetMarginLevel()Fungsi ini digunakan untuk menetapkan nilai leverage pasangan dagangan atau kontrak yang ditentukan olehsymbolParameter. Serasi dengan hanya lulus dalam parametermarginLeveluntuk menetapkan nilai leverage pasangan dagangan semasa atau kontrak objek pertukaran {@var/EXCHANGE exchange}.

pertukaran.SetMarginLevel ((simbol, marginLevel) pertukaran.SetMarginLevel ((marginLevel)

Peraturansymbolparameter digunakan untuk menentukan pasangan dagangan atau kontrak yang mana nilai leverage perlu diselaraskan.symbolparameterSetMarginLevel()fungsi adalah selaras dengan formatsymbolparameterGetTicker()fungsi. simbol palsu senar PeraturanmarginLevelparameter digunakan untuk menetapkan nilai leverage, yang biasanya bilangan bulat untuk pertukaran dan ia juga menyokong tetapan nilai leverage titik terapung untuk beberapa pertukaran. marginLevel betul nombor

function main() {
    exchange.SetMarginLevel(10)
    // Set the leverage of BTC’s USDT-margined perpetual contract to 15
    exchange.SetMarginLevel("BTC_USDT.swap", 15)
}
def main():
    exchange.SetMarginLevel(10)
    exchange.SetMarginLevel("BTC_USDT.swap", 15)
void main() {
    exchange.SetMarginLevel(10);
    exchange.SetMarginLevel("BTC_USDT.swap", 15); 
}

Peraturanexchange.SetMarginLevel()fungsi menyokong cryptocurrency kontrak niaga hadapan objek pertukaran sahaja. sistem backtesting menyokong memanggilexchange.SetMarginLevel()fungsi untuk menetapkan nilai leverage. Untuk kontrak niaga hadapan mata wang kripto, mekanisme leverage tidak seragam kerana bursa kontrak niaga hadapan mata wang kripto.exchange.SetMarginLevel()fungsi tidak menjana permintaan rangkaian, tetapi hanya menetapkan pembolehubah leverage dalam sistem FMZ yang mendasari (digunakan untuk lulus parameter dalam antara muka penempatan pesanan). Nilai leverage beberapa kontrak niaga hadapan bursa adalah tetapan bursa, yang perlu ditetapkan di halaman laman web bursa atau menggunakan antara muka API.exchange.SetMarginLevel()fungsi akan menjana permintaan rangkaian dan mungkin gagal menetapkan leverage. boleh ada banyak sebab untuk ini, sebagai contoh: terdapat kedudukan semasa atau pesanan menunggu, yang membuat mustahil untuk menetapkan nilai leverage baru untuk pasangan perdagangan atau kontrak ini. Bursa yang tidak menyokongexchange.SetMarginLevel()fungsi:

Nama Fungsi Pertukaran Spot yang tidak disokong Pertukaran niaga hadapan tanpa sokongan
SetMarginLevel Futures_dYdX / Futures_Deribit

{@var/EXCHANGE pertukaran}

exchange.SetDirection

Peraturanexchange.SetDirection()fungsi digunakan untuk menetapkan arah pesanan fungsi {@fun/Trade/exchange.Buy exchange.Buy}, fungsi {@fun/Trade/exchange.Sell exchange.Sell} apabila meletakkan pesanan untuk kontrak niaga hadapan.

pertukaran.SetDirection ((arah)

Peraturandirectionparameter digunakan untuk menetapkan arah kontrak niaga hadapan apabila pesanan diletakkan."buy", "closesell", "sell", "closebuy". Arah betul senar

function main(){
    // For example, set to OKX futures contract of this week
    exchange.SetContractType("this_week")    
    // Set leverage to 5 times
    exchange.SetMarginLevel(5)
    // Set the order type to long
    exchange.SetDirection("buy")
    // Place an order for 2 contracts at 10,000
    exchange.Buy(10000, 2)              
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
}
def main():
    exchange.SetContractType("this_week")
    exchange.SetMarginLevel(5)
    exchange.SetDirection("buy")
    exchange.Buy(10000, 2)
    exchange.SetMarginLevel(5)
    exchange.SetDirection("closebuy")
    exchange.Sell(1000, 2)
void main() {
    exchange.SetContractType("this_week");
    exchange.SetMarginLevel(5);
    exchange.SetDirection("buy");
    exchange.Buy(10000, 2);
    exchange.SetMarginLevel(5);
    exchange.SetDirection("closebuy");
    exchange.Sell(1000, 2);
}

Peraturanexchange.SetDirection()Fungsi menetapkan persamaan antara arah urus niaga kontrak niaga hadapan dan fungsi penempatan pesanan:

Fungsi penempatan pesanan Arah yang ditetapkan oleh parameter fungsi SetDirection Catatan
exchange.Buy beli Beli dan buka kedudukan panjang
exchange.Buy jual tutup Beli dan tutup kedudukan pendek
exchange.Sell menjual Jual dan buka kedudukan pendek
exchange.Sell closebuy Jual dan tutup kedudukan panjang

{@fun/Trade/exchange.Buy pertukaran.Buy}, {@fun/Trade/exchange.Sell pertukaran.Sell}

exchange.SetContractType

Peraturanexchange.SetContractType()fungsi digunakan untuk menetapkan kod kontrak semasa objek pertukaran {@var/EXCHANGE exchange}.

Peraturanexchange.SetContractType()fungsi mengembalikan struktur yang mengandungi kod kontrak pertukaran yang sepadan dengan kod kontrak semasa.quarter, dan struktur nilai pulangan fungsi ini ialah:{"InstrumentID": "BTCUSD_230630", "instrument": "BTCUSD_230630"}. objek

pertukaran.SetContractType ((simbol)

Peraturansymbolparameter digunakan untuk menetapkan kod kontrak, nilai pilihan adalah:"this_week", "next_week", "quarter", "next_quarter", "swap", dan lain-lain Kontrak niaga hadapan mata wang kriptokontrak penghantaranKod, jika tidak ditentukan, biasanya mempunyai:

  • this_week: kontrak minggu semasa.
  • next_week: kontrak minggu depan.
  • quarter: kontrak suku tahun.
  • next_quarter: kontrak suku tahun seterusnya.Kontrak tetapKod dalam kontrak niaga hadapan mata wang kripto, jika tidak ditentukan, umumnya mempunyai:
  • swapKontrak kekal.

simbol betul senar

function main() {
    // Set to this week contract
    exchange.SetContractType("this_week") 
}
def main():
    exchange.SetContractType("this_week")
void main() {
    exchange.SetContractType("this_week");
}

Tetapkan kontrak semasa sebagai kontrak minggu semasa:

function main() {
    // The default trading pair is BTC_USD, set the contract for this week, and the contract is a currency standard contract
    exchange.SetContractType("this_week")
    Log("ticker:", exchange.GetTicker())
    
    // Switching trading pairs, then setting up contracts, switching to USDT as margin contracts, as opposed to currency standard contracts
    exchange.IO("currency", "BTC_USDT")   
    exchange.SetContractType("swap")
    Log("ticker:", exchange.GetTicker())
}
def main():
    exchange.SetContractType("this_week")
    Log("ticker:", exchange.GetTicker())
    exchange.IO("currency", "BTC_USDT")
    exchange.SetContractType("swap")
    Log("ticker:", exchange.GetTicker())
void main() {
    exchange.SetContractType("this_week");
    Log("ticker:", exchange.GetTicker());
    exchange.IO("currency", "BTC_USDT");
    exchange.SetContractType("swap");
    Log("ticker:", exchange.GetTicker());
}

Apabila membuat kontrak denganUSDTsebagai margin, anda perlu menukar pasangan dagangan dalam kod (anda juga boleh menetapkan pasangan dagangan secara langsung apabila menambah objek pertukaran):

function main(){
    // Set the contract for this week
    var ret = exchange.SetContractType("this_week")     
    // Return information about the current week's contracts
    Log(ret)
}
def main():
    ret = exchange.SetContractType("this_week")
    Log(ret)
void main() {
    auto ret = exchange.SetContractType("this_week");
    Log(ret);
}

Mencetak nilai pulanganexchange.SetContractType()fungsi:

Dalam strategi kontrak niaga hadapan cryptocurrency, mengambil contoh beralih keBTC_USDTPasangan dagangan: Apabila menukar pasangan dagangan menggunakanexchange.SetCurrency("BTC_USDT")atauexchange.IO("currency", "BTC_USDT")fungsi, selepas beralih, anda perlu menggunakanexchange.SetContractType()Sistem ini menentukan sama ada ia adalah satu pasangan dagangan baru atau tidak.kontrak standard mata wangatau aKontrak standard USDTSebagai contoh, jika pasangan dagangan ditetapkan untukBTC_USDT, gunakanexchange.SetContractType("swap")fungsi untuk menetapkan kod kontrak untukswap. Pada ketika ini, ia ditetapkan untukBTCuntukStandard USDTkontrak kekal. Jika pasangan daganganBTC_USD, gunakanexchange.SetContractType("swap")fungsi untuk menetapkan kod kontrak untukswap. Pada ketika ini, ia ditetapkan untukBTC...standard mata wangkontrak kekal. Maklumat mengenai pertukaran kontrak niaga hadapan cryptocurrency yang disokong, dengan nama kontrak untuk setiap pertukaran seperti berikut:

  • Futures_OKCoin (OKX) Tetapkan kontrak kekal:exchange.SetContractType("swap")Set untuk kontrak minggu ini:exchange.SetContractType("this_week")Set untuk kontrak minggu depan:exchange.SetContractType("next_week")Tetapkan kontrak bulanan:exchange.SetContractType("month")Tetapkan kontrak bulan depan:exchange.SetContractType("next_month")Set kepada kontrak suku tahunan:exchange.SetContractType("quarter")Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")

    OKX mempunyai kontrak perdagangan pra pasaran: tarikh penghantaran kontrak adalah masa tetap. Kod kontrak yang ditakrifkan oleh bursa adalah, sebagai contoh:HMSTR-USDT-250207. Tetapkan pasangan dagangan kepadaHMSTR_USDTpada platform FMZ, dan kemudian menggunakanexchange.SetContractType("HMSTR-USDT-250207")untuk menetapkan kontrak. Untuk fungsi yang menyokongsymbolparameter, seperti:exchange.GetTicker(), exchange.CreateOrder(), dan lain-lain.symbolparameter sebagai:HMSTR_USDT.HMSTR-USDT-250207untuk mendapatkan data pasaran kontrak ini atau membuat pesanan.

  • Futures_HuobiDM (Futures Huobi) Set untuk kontrak minggu ini:exchange.SetContractType("this_week"). Set untuk kontrak minggu depan:exchange.SetContractType("next_week"). Set kepada kontrak suku tahunan:exchange.SetContractType("quarter"). Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter"). Tetapkan kontrak kekal:exchange.SetContractType("swap"). Ia menyokong kontrak denganUSDTsebagai margin, ambilBTCkontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")untuk beralih kepada kontrak yang menggunakanUSDTsebagai margin. Atau tetapkan pasangan dagangan semasa kepadaBTC_USDTlangsung semasa mengkonfigurasi parameter perdagangan langsung dan menambah objek pertukaran.exchange.SetContractType()fungsi lagi untuk menetapkan kontrak.

  • Futures_BitMEX (BitMEX) Tetapkan kontrak kekal:exchange.SetContractType("swap"). Kontrak penghantaran bursa Futures_BitMEX adalah kontrak bulanan dengan kod kontrak berikut (dari Januari hingga Disember):

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

    Menetapkan kontrak penghantaran:exchange.SetContractType("December"). Sebagai contoh, apabila pasangan dagangan ditetapkan untukXBT_USDT, yangexchange.SetContractType("December")fungsi dipanggil untuk menetapkan kontrak untuk penghantaran Disember dalam USDT berasaskan BTC (mengikut kod kontrak sebenarXBTUSDTZ23).

    Ringkasan Maklumat Kontrak Futures_BitMEX

    Kod kontrak yang ditakrifkan oleh Futures_BitMEX Pasangan dagangan yang sepadan dalam FMZ Kod kontrak yang sepadan dalam FMZ Perhatikan
    DOGEUSD DOGE_USD Pertukaran USD, XBT diselesaikan. XBT adalah BTC.
    DOGEUSDT DOGE_USDT Pertukaran Dilambangkan dalam USDT, diselesaikan dalam USDT.
    XBTETH XBT_ETH Pertukaran ETH dilambangkan, XBT diselesaikan.
    XBTEUR XBT_EUR Pertukaran Diminomi dalam EUR, diselesaikan dalam XBT.
    USDTUSDC USDT_USDC Pertukaran USDC dilambangkan, XBT diselesaikan.
    ETHUSD_ETH ETH_USD_ETH Pertukaran Dimenomi USD, ETH diselesaikan.
    XBTH24 XBT_USD Mac Tarikh tamat tempoh: 24 Mac, kod bulan adalah: H; dalam mata wang USD, diselesaikan dalam XBT.
    ETHUSDZ23 ETH_USD Disember Tarikh tamat tempoh: 23 Disember, kod bulan ialah: Z; dalam mata wang USD, diselesaikan dalam XBT.
    XBTUSDTZ23 XBT_USDT Disember Tarikh tamat tempoh: 23 Disember, kod bulan adalah: Z ; dilambangkan dalam USDT, diselesaikan dalam USDT.
    ADAZ23 ADA_XBT Disember Tarikh tamat tempoh: 23 Disember, kod bulan adalah: Z ; penagihan XBT, penyelesaian XBT.
    P_XBTETFX23 USDT_XXX P_XBTETFX23 Tempoh tamat tempoh: 11/23/23; dinyatakan sebagai peratusan dan diselesaikan dalam USDT.
  • Futures_GateIO Set untuk kontrak minggu ini:exchange.SetContractType("this_week"). Set untuk kontrak minggu depan:exchange.SetContractType("next_week"). Set kepada kontrak suku tahunan:exchange.SetContractType("quarter"). Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter"). Tetapkan kontrak kekal:exchange.SetContractType("swap"). Ia menyokong kontrak denganUSDTsebagai margin, ambilBTCkontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")untuk beralih kepada kontrak yang menggunakanUSDTsebagai margin. Atau tetapkan pasangan dagangan semasa kepadaBTC_USDTlangsung semasa mengkonfigurasi parameter perdagangan langsung dan menambah objek pertukaran.exchange.SetContractType()fungsi lagi untuk menetapkan kontrak.

  • Futures_Deribit Tetapkan kontrak kekal:exchange.SetContractType("swap"). Ia menyokong DeribitUSDCkontrak. Kontrak penghantaran adalah:"this_week", "next_week", "month", "quarter", "next_quarter", "third_quarter", "fourth_quarter". CFD (future_combo):"this_week,swap", "next_week,swap", "next_quarter,this_week", "third_quarter,this_week", "month,next_week", terdapat banyak kombinasi. Untuk kontrak opsyen, anda perlu memasukkan kod kontrak opsyen khusus yang ditakrifkan oleh bursa, lihat laman web Deribit untuk butiran.

  • Futures_KuCoin Sebagai contoh, jika pasangan dagangan ditetapkan untukBTC_USDdan kod kontrak ditetapkan, ia adalah kontrak berasaskan mata wang: Tetapkan kontrak kekal:exchange.SetContractType("swap"). Set kepada kontrak suku tahunan:exchange.SetContractType("quarter"). Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter").

    USDT sebagai kontrak margin: Sebagai contoh, jika pasangan dagangan ditetapkan untukBTC_USDT, dan kemudian menetapkan kod kontrak, ia adalah kontrak dengan USDT sebagai margin. Tetapkan kontrak kekal:exchange.SetContractType("swap").

  • Futures_Binance Binance Futures Exchange lalai untuk kontrak kekal pasangan dagangan semasa, kod kontrak:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap"), kontrak kekal Binance mempunyai kontrak yang menggunakanUSDTSebagai contoh,USDTkontrak kekal standardBTCboleh digunakan sebagai kontrak margin, dan pasangan dagangan ditetapkan untukBTC_USDT. Binance juga menyokong kontrak kekal yang menggunakan syiling sebagai margin, sebagai contoh,BTCBinance standard kontrak kekal, dengan pasangan perdagangan ditetapkan untukBTC_USD. Set kepada kontrak suku tahunan:exchange.SetContractType("quarter"), kontrak penghantaran mempunyai kontrak standard mata wang (iaitu, menggunakan mata wang sebagai margin), sebagai contoh,BTCkontrak suku tahunan, pasangan dagangan ditetapkan untuk:BTC_USDdan kemudian menetapkan kontrakexchange.SetContractType("quarter"), ia ditetapkan untukBTCkontrak suku tahunan dengan kontrak standard mata wang. Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter"), contohnya,BTCdaripada kontrak suku tahunan standard mata wang, pasangan dagangan ditetapkan untuk:BTC_USD, dan kemudian menetapkan kontrakexchange.SetContractType("next_quarter"). Binance menyokong sebahagianUSDTsebagai kontrak penghantaran margin, mengambilBTCsebagai contoh, menetapkan pasangan dagangan untukBTC_USDT, kemudian letakkan kod kontrak.

    Sokongan untuk kontrak Pilihan Binance: Format kod kontrak opsyen adalah berdasarkan kod kontrak opsyen yang ditakrifkan oleh bursa:BTC-241227-15000-C, XRP-240112-0.5-C, BTC-241227-15000-PAmbil kod kontrak pilihan BinanceBTC-241227-15000-Psebagai contoh: BTC adalah kod mata wang pilihan, 241227 adalah tarikh pelaksanaan, 15000 adalah harga pelaksanaan, P mewakili pilihan jual, dan C mewakili pilihan beli. Untuk butiran mengenai jenis opsyen, sama ada ia adalah opsyen Eropah atau opsyen Amerika, sila rujuk maklumat yang berkaitan dengan kontrak opsyen bursa. Bursa mungkin menyekat penjual opsyen dan mengharuskan mereka memohon kelayakan secara berasingan.

  • Futures_Bibox Kod kontrak untuk kontrak kekal Bibox:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap").

  • Futures_Bybit Pendapatan yang ditetapkan adalah kontrak kekal untuk pasangan dagangan semasa, kod kontrak:swap. Kod kontrak minggu ini:this_week. Kod kontrak minggu depan:next_week. Kod kontrak minggu ketiga:third_week. Kod kontrak bulanan:month. Kod kontrak bulan depan:next_month. Kod kontrak suku tahunan:quarter. Kod kontrak suku berikutnya:next_quarter. Kod kontrak suku ketiga:third_quarter.

  • Masa hadapan_Kraken Default adalah kontrak kekal pasangan dagangan semasa, kod kontrak:swap. swapKontrak kekal.month: kontrak bulan semasa.quarter: kontrak suku tahun.next_quarterKontrak suku berikutnya.swap_pf: Kontrak kekal margin campuran.quarter_ff: Kontrak suku tahunan dengan margin bercampur.month_ff: Kontrak margin campuran bulan semasa.next_quarter_ff: Margin campuran kontrak suku berikutnya.

  • Futures_Bitfinex Default adalah kontrak kekal untuk pasangan dagangan semasa, kod kontrak:swap.

  • Futures_Bitget Default adalah kontrak kekal untuk pasangan dagangan semasa, kod kontrak:swap. Pasangan dagangan ditetapkan untukBTC_USDuntuk kontrak standard mata wang, dan pasangan dagangan ditetapkan kepadaBTC_USDTuntuk kontrak yang diselesaikan olehUSDT. Kontrak demo boleh ditubuhkan dengan pasangan dagangan sebagaiSBTC_USD, BTC_SUSDT.

  • Futures_dYdX Kod kontrak untuk kontrak kekal dYdX:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap"), dYdX mempunyai kontrak standard USDT sahaja.

  • Futures_MEXC Kod kontrak untuk kontrak kekal MEXC:swap. Tetapkan kontrak kekal:exchange.SetContractType("swap"). Tetapkan pasangan dagangan kepadaBTC_USD, yang merupakan kontrak standard mata wang, dan menetapkan pasangan dagangan untukBTC_USDT, yang merupakanUSDT- Kontrak diselesaikan.

  • Futures_Crypto Token dalam akaun dicrypto.compertukaran boleh ditukar kepada kredit dalam dolar AS untuk digunakan sebagai margin untuk perdagangan kontrak. Tetapkan kontrak kekal:exchange.SetContractType("swap"). Contoh memanggilexchange.SetContractType("swap")fungsi untuk menetapkan kontrak kekal untuk BTC apabila pasangan dagangan ditetapkan untukBTC_USD. Peraturancrypto.comKontrak penghantaran pertukaran adalah kontrak bulanan dengan kod kontrak berikut (dari Januari hingga Disember):

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

    Tetapkan kontrak penghantaran:exchange.SetContractType("October"). Sebagai contoh, apabila pasangan dagangan ditetapkan untukBTC_USD, panggil fungsiexchange.SetContractType("October")untuk menetapkan kontrak penghantaran Oktober untuk BTC. Kod kontrak yang sepadan pada masa ini adalah:BTCUSD-231027.

  • Futures_WOO Futures_WOO sokongan pertukaranUSDTberdasarkan kontrak dengan kod kontrak kekalswap. Sebagai contoh, apabila pasangan dagangan ditetapkan untukBTC_USDT, fungsiexchange.SetContractType("swap")dipanggil untuk menetapkan kontrak semasa untuk menjadi kontrak kekal berasaskan USDT untuk BTC.

{@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}

exchange.GetContractType

Peraturanexchange.GetContractType()fungsi digunakan untuk mendapatkan kod kontrak untuk tetapan semasa objek pertukaran {@var/EXCHANGE exchange}.

Peraturanexchange.GetContractType()fungsi mengembalikan kod kontrak yang ditakrifkan oleh platform FMZ, contohnya:this_week, swap, dan lain-lain senar

pertukaran.GetContractType()

function main () {
    Log(exchange.SetContractType("this_week")) 
    Log(exchange.GetContractType())
}
def main():
    Log(exchange.SetContractType("this_week"))
    Log(exchange.GetContractType())
void main() {
    Log(exchange.SetContractType("this_week"));
    Log(exchange.GetContractType());
}

{@fun/Futures/exchange.SetContractType pertukaran.SetContractType}

exchange.GetFundings

Peraturanexchange.GetFundings()fungsi digunakan untuk mendapatkan data kadar pembiayaan untuk tempoh semasa.

Peraturanexchange.GetFundings()fungsi mengembalikan pelbagai struktur {@struct/Funding Funding} apabila permintaan data berjaya, dan mengembalikan nilai sifar apabila permintaan data gagal. {@struct/Funding Funding} array, nilai sifar

pertukaran.GetFundings() pertukaran.GetFundings ((simbol)

Parametersymboldigunakan untuk menetapkansimbol transaksiatauJulat simbol transaksiyang akan ditanya.symbolJika parameter ini tidak diteruskan, data kadar pembiayaan semasa semua instrumen akan diminta secara lalai dalam julat dimensi pasangan dagangan semasa dan kod kontrak.

simbol palsu senar

/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/

function main() {
    // LPT_USDT.swap 4-hour period
    var symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
    for (var symbol of symbols) {
        exchange.GetTicker(symbol)
    }
    
    var arr = []
    var arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
    for (p of arrParams) {
        if (p == "no param") {
            arr.push(exchange.GetFundings())
        } else {
            arr.push(exchange.GetFundings(p))
        }
    }
    
    var tbls = []
    var index = 0
    for (var fundings of arr) {
        var tbl = {
            "type": "table",
            "title": arrParams[index],
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": [],
        }
    
        for (var f of fundings) {
            tbl["rows"].push([f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate * 100 + " %"])
        }
        tbls.push(tbl)
        index++
    }
    
    LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + JSON.stringify(tbls) + "`")
}
'''backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
'''
    
import json
    
def main():
    # LPT_USDT.swap 4-hour period
    symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
    for symbol in symbols:
        exchange.GetTicker(symbol)
    
    arr = []
    arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
    for p in arrParams:
        if p == "no param":
            arr.append(exchange.GetFundings())
        else:
            arr.append(exchange.GetFundings(p))
    
    tbls = []
    index = 0
    for fundings in arr:
        tbl = {
            "type": "table",
            "title": arrParams[index],
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": [],
        }
    
        for f in fundings:
            tbl["rows"].append([f["Symbol"], f["Interval"] / 3600000, _D(f["Time"]), str(f["Rate"] * 100) + " %"])
    
        tbls.append(tbl)
        index += 1
    
    LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + json.dumps(tbls) + "`")
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
    
void main() {
    // LPT_USDT.swap 4-hour period
    json arrSymbol = R"([])"_json;
    std::string symbols[] = {"SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"};
    for (const std::string& symbol : symbols) {
        exchange.GetTicker(symbol);
        arrSymbol.push_back(symbol);
    }
    
    std::vector<std::vector<Funding>> arr = {};
    std::string arrParams[] = {"no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"};
    for (const std::string& p : arrParams) {
        if (p == "no param") {
            arr.push_back(exchange.GetFundings());
        } else {
            arr.push_back(exchange.GetFundings(p));
        }
    }
    
    json tbls = R"([])"_json;
    int index = 0;
    for (int i = 0; i < arr.size(); i++) {
        auto fundings = arr[i];
    
        json tbl = R"({
            "type": "table", 
            "cols": ["Symbol", "Interval", "Time", "Rate"],
            "rows": []
        })"_json;
        tbl["title"] = arrParams[index];
    
        for (int j = 0; j < fundings.size(); j++) {
            auto f = fundings[j];
            // json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), string(f.Rate * 100) + " %"};
            json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate};
            tbl["rows"].push_back(arrJson);
        }
        tbls.push_back(tbl);
        index++;
    }
    
    LogStatus(_D(), "\n Requested market types:", arrSymbol.dump(), "\n`" + tbls.dump() + "`");
}

Gunakan objek pertukaran niaga hadapan untuk memanggilexchange.GetFundings()fungsi dalam sistem backtesting. Sebelum memanggil mana-mana fungsi pasaran, GetFundings hanya mengembalikan data Pembiayaan pasangan dagangan lalai semasa. Selepas memanggil fungsi pasaran, ia mengembalikan data Pembiayaan semua jenis yang diminta. Anda boleh merujuk kepada contoh ujian berikut:

Untuk bursa niaga hadapan yang tidak menyokong pertanyaan kumpulan data kadar pembiayaan, jikasymbolparameter ditentukan sebagai julat pertanyaan, contohnya:USDT.swapatausymbolparameter tidak lulus, antara muka akan melaporkan ralat.GetFundings()fungsi menggunakan objek pertukaran niaga hadapan jenis ini, anda mesti menentukansymbolparameter sebagai jenis kontrak kekal tertentu untuk menyoal data kadar pembiayaan semasa jenis. Perkhidmatanexchange.GetFundings()fungsi menyokong sistem perdagangan dan backtesting sebenar. Bursa yang tidak menyokong pemerolehan kumpulan data kadar pembiayaan: Futures_Bitget, Futures_OKX, Futures_MEXC, Futures_Deribit, Futures_Crypto. Perlu lulus dalamsymbolparameter dengan kod simbol tertentu, contohnya:ETH_USDT.swap.

Bursa yang tidak menyokongexchange.GetFundings()fungsi:

Nama Fungsi Pertukaran Spot yang tidak disokong Pertukaran niaga hadapan tanpa sokongan
GetFundings Futures_DigiFinex

{@struct/Pembiayaan Pembiayaan}

Akaun Tetapan Rangkaian