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) ahliexchange
objek hanya berkaitan denganexchange
dan 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)
Parametersymbol
digunakan untuk menetapkansimbol perdaganganatauJulat simbol daganganuntuk ditanyakan.
Jikasymbol
Jika 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.
DalamGetPositions
fungsi, 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: |
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: |
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: |
Mencari semua kontrak opsyen berasaskan USDT | - |
DalamGetPositions
fungsi, 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,GetPosition
adalah sama denganGetPositions
.
Apabila akaun yang diwakili oleh objek pertukaranexchange
tidak 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}
Peraturanexchange.SetMarginLevel()
Fungsi ini digunakan untuk menetapkan nilai leverage pasangan dagangan atau kontrak yang ditentukan olehsymbol
Parameter. Serasi dengan hanya lulus dalam parametermarginLevel
untuk menetapkan nilai leverage pasangan dagangan semasa atau kontrak objek pertukaran {@var/EXCHANGE exchange}.
pertukaran.SetMarginLevel ((simbol, marginLevel) pertukaran.SetMarginLevel ((marginLevel)
Peraturansymbol
parameter digunakan untuk menentukan pasangan dagangan atau kontrak yang mana nilai leverage perlu diselaraskan.symbol
parameterSetMarginLevel()
fungsi adalah selaras dengan formatsymbol
parameterGetTicker()
fungsi.
simbol
palsu
senar
PeraturanmarginLevel
parameter 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}
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)
Peraturandirection
parameter 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 dan buka kedudukan panjang | |
exchange.Buy | Beli dan tutup kedudukan pendek | |
exchange.Sell | Jual dan buka kedudukan pendek | |
exchange.Sell | Jual dan tutup kedudukan panjang |
{@fun/Trade/exchange.Buy pertukaran.Buy}, {@fun/Trade/exchange.Sell pertukaran.Sell}
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)
Peraturansymbol
parameter 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:swap
Kontrak 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 denganUSDT
sebagai 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_USDT
Pasangan 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 untukBTC
untukStandard 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_USDT
pada platform FMZ, dan kemudian menggunakanexchange.SetContractType("HMSTR-USDT-250207")
untuk menetapkan kontrak.
Untuk fungsi yang menyokongsymbol
parameter, seperti:exchange.GetTicker()
, exchange.CreateOrder()
, dan lain-lain.symbol
parameter sebagai:HMSTR_USDT.HMSTR-USDT-250207
untuk 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 denganUSDT
sebagai margin, ambilBTC
kontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")
untuk beralih kepada kontrak yang menggunakanUSDT
sebagai margin.
Atau tetapkan pasangan dagangan semasa kepadaBTC_USDT
langsung 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 denganUSDT
sebagai margin, ambilBTC
kontrak sebagai contoh: penggunaanexchange.IO("currency", "BTC_USDT")
untuk beralih kepada kontrak yang menggunakanUSDT
sebagai margin.
Atau tetapkan pasangan dagangan semasa kepadaBTC_USDT
langsung 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 DeribitUSDC
kontrak.
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_USD
dan 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 menggunakanUSDT
Sebagai contoh,USDT
kontrak kekal standardBTC
boleh digunakan sebagai kontrak margin, dan pasangan dagangan ditetapkan untukBTC_USDT
. Binance juga menyokong kontrak kekal yang menggunakan syiling sebagai margin, sebagai contoh,BTC
Binance 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,BTC
kontrak suku tahunan, pasangan dagangan ditetapkan untuk:BTC_USD
dan kemudian menetapkan kontrakexchange.SetContractType("quarter")
, ia ditetapkan untukBTC
kontrak suku tahunan dengan kontrak standard mata wang.
Set untuk kontrak suku berikutnya:exchange.SetContractType("next_quarter")
, contohnya,BTC
daripada kontrak suku tahunan standard mata wang, pasangan dagangan ditetapkan untuk:BTC_USD
, dan kemudian menetapkan kontrakexchange.SetContractType("next_quarter")
.
Binance menyokong sebahagianUSDT
sebagai kontrak penghantaran margin, mengambilBTC
sebagai 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-P
Ambil kod kontrak pilihan BinanceBTC-241227-15000-P
sebagai 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
.
swap
Kontrak kekal.month
: kontrak bulan semasa.quarter
: kontrak suku tahun.next_quarter
Kontrak 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_USD
untuk kontrak standard mata wang, dan pasangan dagangan ditetapkan kepadaBTC_USDT
untuk 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 pertukaranUSDT
berdasarkan 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}
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}
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)
Parametersymbol
digunakan untuk menetapkansimbol transaksiatauJulat simbol transaksiyang akan ditanya.symbol
Jika 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, jikasymbol
parameter ditentukan sebagai julat pertanyaan, contohnya:USDT.swap
atausymbol
parameter tidak lulus, antara muka akan melaporkan ralat.GetFundings()
fungsi menggunakan objek pertukaran niaga hadapan jenis ini, anda mesti menentukansymbol
parameter 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 dalamsymbol
parameter 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