পিপি
খালি প্রধান ((() {
এক্সচেঞ্জ[0].IO(
The ZB exchange is special. There are two addresses: one is the market data interface address, and the other is the trading interface address. Switch the address:
```js
function main() {
// The second parameter of exchange.IO is the trading interface address, and the third parameter is the market interface address, which is switched to an address that can be accessed domestically
exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")
// Print the account information
Log(exchange.GetAccount())
}
def main():
exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus")
Log(exchange.GetAccount())
void main() {
exchange.IO("base", "https://trade.zb.plus", "http://api.zb.plus");
Log(exchange.GetAccount());
}
বাজার মোড পরিবর্তন করুন বর্তমানে সমর্থিত এক্সচেঞ্জঃ
বিনিময় | মন্তব্যসমূহ |
---|---|
হুবি স্পট | ওয়েবসকেট প্রোটোকল সমর্থন করার পরে, কোডexchange.IO( |
exchange.IO("websocket")
মার্কেট কমিউনিকেশন প্রোটোকল পরিবর্তন করুনwebsocket
(ডিফল্ট হল বিশ্রাম), বাজার কোট পাওয়ার উপায়টি স্যুইচ করার পরে পরিবর্তিত হবে।exchange.GetTicker()
এবংexchange.GetDepth()
পরিবর্তন করা হবেwebsocket
প্রোটোকল আপডেট করার জন্য, বাজারের তথ্য অপরিশোধিত সক্রিয় অধিগ্রহণ থেকে বাজারের তথ্য প্যাসিভ অধিগ্রহণ, শুধুমাত্র Huobi এক্সচেঞ্জ বর্তমানে সমর্থিত.
যখন বাজার মোডটি ধাক্কা প্রক্রিয়া হয়, আপনি নিম্নলিখিত ফাংশনটি সেট করতে কল করতে পারেনঃ
exchange.IO("mode", 0)
অবিলম্বে রিটার্ন মোড। যদি বর্তমান বাজার তথ্য এক্সচেঞ্জ থেকে প্রাপ্ত করা হয় নি, পুরানো বাজার তথ্য অবিলম্বে ফিরে আসবে। যদি নতুন তথ্য থাকে, নতুন তথ্য ফিরে আসবে।
exchange.IO("mode", 1)
ক্যাশে মোড (ডিফল্ট মোড) । যদি এক্সচেঞ্জের সর্বশেষ বাজার ডেটা প্রাপ্ত না হয় (পূর্ববর্তী ইন্টারফেস থেকে প্রাপ্ত ডেটার সাথে তুলনা করে), প্রাপ্তির জন্য অপেক্ষা করুন এবং তারপরে ফিরে আসুন। যদি এই ফাংশনটি কল করার আগে সর্বশেষ বাজার ডেটা প্রাপ্ত হয় তবে সর্বশেষ ডেটা অবিলম্বে ফিরে আসবে।
exchange.IO("mode", 2)
জোর করে আপডেট মোড. প্রবেশ করুন এবং পরবর্তী সর্বশেষ push তথ্য বিনিময় গ্রহণ করা হয় এবং তারপর ফিরে আসা পর্যন্ত অপেক্ষা করুন.
আপনি যদি প্রথমবারের মত সর্বশেষ বাজার তথ্য পেতে চান, তাহলে আপনিwebsocket
আর ডাকো না,Sleep
তথ্য পরীক্ষা করুন এবং অবিলম্বে পরীক্ষা করুন।exchange.GetTicker()
এবংexchange.GetDepth()
ফাংশন ক্যাশে মোডে কাজ করে, যেমনঃ
function main () {
exchange.IO("websocket")
while (true) {
Log(exchange.GetTicker())
}
}
def main():
exchange.IO("websocket")
while True:
Log(exchange.GetTicker())
void main() {
exchange.IO("websocket");
while(true) {
Log(exchange.GetTicker());
}
}
এক্সচেঞ্জ লিভারেজ অ্যাকাউন্ট মোড
ব্যবহারexchange.IO("trade_margin")
লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করার জন্য, অর্ডার স্থাপন এবং অ্যাকাউন্টের সম্পদ অ্যাক্সেস করার জন্য এক্সচেঞ্জের লিভারেজ ইন্টারফেস ব্যবহার করা হবে।
ব্যবহারexchange.IO("trade_normal")
স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে।
সমর্থিত এক্সচেঞ্জঃ
বিনিময় | বিশেষ মন্তব্য |
---|---|
ঠিক আছে | লিভারেজ অ্যাকাউন্ট মোডের ট্রেডিং জোড়া সাধারণ থেকে আলাদা এবং কিছু ট্রেডিং জোড়া উপলব্ধ নাও হতে পারে।exchange.IO("cross", true) লিভারেজযুক্ত অ্যাকাউন্টের পূর্ণ পজিশনে স্যুইচ করা এবংexchange.IO("cross", false) বিচ্ছিন্ন অবস্থানে স্যুইচ করুন। |
হুবি | লিভারেজ অ্যাকাউন্ট মোডের ট্রেডিং জোড়া সাধারণগুলির থেকে আলাদা, এবং কিছু ট্রেডিং জোড়া উপলভ্য নাও হতে পারে। হুবি লিভারেজ অ্যাকাউন্ট ক্রস পজিশন এবং বিচ্ছিন্ন অবস্থানে বিভক্ত। ব্যবহারtrade_margin একটি লিভারেজ অ্যাকাউন্টে বিচ্ছিন্ন পজিশনে স্যুইচ করতে;trade_super_margin একটি লিভারেজ অ্যাকাউন্টে ক্রস পজিশন পরিবর্তন করতে;trade_normal স্বাভাবিক মুদ্রা মোডে স্যুইচ করতে |
ZB | তহবিল কেবল QC তে স্থানান্তরিত হতে পারে। লিভারেজ ট্রেডিং সেক্টরে, বিভিন্ন ট্রেডিং জোড়ার মধ্যে তহবিল স্বাধীন, অর্থাৎ ETH_QC ট্রেডিং জোড়ার অধীনে QC মুদ্রার সংখ্যা BTC_QC তে দৃশ্যমান নয় |
বিন্যান্স | লিভারেজ অ্যাকাউন্টগুলি ক্রস পজিশন এবং বিচ্ছিন্ন পজিশনে বিভক্ত।trade_margin বিচ্ছিন্ন অবস্থানে স্যুইচ করতে; ব্যবহারtrade_super_margin ক্রসিং পজিশনে স্যুইচ করতে; ব্যবহারtrade_normal স্বাভাবিক মুদ্রা মোডে স্যুইচ করতে |
গেটআইও | লিভারেজ অ্যাকাউন্টগুলি ক্রস পজিশন এবং বিচ্ছিন্ন পজিশনে বিভক্ত।trade_margin বিচ্ছিন্ন অবস্থানে স্যুইচ করতে; ব্যবহারtrade_super_margin ক্রসিং পজিশনে স্যুইচ করতে; ব্যবহারtrade_normal স্বাভাবিক মুদ্রা মোডে স্যুইচ করতে |
AscendEx | ব্যবহারexchange.IO("trade_margin") লিভারেজ অ্যাকাউন্ট মোডে স্যুইচ করতে এবংexchange.IO("trade_normal") স্বাভাবিক অ্যাকাউন্ট মোডে ফিরে যেতে। |
exchange.Log(LogType, Price, Amount)
যখন কল করা হয় তখন অর্ডার দেয় না, এবং এটি কেবল এক্সচেঞ্জ লগের তথ্য আউটপুট করার জন্য ট্রেডিং তথ্য রেকর্ড করে।
নোটঃ
exchange
বস্তু, যা গ্লোবাল ফাংশন থেকে ভিন্নLog()
.LogType
নিতে পারেLOG_TYPE_BUY
, LOG_TYPE_SELL
, LOG_TYPE_CANCEL
এবংPrice
দাম হিসাবে, এবংAmount
যখনLogType
হয়LOG_TYPE_CANCEL
, Price
প্যারামিটার হল অর্ডার আইডি।ব্যবহারexchange.Log(LogType, Price, Amount)
লাইভ ট্রেডিং ফলো-আপ টেস্টিং, সিমুলেটেড অর্ডার প্লেসমেন্ট এবং অর্ডার রেকর্ডিংয়ে সহায়তা করা।
সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে হলঃexchange.IO
শর্তাধীন অর্ডার স্থাপন করার জন্য এক্সচেঞ্জের শর্তাধীন অর্ডার ইন্টারফেস তৈরিতে অ্যাক্সেস করার ফাংশন।exchange.IO
ফাংশন বট লগ রেকর্ডিং মধ্যে বিনিময় লগ তথ্য আউটপুট হবে না. সুতরাং আপনি ব্যবহার করতে পারেনexchange.Log(LogType, Price, Amount)
অর্ডার দেওয়ার তথ্য রেকর্ড করার জন্য লগ আউটপুটকে সম্পূরক করতে।
var id = 123
function main() {
// Order type: buy; price: 999; quantity: 0.1
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
// Cancel the order
exchange.Log(LOG_TYPE_CANCEL, id)
}
id = 123
def main():
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
auto id = 123;
exchange.Log(LOG_TYPE_BUY, 999, 0.1);
exchange.Log(LOG_TYPE_CANCEL, id);
}
exchange.HMAC(Algo, OutputAlgo, Data, Key)
সমর্থন করেHMACএনক্রিপশন গণনাmd5/এসএ২৫৬/sha512/শ1, এবং শুধুমাত্র লাইভ ট্রেডিং চলমান সমর্থিত.
exchange.HMAC("sha256", "hex", "xxxxx", "{{secretkey}}")
উদ্ধৃতি হিসেবেaccessKey
, ব্যবহার"{{accesskey}}"
.
উদ্ধৃতি হিসেবেsecretKey
, ব্যবহার"{{secretkey}}"
; অথবা আপনি সাধারণ পাঠ্য ব্যবহার করতে পারেন"abc-123-xxxx"
. "{{accessKey}}","{{secretkey}}"
শুধুমাত্র এই ফাংশনটি ব্যবহার করা হলে বৈধ।OutputAlgo
সমর্থনঃ
BitMEX অবস্থান পরিবর্তন চাপুন (WSS প্রোটোকল)
function main() {
var APIKEY = "your Access Key(Bitmex API ID)"
var expires = parseInt(Date.now() / 1000) + 10
var signature = exchange.HMAC("sha256", "hex", "GET/realtime" + expires, "{{secretkey}}")
var client = Dial("wss://www.bitmex.com/realtime", 60)
var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
var pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while (true) {
bitmexData = client.read()
if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
pos = parseInt(bitmexData.data[0].currentQty)
}
}
}
import time
def main():
APIKEY = "your Access Key(Bitmex API ID)"
expires = int(time.time() + 10)
signature = exchange.HMAC("sha256", "hex", "GET/realtime" + str(expires), "{{secretkey}}")
client = Dial("wss://www.bitmex.com/realtime", 60)
auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while True:
bitmexData = json.loads(client.read())
if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
pos = bitmexData["data"][0]["currentQty"]
void main() {
auto APIKEY = "your Access Key(Bitmex API ID)";
auto expires = Unix() + 10;
auto signature = exchange.HMAC("sha256", "hex", format("GET/realtime%d", expires), "{{secretkey}}");
auto client = Dial("wss://www.bitmex.com/realtime", 60);
json auth = R"({"args": [], "op": "authKeyExpires"})"_json;
auth["args"].push_back(APIKEY);
auth["args"].push_back(expires);
auth["args"].push_back(signature);
auto pos = 0;
client.write(auth.dump());
client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
while(true) {
auto bitmexData = json::parse(client.read());
if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
Log("Test");
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
pos = bitmexData["data"][0]["currentQty"];
}
}
}
exchange.Go(Method, Args...)
হল মাল্টি-থ্রেডেড অ্যাসিনক্রোন সমর্থিত ফাংশন, যা সমস্ত সমর্থিত ফাংশনগুলির অপারেশনকে অ্যাসিনক্রোন সমান্তরাল (যা শুধুমাত্র ক্রিপ্টোকারেন্সি এক্সচেঞ্জকে সমর্থন করে) রূপান্তর করতে পারে। প্যারামিটার মানঃMethod
, স্ট্রিং টাইপের, যথা একই সাথে কল করা ফাংশনের নাম।
নোটঃ
exchange.Go
ফাংশন একটি বস্তু ফেরত,wait
ফাংশনটি অবজেক্টের মাধ্যমে থ্রেড দ্বারা ফেরত দেওয়া ডেটা পুনরুদ্ধার করতে বলা হয়। থ্রেডটি কল করে ডেটা অধিগ্রহণের পরে স্বয়ংক্রিয়ভাবে মুক্তি পাবেwait
যদি টাইমআউট প্যারামিটার নির্দিষ্টwait
, টাইমআউট ঘটলেও থ্রেডটি মুক্তি পাবে না; এইভাবে, থ্রেডটি কেবলমাত্র থ্রেডের ফলাফলটি পেয়ে স্বয়ংক্রিয়ভাবে মুক্তি পাবে (এমনকি সমান্তরালভাবে অ্যাক্সেস করা ইন্টারফেসটি সফলভাবে বা ব্যর্থভাবে কল করা হয়েছে কিনা তা বিবেচ্য নয়) ।wait
ফাংশন, এবং থ্রেড রিসোর্স দ্বারা প্রয়োগexchange.Go
ফাংশন ডকার দ্বারা স্বয়ংক্রিয়ভাবে মুক্তি পায়।wait
ফাংশনটি শেষ না হলে, থ্রেড রিসোর্সগুলি স্বয়ংক্রিয়ভাবে মুক্তি পাবে না, যা প্রয়োগ করা থ্রেডগুলির জমা হওয়ার কারণ হবে; যদি থ্রেডের সংখ্যা 2000 এর বেশি হয় তবে একটি ত্রুটি রিপোর্ট করা হবেঃ"too many routine wait, max is 2000"
.সমর্থিত ফাংশনঃGetTicker
, GetDepth
, GetTrades
, GetRecords
, GetAccount
, GetOrders
, GetOrder
, CancelOrder
, Buy
, Sell
, GetPosition
এবংIO
.
function main(){
// The following four operations are executed concurrently and asynchronously by multiple threads, without time-consuming, but with immediate return.
var a = exchange.Go("GetTicker")
var b = exchange.Go("GetDepth")
var c = exchange.Go("Buy", 1000, 0.1)
var d = exchange.Go("GetRecords", PERIOD_H1)
// Call the "wait" method, to wait for the return of the asynchronously obtained "ticker" result
var ticker = a.wait()
// Return the depth; it is possible to return null, if the acquisition fails
var depth = b.wait()
// Return the order number; limit the timeout in 1 second; the timeout returns "undefined"; this object can continue to call "wait" to wait if the last "wait" is timeout
var orderId = c.wait(1000)
if(typeof(orderId) == "undefined") {
// Timeout, reacquire
orderId = c.wait()
}
var records = d.wait()
}
def main():
a = exchange.Go("GetTicker")
b = exchange.Go("GetDepth")
c = exchange.Go("Buy", 1000, 0.1)
d = exchange.Go("GetRecords", PERIOD_H1)
ticker, ok = a.wait()
depth, ok = b.wait()
orderId, ok = c.wait(1000)
if ok == False:
orderId, ok = c.wait()
records, ok = d.wait()
void main() {
auto a = exchange.Go("GetTicker");
auto b = exchange.Go("GetDepth");
auto c = exchange.Go("Buy", 1000, 0.1);
auto d = exchange.Go("GetRecords", PERIOD_H1);
Ticker ticker;
Depth depth;
Records records;
TId orderId;
a.wait(ticker);
b.wait(depth);
if(!c.wait(orderId, 300)) {
c.wait(orderId);
}
d.wait(records);
}
নোটঃ
undefined
, ব্যবহারtypeof(xx)==="undefined"
কারণnull == undefined
জাভাস্ক্রিপ্টে পাওয়া যায়।function main() {
var d = exchange.Go("GetRecords", PERIOD_H1)
// Wait for K-line result
var records = d.wait()
// Here we wait for an asynchronous operation that has been waited and ended; it will return null, and record the error
var ret = d.wait()
}
def main():
d = exchange.Go("GetRecords", PERIOD_H1)
records, ok = d.wait()
ret, ok = d.wait()
void main() {
auto d = exchange.Go("GetRecords", PERIOD_H1);
Records records;
d.wait(records);
Records ret;
d.wait(ret);
}
এর মধ্যে পার্থক্যPython
এবংJavaScript
এটা কিPython
এরwait
ফাংশন দুটি পরামিতি ফেরত দেয়ঃ প্রথমটি অ্যাসিনক্রোন এপিআই দ্বারা ফেরত দেওয়া ফলাফল; দ্বিতীয়টি নির্দেশ করে যে অ্যাসিনক্রোন কলটি সম্পন্ন হয়েছে কিনা।
Python
উদাহরণঃ
def main():
d = exchange.Go("GetRecords", PERIOD_D1)
# "ok" must return "True", unless the strategy is stopped
ret, ok = d.wait()
# If the waiting times out, or "wait" for an ended instance, "ok" returns "False"
ret, ok = d.wait(100)
ret, ok = d.wait(100)
একসাথে একাধিক এক্সচেঞ্জের কোট সংগ্রহ করুনঃ
function main() {
while(true) {
var beginTS = new Date().getTime()
var arrRoutine = []
var arrTicker = []
var arrName = []
for(var i = 0; i < exchanges.length; i++) {
arrRoutine.push(exchanges[i].Go("GetTicker"))
arrName.push(exchanges[i].GetName())
}
for(var i = 0; i < arrRoutine.length; i++) {
arrTicker.push(arrRoutine[i].wait())
}
var endTS = new Date().getTime()
var tbl = {
type: "table",
title: "Market Quotes",
cols: ["Index", "Name", "Latest Executed Price"],
rows: []
}
for(var i = 0; i < arrTicker.length; i++) {
tbl.rows.push([i, arrName[i], arrTicker[i].Last])
}
LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(500)
}
}
import time
import json
def main():
while True:
beginTS = time.time()
arrRoutine = []
arrTicker = []
arrName = []
for i in range(len(exchanges)):
arrRoutine.append(exchanges[i].Go("GetTicker"))
arrName.append(exchanges[i].GetName())
for i in range(len(exchanges)):
ticker, ok = arrRoutine[i].wait()
arrTicker.append(ticker)
endTS = time.time()
tbl = {
"type": "table",
"title": "Market Quote",
"cols": ["Index", "Name", "Latest Executed Price"],
"rows": []
}
for i in range(len(arrTicker)):
tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])
LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
Sleep(500)
void main() {
while(true) {
int length = exchanges.size();
auto beginTS = UnixNano() / 1000000;
Ticker arrTicker[length] = {};
string arrName[length] = {};
// Note that to add a few exchange objects, here we need to execute the "exchanges[n].Go" function several times. In this example, we need to add four exchange objects, which can be modified in details
auto r0 = exchanges[0].Go("GetTicker");
auto r1 = exchanges[1].Go("GetTicker");
auto r2 = exchanges[2].Go("GetTicker");
auto r3 = exchanges[3].Go("GetTicker");
GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
for(int i = 0; i < length; i++) {
arrName[i] = exchanges[i].GetName();
}
for(int i = 0; i < length; i++) {
Ticker ticker;
arrRoutine[i]->wait(ticker);
arrTicker[i] = ticker;
}
auto endTS = UnixNano() / 1000000;
json tbl = R"({
"type": "table",
"title": "Market Quote",
"cols": ["Index", "Name", "Latest Executed Price"],
"rows": []
})"_json;
for(int i = 0; i < length; i++) {
json arr = R"(["", "", ""])"_json;
arr[0] = format("%d", i);
arr[1] = arrName[i];
arr[2] = format("%f", arrTicker[i].Last);
tbl["rows"].push_back(arr);
}
LogStatus(_D(), "The total time to acquire multiple platforms concurrently is:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
Sleep(500);
}
}
একযোগে ডাকেexchange.IO("api", ...)
ফাংশনঃ
function main() {
/*
Use the OKX placing order interface to test
POST /api/v5/trade/order
*/
var beginTS = new Date().getTime()
var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var id1 = ret1.wait()
var id2 = ret2.wait()
var id3 = ret3.wait()
var endTS = new Date().getTime()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
beginTS = time.time()
param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
id1, ok1 = ret1.wait()
id2, ok2 = ret2.wait()
id3, ok3 = ret3.wait()
endTS = time.time()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Time for placing orders concurrently:", endTS - beginTS, "second")
void main() {
auto beginTS = UnixNano() / 1000000;
json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
json id1 = R"({})"_json;
json id2 = R"({})"_json;
json id3 = R"({})"_json;
ret1.wait(id1);
ret2.wait(id2);
ret3.wait(id3);
auto endTS = UnixNano() / 1000000;
Log("id1:", id1);
Log("id2:", id2);
Log("id3:", id3);
Log("Time for placing orders concurrently:", endTS - beginTS, "millisecond");
}
exchange.GetAccount()
এক্সচেঞ্জ অ্যাকাউন্টের তথ্য প্রদান করে। রিটার্ন মানঃAccount
structure.
Account
গঠনfunction main(){
var account = exchange.GetAccount()
Log("Account information, Balance:", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:",
account.Stocks, "FrozenStocks:", account.FrozenStocks)
}
def main():
account = exchange.GetAccount()
Log("Account information, Balance", account["Balance"], "FrozenBalance:", account["FrozenBalance"], "Stocks:",
account["Stocks"], "FrozenStocks:", account["FrozenStocks"])
void main() {
auto account = exchange.GetAccount();
Log("Account information, Balance", account.Balance, "FrozenBalance:", account.FrozenBalance, "Stocks:",
account.Stocks, "FrozenStocks:", account.FrozenStocks);
}
যদি এক্সচেঞ্জ অবজেক্টটি একটি ক্রিপ্টোকারেন্সি ফিউচার এক্সচেঞ্জে সেট করা হয় এবং একটি চুক্তিতে স্যুইচ করা হয়USDT
যেমন মার্জিন (নির্দেশ দেখুনexchange.SetContractType
কিভাবে পরিবর্তন করতে হবে তা জানার জন্য), সম্পদ গ্রহণUSDT
মার্জিন হিসাবে, যা অ্যাট্রিবিউটে রেকর্ড করা হয়Balance
এবংFrozenBalance
.
function main(){
// Switch the trading pair
exchange.IO("currency", "BTC_USDT")
// Take OKX futures as an example; set the contract as the contract of the week, and the current trading pair is BTC_USDT, so the current contract is BTC USDT-margined contract of this week
exchange.SetContractType("this_week")
// Acquire the data of the current account assets
var account = exchange.GetAccount()
// The available balance of USDT as margin
Log(account.Balance)
// The frozen amount of USDT as margin
Log(account.FrozenBalance)
}
def main():
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("this_week")
account = exchange.GetAccount()
Log(account["Balance"])
Log(account["FrozenBalance"])
void main() {
exchange.IO("currency", "BTC_USDT");
exchange.SetContractType("this_week");
auto account = exchange.GetAccount();
Log(account.Balance);
Log(account.FrozenBalance);
}
exchange.GetName()
এক্সচেঞ্জের নাম ফেরত দেয়। ফেরত মানঃ স্ট্রিং টাইপ। সাধারণত এটি নির্ধারণ করতে ব্যবহৃত হয়exchange
অথবাexchanges[n]
কৌশল কোডে বস্তু।
function main() {
Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
}
def main():
Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX")
void main() {
Log("Determine the exchange object to be OKX:", exchange.GetName() == "OKEX");
}
ডকারের লাইন সংস্করণে কমান্ড করার জন্য, আপনি-1
এক্সচেঞ্জের নামের একটি তালিকা মুদ্রণ করার জন্য কমান্ড।
exchange.GetLabel()
এক্সচেঞ্জের কাস্টম লেবেল ফেরত দেয়। ফেরত মানঃ স্ট্রিং টাইপ।
দ্যexchange
অথবাexchanges[n]
কৌশল কোডের বস্তুগুলি সাধারণত এক্সচেঞ্জ অবজেক্টগুলি কনফিগার করার সময় নির্ধারিত লেবেল দ্বারা নির্ধারিত হয়।
exchange.GetCurrency()
এক্সচেঞ্জ দ্বারা পরিচালিত মুদ্রা জোড়ার নাম প্রদান করে, এবং ক্রিপ্টোকারেন্সি প্ল্যাটফর্ম একটি স্ট্রিং প্রদান করে, যেমনLTC_BTC
. রিটার্ন মানঃ স্ট্রিং টাইপ.
দ্যexchange.SetCurrency(Symbol)
এক্সচেঞ্জ অবজেক্টের বর্তমান ট্রেডিং জোড়া স্যুইচ করতে ব্যবহৃত হয়।exchange.IO ("currency","BTC_USDT")
এটি ব্যাকটেস্টিং সিস্টেমে ট্রেডিং জোড়ার স্যুইচিং সমর্থন করে, এবংpricing currency
ব্যাকটেস্টিং সিস্টেমে ট্রেডিং জোড়া পরিবর্তন করার সময় পরিবর্তন করা যাবে না (উদাহরণস্বরূপ,BTC_USDT
পরিবর্তন করা যেতে পারেLTC_USDT
, কিন্তু এটিতে স্যুইচ করা যাবে নাLTC_BTC
) একটি ট্রেডিং জোড়ার উপর স্যুইচ করার পরে যা প্রথমে ব্যাকটেস্টিং পৃষ্ঠায় সেট করা হয়েছিল,trading coins
হল 0 (উদাহরণস্বরূপ, ব্যাকটেস্টের সময়, ব্যাকটেস্ট পৃষ্ঠায় ট্রেডিং জোড়ার প্রাথমিক মান হলBTC_USDT
, বিটিসির সংখ্যা ৩ এবং ইউএসডিটি এর সংখ্যা ১০০০।LTC_USDT
, সংখ্যাtrading coins
স্যুইচ করার পর, এটি হবে ০, যার অর্থ অ্যাকাউন্টে LTC এর সংখ্যা ০, কিন্তু স্যুইচ করা ট্রেডিং জোড়ার শেয়ার্ড ইউএসডিটি পরিমাণ এখনও ১০০০) ।
function main() {
var ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
// Switch trading pairs, and pay attention to changes in market quote data and account information after switching
Log("Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
}
def main():
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
Log(" Switch LTC_USDT: ", exchange.SetCurrency("LTC_USDT"))
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
void main() {
auto ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
exchange.SetCurrency("LTC_USDT");
Log(" Switch LTC_USDT: ");
ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
}
ব্যাকটেস্ট অপারেশনের ফলাফলঃ
exchange.GetQuoteCurrency()
এক্সচেঞ্জ দ্বারা পরিচালিত বেস মুদ্রার নাম প্রদান করে। উদাহরণস্বরূপ,BTC_CNY
রিটার্নCNY
, এবংETH_BTC
রিটার্নBTC
. রিটার্ন মানঃ স্ট্রিং টাইপ.
ক্রিপ্টোকারেন্সি ফিউচার এক্সচেঞ্জের জন্য, চুক্তির কোডটি তার কল করার আগে নির্দিষ্ট করতে হবে।বাজার, অর্ডারএবং অন্যান্য ইন্টারফেস, এবংexchange.SetContractType
ফাংশন বর্তমান চুক্তি কোড সেট করতে ব্যবহার করা প্রয়োজন. বিনিময় বস্তুর বর্তমান ট্রেডিং জোড়া স্যুইচ করার সময়, আপনি কল করতে হবেexchange.SetContractType
প্ল্যাটফর্ম দ্বারা সমর্থিত ডিজিটাল মুদ্রা বিনিময় চুক্তি কোডের জন্য, দয়া করে দেখুনexchange.SetContractType
function.
exchange.GetPosition()
বর্তমান অবস্থানের তথ্য পায়। রিটার্ন মানঃposition
গঠন অ্যারে. কোন অবস্থান নেই, এটি একটি খালি অ্যারে ফেরত, যথা[]
.
Position
গঠনসাধারণত, ক্রিপ্টোকারেন্সি ফিউচার কন্ট্রাক্ট দুটি প্রকারের মধ্যে বিভক্তঃ
ডেলিভারি চুক্তি
যখন একটি চুক্তি একটি ডেলিভারি চুক্তি সেট করা হয়, কলexchange.GetPosition()
বর্তমান ট্রেডিং জোড়ার অধীনে বিতরণ চুক্তির সমস্ত অবস্থান ফেরত দেওয়া হবে।
চিরস্থায়ী চুক্তি
যখন একটি চুক্তি একটি স্থায়ী চুক্তি সেট করা হয়, কলexchange.GetPosition()
বর্তমান ট্রেডিং জোড়ার অধীনে চিরস্থায়ী চুক্তির সমস্ত পজিশন ফেরত দেওয়া হবে।
/*
Note: if there is no position, it will returns an empty array, so you should judge whether the data returned by the interface is a null array, before you use the returned data
For example:
When the exchange is set to OKX futures, if the contract is set to be a delivery contract, when the position data of the current week, the next week, and the quarter is obtained, the data type will be an array of position structure.
When the exchange is set to OKX futures, if the contract is set to a perpetual contract, the array of position structure containing the position data of the perpetual contract will be obtained.
*/
function main(){
exchange.SetContractType("this_week")
exchange.SetMarginLevel(10)
exchange.SetDirection("buy")
exchange.Buy(10000, 2)
var position = exchange.GetPosition()
if(position.length > 0){
Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,
"ContractType:", position[0].ContractType)
}
}
def main():
exchange.SetContractType("this_week")
exchange.SetMarginLevel(10)
exchange.SetDirection("buy")
exchange.Buy(10000, 2)
position = exchange.GetPosition()
if len(position) > 0:
Log("Amount:", position[0]["Amount"], "FrozenAmount:", position[0]["FrozenAmount"], "Price:",
position[0]["Price"], "Profit:", position[0]["Profit"], "Type:", position[0]["Type"],
"ContractType:", position[0]["ContractType"])
void main() {
exchange.SetContractType("this_week");
exchange.SetMarginLevel(10);
exchange.SetDirection("buy");
exchange.Buy(10000, 2);
auto position = exchange.GetPosition();
if(position.size() > 0) {
Log("Amount:", position[0].Amount, "FrozenAmount:", position[0].FrozenAmount, "Price:",
position[0].Price, "Profit:", position[0].Profit, "Type:", position[0].Type,
"ContractType:", position[0].ContractType);
}
}
exchange.SetMarginLevel(MarginLevel)
প্যারামিটার মানঃ সংখ্যাসূচক টাইপ।
ক্রিপ্টোকারেন্সির ফিউচার অর্ডারের জন্য লিভারেজের আকার নির্ধারণ করুন, উদাহরণস্বরূপঃ
function main() {
exchange.SetMarginLevel(10)
}
def main():
exchange.SetMarginLevel(10)
void main() {
exchange.SetMarginLevel(10);
}
ক্রিপ্টোকারেন্সি ফিউচারগুলির জন্য, ক্রিপ্টোকারেন্সি ফিউচার এক্সচেঞ্জগুলির লিভারেজ প্রক্রিয়াগুলি অভিন্ন নয়। কিছু এক্সচেঞ্জে, ফিউচারগুলির লিভারেজ মান অর্ডার অর্ডার ইন্টারফেসের একটি পরামিতি। এই ক্ষেত্রে,SetMarginLevel
ফাংশনটি নেটওয়ার্ক অনুরোধ তৈরি করতে পারে না, তবে কেবল নীচের স্তরে লিভারেজ ভেরিয়েবল সেট করে (প্লেসিং অর্ডার ইন্টারফেসে প্যারামিটার পাস করতে ব্যবহৃত হয়) । কিছু এক্সচেঞ্জের ফিউচার লিভারেজ এক্সচেঞ্জের একটি সেটিং, যা এক্সচেঞ্জ ওয়েবসাইট পৃষ্ঠায় বা এপিআই ইন্টারফেস ব্যবহার করে সেট করা দরকার। এই মুহুর্তে, কলিংSetMarginLevel
ফাংশনটি একটি নেটওয়ার্ক অনুরোধ তৈরি করবে এবং এটি বিভিন্ন কারণে লিভারেজ সেট করতে ব্যর্থ হতে পারে। উদাহরণস্বরূপঃ যদি বর্তমান অবস্থান এবং অপেক্ষমান অর্ডার থাকে তবে এই ট্রেডিং জোড়া এবং অন্তর্নিহিত বস্তুর জন্য লিভারেজ মান সেট করা নাও হতে পারে।
কৌশল নকশায় লিভারেজ নির্ধারণের জন্য নোটঃ
exchange.SetDirection(Direction)
সেটexchange.Buy
অথবাexchange.Sell
ফিউচার অর্ডারের জন্য নির্দেশাবলী তৈরি করতে। প্যারামিটার মানঃ স্ট্রিং টাইপ।
দ্যSetDirection
ফাংশনটি ফিউচার ট্রেডিং দিক এবং অর্ডার স্থাপন ফাংশনের মধ্যে সম্পর্ক নির্ধারণ করেঃ
অর্ডার স্থাপন ফাংশন | মন্তব্যসমূহ | |
---|---|---|
exchange.Buy | খোলা লং পজিশন কিনুন | |
exchange.Buy | শর্ট পজিশন বন্ধ করুন | |
exchange.Sell | খোলা শর্ট পজিশন বিক্রি | |
exchange.Sell | বন্ধ করা লং পজিশন বিক্রি করা |
প্যারামিটারDirection
চারটি প্যারামিটার নিতে পারে, যার মধ্যেbuy
, closebuy
, sell
এবংclosesell
.
function main(){
// Make an example for setting OKX futures weekly contract
exchange.SetContractType("this_week")
// Set 5 times of leverage
exchange.SetMarginLevel(5)
// Set the order placing type into placing long order
exchange.SetDirection("buy")
// Place an order with the contract quantity of 2, at the price of 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);
}
exchange.SetContractType(ContractType)
চুক্তির ধরন সেট করুন। প্যারামিটার মানঃ স্ট্রিং টাইপ। ক্রিপ্টোকারেন্সি কৌশলগুলিতে, উদাহরণস্বরূপ exchange.SetCurrency("BTC_USDT")
অথবাexchange.IO("currency", "BTC_USDT")
, আপনি ব্যবহার করতে হবেexchange.SetContractType
নতুন ট্রেডিং জোড়ার অধীনে পরিচালিত করা প্রয়োজন যে বর্তমান চুক্তি নির্ধারণ করার জন্য চুক্তি পুনরায় সেট করার ফাংশন।currency-based contract
অথবাU-based contract
উপর ভিত্তিট্রেডিং জুটিউদাহরণস্বরূপ, যখন ট্রেডিং জোড়া সেট করা হয়BTC_ USDT
, ব্যবহার ফাংশনexchange.SetContractType
চুক্তির কোড সেট করতেswap
, যা বিটিসির ইউএসডিটি-ভিত্তিক চিরস্থায়ী চুক্তি হিসাবে সেট করা হয়।BTC_ USD
, ব্যবহার ফাংশনexchange.SetContractType
চুক্তির কোড সেট করতেswap
, যা বিটিসির মুদ্রাভিত্তিক চিরস্থায়ী চুক্তি হিসাবে সেট করা হয়েছে।
অন্যথায় নির্দিষ্ট না করা হলে,বিতরণ চুক্তিএকটি ক্রিপ্টোকারেন্সি ফিউচার চুক্তির কোড সাধারণত নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত করেঃ
this_week
: সাপ্তাহিক চুক্তিnext_week
: পরের সপ্তাহের চুক্তিquarter
: ত্রৈমাসিক চুক্তিnext_quarter
: পরবর্তী ত্রৈমাসিক চুক্তিঅন্যথায় নির্দিষ্ট না করা হলে,স্থায়ী চুক্তিএকটি ক্রিপ্টোকারেন্সি ফিউচার চুক্তির কোড সাধারণত নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত করেঃ
swap
: স্থায়ী চুক্তিবর্তমান চুক্তিকে সাপ্তাহিক চুক্তিতে সেট করুনঃ
function main() {
// Set to weekly contract
exchange.SetContractType("this_week")
}
def main():
exchange.SetContractType("this_week")
void main() {
exchange.SetContractType("this_week");
}
প্রতিটি সমর্থিত ক্রিপ্টোকারেন্সি এক্সচেঞ্জের চুক্তির নামকরণের বিস্তারিত বিবরণ নিম্নরূপ দেখানো হয়েছেঃ
ঠিক আছে
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
এই সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("this_week")
পরের সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("next_week")
ত্রৈমাসিক চুক্তিতে সেট করুনঃexchange.SetContractType("quarter")
পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")
OKX USDT-মার্জিনযুক্ত চুক্তিটি বর্তমান চুক্তির সাথে সামঞ্জস্যপূর্ণ USDT নিষ্পত্তি ব্যবহার করে চুক্তিতে স্যুইচ করা যেতে পারেtrading pair
(অথবা বিনিময় বস্তু যোগ করার সময় এটি সরাসরি সেট করুন) উদাহরণস্বরূপঃ
function main() {
// The default trading pair is BTC_USD, the contract is set to the weekly contract, and the contract is the crypto-margined contract
exchange.SetContractType("this_week")
Log("ticker:", exchange.GetTicker())
// Switch trading pairs, and then set a contract to a USDT-margined contract, which is different from the crypto-margined contract
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());
}
ফিউচার_হুওবিডিএম
এই সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("this_week")
পরের সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("next_week")
ত্রৈমাসিক চুক্তিতে সেট করুনঃexchange.SetContractType("quarter")
পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
প্ল্যাটফর্মটি ইউএসডিটি-মার্জিনযুক্ত চুক্তি সমর্থন করে। উদাহরণস্বরূপ বিটিসি চুক্তি নিন। আপনি কেবলমাত্র ইউএসডিটি-মার্জিনযুক্ত চুক্তিতে স্যুইচ করতে পারেনexchange.SetCurrency("BTC_USDT")
, অথবা বর্তমান ট্রেডিং জুটিকেBTC_USDT
সরাসরি যখন আপনি বট পরামিতি কনফিগার এবং বিনিময় বস্তু যোগ করুন. ট্রেডিং জোড়া স্যুইচ করার পরে, আপনি কল করতে হবেexchange.SetContractType
চুক্তি সেট করতে আবার ফাংশন।
ফিউচার_বিটমেক্স
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("XBTUSD")
, exchange.SetContractType("APTUSDT")
.
চুক্তিটি একটি নির্দিষ্ট সময়ে নিষ্পত্তি করা হয়, এবং আরও বিস্তারিত জানার জন্য প্রতিটি চুক্তির কোড পরীক্ষা করতে বিটমেক্সের অফিসিয়াল ওয়েবসাইটে লগ ইন করুন। উদাহরণস্বরূপঃexchange.SetContractType("XBTM19")
.
ফিউচার_গেটআইও
এই সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("this_week")
.
পরের সপ্তাহের চুক্তিতে সেটঃexchange.SetContractType("next_week")
.
ত্রৈমাসিক চুক্তিতে সেট করুনঃexchange.SetContractType("quarter")
.
পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")
.
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
.
এক্সচেঞ্জটি ইউএসডিটি-মার্জিনযুক্ত চুক্তি সমর্থন করে। উদাহরণস্বরূপ বিটিসি চুক্তি নিন। আপনি কেবলমাত্র ইউএসডিটি-মার্জিনযুক্ত চুক্তিতে স্যুইচ করতে পারেনexchange.SetCurrency("BTC_USDT")
, অথবা বর্তমান ট্রেডিং জুটিকেBTC_USDT
সরাসরি যখন আপনি লাইভ ট্রেডিং পরামিতি কনফিগার এবং বিনিময় বস্তু যোগ করুন. ট্রেডিং জোড়া স্যুইচ করার পরে, আপনি কল করতে হবেexchange.SetContractType
চুক্তি সেট করতে আবার ফাংশন।
ফিউচার_ডেরিবিট
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("BTC-PERPETUAL")
ডেরিবিত ইউএসডিসি চুক্তি সমর্থন; কলexchange.SetContractType("ADA_USDC-PERPETUAL")
এডিএ ইউএসডিসি-মার্জিনযুক্ত চিরস্থায়ী চুক্তি নির্ধারণ করা।
চুক্তিটি একটি নির্দিষ্ট সময়ে নিষ্পত্তি করা হয়, এবং আরও বিস্তারিত জানার জন্য প্রতিটি চুক্তির কোড পরীক্ষা করতে ডেরিবিতের অফিসিয়াল ওয়েবসাইটে লগ ইন করুন, যেমনঃexchange.SetContractType("BTC-27APR18")
.
ফিউচার_কুকয়েন
BTC_USD
, এবং তারপর চুক্তি কোড সেট করুন, যা ক্রিপ্টো-মার্জিন চুক্তি বলা হয়।
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
ত্রৈমাসিক চুক্তিতে সেট করুনঃexchange.SetContractType("quarter")
পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")
BTC_USDT
, এবং তারপর চুক্তি কোড সেট করুন, যা ইউএসডিটি-মার্জিনযুক্ত চুক্তি।
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
.ফিউচার_বাইনান্স
বিন্যান্স ফিউচার ডিফল্টরূপে কোন কনট্রাক্ট স্ট্যাটাস সেট করে না, তাই আপনাকে প্রথমে কনট্রাক্ট সেট করতে হবে।
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
Binance ফিউচারস চিরস্থায়ী চুক্তি USDT-মার্জিনযুক্ত চুক্তি হতে পারে। উদাহরণস্বরূপ,BTC
ইউএসডিটি-মার্জিনযুক্ত চুক্তি, ট্রেডিং জোড়া সেট করা হয়BTC_USDT
. বিন্যান্স ফিউচারস চিরস্থায়ী চুক্তিতে ক্রিপ্টো-মার্জিনযুক্ত চুক্তিও অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ, ক্রিপ্টো-মার্জিনযুক্ত চুক্তিতে, ট্রেডিং জোড়াটি সেট করুনBTC_USD
.
ত্রৈমাসিক চুক্তিতে সেট করুনঃexchange.SetContractType("quarter")
ডেলিভারি চুক্তিতে ক্রিপ্টো-মার্জিনযুক্ত চুক্তি অন্তর্ভুক্ত রয়েছে (যেমন ব্যবহৃত মুদ্রাকে মার্জিন হিসাবে নেওয়া) । উদাহরণস্বরূপ,BTC
, ট্রেডিং জুটি সেট করা আছেBTC_USD
, এবং তারপর চুক্তি কোড সেটexchange.SetContractType("quarter")
, যা বিটিসি ক্রিপ্টো-মার্জিনযুক্ত ত্রৈমাসিক চুক্তি নির্ধারণ করছে।
পরবর্তী ত্রৈমাসিকের চুক্তিতে নির্ধারিতঃexchange.SetContractType("next_quarter")
উদাহরণস্বরূপ, ত্রৈমাসিক ক্রিপ্টো-মার্জিন চুক্তিতেBTC
, ট্রেডিং জুটি সেট করা আছেBTC_USD
, এবং তারপর চুক্তি কোড সেটexchange.SetContractType("next_quarter)
. বিয়ানান্স ইউএসডিটি-মার্জিনযুক্ত ডেলিভারি চুক্তির অংশকে সমর্থন করে, যেমন বিটিসি ট্রেডিং জোড়াকেBTC_USDT
, এবং তারপর চুক্তি কোড সেট করুন.
ফিউচার_বিবক্স
বিবক্স চিরস্থায়ী চুক্তির কোডঃswap
.
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
.
ফিউচার_এওফেক্স
AOFEX চিরস্থায়ী চুক্তির কোডঃswap
.
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
.
ফিউচার_BFX
BFX চিরস্থায়ী চুক্তির কোডঃswap
.
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
.
ফিউচার_বিবিট
বাইবিট বর্তমান ট্রেডিং জোড়ার চিরস্থায়ী চুক্তির জন্য ডিফল্ট। চুক্তি কোডঃswap
.
ত্রৈমাসিক চুক্তির কোডঃquarter
.
পরবর্তী ত্রৈমাসিকের চুক্তির কোডঃnext_quarter
.
ফিউচার_ক্রাকেন
ক্র্যাকেন ডিফল্টরূপে কোন চুক্তির অবস্থা সেট করে না, তাই আপনাকে চুক্তির কোড সেট করতে হবে। চুক্তির কোডঃswap
: চিরস্থায়ী চুক্তি।month
: মাসিক চুক্তি।quarter
: ত্রৈমাসিক চুক্তি।next_quarter
: পরের ত্রৈমাসিকের চুক্তি।
ফিউচারস_বিটফাইনেক্স
বিটফিনেক্স বর্তমান ট্রেডিং জোড়ার চিরস্থায়ী চুক্তির জন্য ডিফল্ট। চুক্তি কোডঃswap
.
ফিউচার_বিটজেট
বিটগেট বর্তমান ট্রেডিং জোড়ার চিরস্থায়ী চুক্তিতে ডিফল্ট। চুক্তি কোডঃswap
. ট্রেডিং জোড়া সেট করা আছেBTC_USD
, ক্রিপ্টো-মার্জিনযুক্ত চুক্তি নির্দেশ করে; ট্রেডিং জোড়াটিBTC_USDT
, যা USDT-মার্জিনযুক্ত চুক্তি নির্দেশ করে। সিমুলেটেড চুক্তিগুলি ট্রেডিং জোড়াগুলিতে সেট করতে পারেঃSBTC_USD
এবংBTC_SUSDT
.
ফিউচার_ডিওয়াইডিএক্স
dYdX চিরস্থায়ী চুক্তির চুক্তি কোডঃswap
.
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
. ডিওয়াইডিএক্সের শুধুমাত্র ইউএসডিটি মার্জিনযুক্ত চুক্তি রয়েছে।
ফিউচার_MEXC
মেক্সিকোর চিরস্থায়ী চুক্তির চুক্তির কোডঃswap
.
চিরস্থায়ী চুক্তিতে সেট করুনঃexchange.SetContractType("swap")
. ট্রেডিং জোড়া সেট করা আছেBTC_USD
, ক্রিপ্টো-মার্জিনযুক্ত চুক্তি নির্দেশ করে; ট্রেডিং জোড়াটিBTC_USDT
, USDT-মার্জিনযুক্ত চুক্তি নির্দেশ করে।
ক্রিপ্টোকারেন্সি কৌশল লেখার সময়, কলexchange.SetContractType(ContractType)
ফাংশন এবং চুক্তি প্যারামিটার দ্বারা সেট বিস্তারিত চুক্তি তথ্যContractType
ফেরত দেওয়া হবে।
উদাহরণস্বরূপ, এক্সচেঞ্জ অবজেক্ট হিসাবে সেট করা OKX চুক্তির কৌশল কোড চালানোঃ
function main(){
// Set to weekly contract
var ret = exchange.SetContractType("this_week")
// Return the information of the weekly contract
Log(ret)
}
def main():
ret = exchange.SetContractType("this_week")
Log(ret)
void main() {
auto ret = exchange.SetContractType("this_week");
Log(ret);
}
কৌশল চালানJavaScript
ভাষা, এবং মুদ্রণret
তথ্য, যথা বিস্তারিত তথ্যthis_week
চুক্তিঃ
{
"instrument":"BTC-USD-191101",
"InstrumentID":"BTC-USD-191101"
}
exchange.GetContractType()
এক্সচেঞ্জ অবজেক্টের বর্তমানে সেট করা চুক্তি কোড প্রদান করে (exchange
), রিটার্ন ভ্যালুঃ স্ট্রিং।
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());
}
নিম্নলিখিত টেবিলটি ক্রিপ্টোকারেন্সি ফিউচার চুক্তির বিনিময় বস্তুর সাথে সম্পর্কিত ত্রুটি তথ্য বর্ণনা করেঃ
মূল্য | ফাংশন প্রদর্শন ত্রুটি | ট্রিগার ফাংশন | বর্ণনা |
---|---|---|---|
0 | ফিউচার_ওপি ০ | exchange.SetMarginLevel | লিভারেজ ফাংশন কল করার ত্রুটি |
1 | ফিউচার_ওপি ১ | exchange.SetDirection | ফিউচার ট্রেডিং দিক ফাংশন সেট করার ত্রুটি |
2 | ফিউচার_ওপি ২ | exchange.SetContractType | চুক্তি ফাংশন সেট করার ত্রুটি |
3 | ফিউচার_ওপি ৩ | exchange.GetPosition | অবস্থান ফাংশন পাওয়ার ত্রুটি |
4 | ফিউচার_ওপি ৪ | exchange.IO | আইও ফাংশন কল করার ত্রুটি |
ব্যবহারexchange.SetContractType
বিভিন্ন এক্সচেঞ্জের বিভিন্ন অপশন চুক্তি কোড রয়েছে।
এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্ম দ্বারা সমর্থিত ক্রিপ্টোকারেন্সি অপশন এক্সচেঞ্জ
ডেরিবিত
ডেরিবিত এক্সচেঞ্জের জন্য, কেবলমাত্রexchange.SetContractType
একটি বিকল্প চুক্তি হিসাবে চুক্তি সেট করার জন্য ফাংশন। বিকল্প চুক্তি সেট আপ করার পরে, যখন বাজারের ইন্টারফেস যেমন কলGetTicker
, অপশন চুক্তির সমস্ত বাজার তথ্য পাওয়া যায়।exchange.Sell
এবংexchange.Buy
একটি অর্ডার স্থাপন করার জন্য ফাংশন, এবং একটি অর্ডার স্থাপন করার সময় ট্রেডিং দিক মনোযোগ দিতে, এবং দ্বারা ট্রেডিং দিক সেটexchange.SetDirection
.exchange.Cancel
একটি অর্ডার বাতিল করার জন্য ফাংশন;exchange.GetPosition
অবস্থান অনুসন্ধান করার ফাংশন।
রেফারেন্সের জন্য কৌশল কোডঃডেরিবিট অপশনের পরীক্ষার কৌশল
ঠিক আছে
চুক্তি স্থাপন, অর্ডার দেওয়া, অর্ডার বাতিল করা, অর্ডার অনুসন্ধান করা, বাজার কোট পাওয়া ইত্যাদি একই অপারেশনDeribit
, এবং চুক্তির কোড ফরম্যাট হলBTC-USD-200626-4500-C
. আপনি ইন্টারফেসের মাধ্যমে চুক্তি সম্পর্কিত তথ্য অনুসন্ধান করতে পারেনhttps://www.okx.com/api/v5/public/instruments
.
উদাহরণস্বরূপ, বিটিসি অপশন চুক্তির তথ্য অনুসন্ধান করতেঃ
function main() {
Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"))
}
import json
import urllib.request
def main():
ret = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD").read().decode('utf-8'))
Log(ret)
void main() {
Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"));
}
ফিউচার_হুওবিডিএম
উদাহরণস্বরূপ, Huobi বিকল্প চুক্তি কোডঃBTC-USDT-201225-P-13000
; চুক্তি একটিBTC
চুক্তি; অনুশীলনের তারিখ 25 ডিসেম্বর, 2020; বিকল্পগুলি হল Put Options (PUT); স্ট্রাইক মূল্য $ 13,000.
ক্রেতার দ্বারা প্রদত্ত প্রিমিয়াম হল USDT, যার মানে অ্যাকাউন্টের সম্পদগুলিতে ব্যবহৃত USDT; বিক্রেতার মার্জিন হল মুদ্রা, যা সম্পদগুলির মুদ্রার দ্বারা গ্যারান্টিযুক্ত।
বিক্রয় বিকল্পগুলির জন্য, ক্রেতা দ্বারা প্রদত্ত প্রিমিয়ামটি ইউএসডিটি, যা অ্যাকাউন্টের সম্পদগুলিতে ইউএসডিটি ব্যবহার করা হয় তা নির্দেশ করে; বিক্রেতার মার্জিনটি ইউএসডিটি, যা সম্পদগুলিতে ইউএসডিটি দ্বারা গ্যারান্টিযুক্ত।
ফিউচার_বিবিট
এটি বাইবিট এক্সচেঞ্জের ইউএসডিসি বিকল্পকে সমর্থন করে এবং ট্রেডিং জোড়াটিকেETH_USDC
, কল ফাংশনexchange.SetContractType
বিকল্প চুক্তির কোডের উদাহরণঃETH-25NOV22-1375-P
.
দ্যexchange.SetBase(Base)
ফাংশনটি এক্সচেঞ্জ অবজেক্টে রেকর্ড করা এপিআই বেস ঠিকানাটি স্যুইচ করতে ব্যবহৃত হয়; উদাহরণস্বরূপ,OKX
ডোমেইন নামhttps://aws.okx.com
, এর সাথে সামঞ্জস্যপূর্ণexchange.IO("base","https://aws.okx.com")
সুইচিং পদ্ধতি। ব্যাকটেস্ট সিস্টেম এক্সচেঞ্জের এপিআই বেস ঠিকানা সুইচিং সমর্থন করে না (ব্যাকটেস্ট সিস্টেম একটি স্যান্ডবক্স পরিবেশ, এক্সচেঞ্জ অ্যাক্সেস করার জন্য একটি বাস্তব ইন্টারফেস নয়) ।
function main() {
// Use the default base address
Log(exchange.GetTicker())
// Switch to https://aws.okx.com
exchange.SetBase("https://aws.okx.com")
Log(exchange.GetTicker())
}
def main():
Log(exchange.GetTicker())
exchange.SetBase("https://aws.okx.com")
Log(exchange.GetTicker())
void main() {
Log(exchange.GetTicker());
exchange.SetBase("https://aws.okx.com");
Log(exchange.GetTicker());
}
exchange.SetProxy(...)
এক্সচেঞ্জ অ্যাক্সেস করতে প্রক্সি সার্ভারে স্যুইচ করে। এই ফাংশন কোন রিটার্ন মান আছে (ভেরিয়েবল দ্বারা প্রাপ্ত, এবং আপনি কি পেতে হয়undefined
) যদি প্রক্সি সেটিং ব্যর্থ হয়, একটি শূন্য মান ফেরত দেওয়া হবে যখন ইন্টারফেস কল করা হয়, শুধুমাত্রবিশ্রামপ্রতিটি এক্সচেঞ্জ বস্তুexchanges[n]
প্রক্সি সেট আপ করার পর, এক্সচেঞ্জ ইন্টারফেস প্রক্সি মাধ্যমে অ্যাক্সেস করা হবে.
প্রথম যোগ করা বিনিময় বস্তু নিনexchange
বিশেষ করে:exchanges[0]
উদাহরণস্বরূপঃ
exchange.SetProxy("socks5://127.0.0.1:8889")
exchange.SetProxy("socks5://username:password@127.0.0.1:8889")
(username
ব্যবহারকারীর নাম,password
পাসওয়ার্ড)exchange.SetProxy("")
এক্সচেঞ্জ অবজেক্ট দ্বারা অনুরোধ করা আইপি ঠিকানা সেট করার জন্য সমর্থন।
windows
সিস্টেম ইন্টারফেস সংস্করণ সরাসরি সেট করতে পারেন, যা নিম্নলিখিত চিত্র হিসাবে দেখানো হয়ঃকমান্ড প্রম্পট ব্যবহারের পরামিতি দ্বারা পরিচালিত অন্যান্য ডকার-I
আইপি ঠিকানা নির্দিষ্ট করতেঃ
এক্সচেঞ্জের উপর ভিত্তি করেঃ
function main(){
exchange.SetProxy("ip://10.0.3.15")
exchange.GetTicker() // The reque