এফএমজেড কোয়ান্টিফিকেশনের উপর ভিত্তি করে অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেমের ডিজাইন (1)
এফএমজেড লাইব্রেরির পূর্ববর্তী নিবন্ধগুলিতে, আমরা বেশ কয়েকটি অর্ডার এবং অবস্থান সিঙ্ক্রোনাইজেশন কৌশল ডিজাইন করেছি।
অর্ডার এবং পজিশনের সিঙ্ক্রোনাইজেশন পরিচালনা করার জন্য এগুলি হল রেফারেন্স অ্যাকাউন্ট এবং সিঙ্ক্রোনাইজেশন অ্যাকাউন্টকে একটি কৌশলে রাখা। আজ আমরা FMZ পরিমাণগত ট্রেডিং প্ল্যাটফর্মের শক্তিশালী বর্ধিত API ইন্টারফেসের উপর ভিত্তি করে একটি ভিন্ন ডিজাইনের চেষ্টা করব, আমরা একটি অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম ডিজাইন করব।
ডিজাইনের ধারণা
প্রথমে আমাদের কিছু ভালো পরামর্শ ও চাহিদা থাকতে হবে। উপরোক্ত দুটি পূর্ববর্তী ক্রম এবং অবস্থান সিঙ্ক্রোনাইজেশন কৌশলগুলির বেশ কয়েকটি সুস্পষ্ট ব্যথা পয়েন্ট রয়েছে আসুন সেগুলি একসাথে আলোচনা করি:
-
- সিঙ্ক্রোনাইজেশন কৌশল বাস্তবায়নকারীর অবশ্যই রেফারেন্স অ্যাকাউন্টের এক্সচেঞ্জ API KEY এবং সিঙ্ক্রোনাইজেশন অ্যাকাউন্টের বিনিময় API KEY থাকতে হবে।
এই প্রশ্নের ব্যবহারের দৃশ্যকল্প হল: আপনার অন্যান্য এক্সচেঞ্জ অ্যাকাউন্টগুলির জন্য আপনার নিজস্ব অ্যাকাউন্টগুলির একটি অনুসরণ করা কোনও সমস্যা নয়। কিন্তু রেফারেন্স অ্যাকাউন্ট এবং সিঙ্ক্রোনাইজেশন অ্যাকাউন্টের মালিক একই না থাকলে সমস্যা হবে। কখনও কখনও, নিরাপত্তার কারণে, একটি সিঙ্ক্রোনাইজড অ্যাকাউন্টের মালিক তার এক্সচেঞ্জ অ্যাকাউন্টের API KEY প্রদান করতে অনিচ্ছুক হন। কিন্তু API KEY প্রদান না করে আমি কীভাবে সিঙ্ক্রোনাসভাবে অর্ডার দিতে পারি?
সমাধান:
FMZ এর বর্ধিত API ইন্টারফেস ব্যবহার করে, সিঙ্ক্রোনাইজেশন অ্যাকাউন্টের মালিককে (অনুসারী) শুধুমাত্র FMZ পরিমাণগত ট্রেডিং প্ল্যাটফর্ম নিবন্ধন করতে হবে এবং তারপর একটি কৌশল চালাতে হবে (এই নিবন্ধে ডিজাইন করা সিস্টেমে:订单同步管理系统(Synchronous Server)কৌশল বাস্তব অফার)। তারপর FMZ-এর বর্ধিত API KEY (দ্রষ্টব্য, এক্সচেঞ্জ অ্যাকাউন্টের API KEY নয়) এবং অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম (সিঙ্ক্রোনাস সার্ভার) রেফারেন্স অ্যাকাউন্টের মালিককে (যে অর্ডারটি নিয়ে আসে) আসল অফার আইডি প্রদান করুন।
অ্যাকাউন্টের মালিকের প্রকৃত অফারটি উল্লেখ করার সময় (অর্ডার সহ) (এই নিবন্ধে ডিজাইন করা সিস্টেমে)订单同步管理系统类库(Single Server)) একটি সংকেত পাঠায়, এবং সিঙ্ক্রোনাইজ করা অ্যাকাউন্টের মালিকের আসল অফারটি লেনদেনের সংকেত পাবে, এবং পরবর্তী অর্ডারগুলি স্বয়ংক্রিয়ভাবে স্থাপন করা হবে। - সিঙ্ক্রোনাইজেশন কৌশল বাস্তবায়নকারীর অবশ্যই রেফারেন্স অ্যাকাউন্টের এক্সচেঞ্জ API KEY এবং সিঙ্ক্রোনাইজেশন অ্যাকাউন্টের বিনিময় API KEY থাকতে হবে।
-
- অনেক ডেভেলপারের আরও ভাল কৌশল রয়েছে এবং তারা উপরে বর্ণিত দুটি বিগত ক্রম এবং অবস্থান সিঙ্ক্রোনাইজেশন কৌশল ব্যবহার করতে পারে না। কারণ তারপরে আপনাকে এই সিঙ্ক্রোনাইজেশন কৌশলগুলির সাথে আপনার নিজস্ব কৌশলকে সংহত করতে হবে এবং কৌশলটি উল্লেখযোগ্যভাবে পরিবর্তন করতে হবে, যা শ্রমসাধ্য এবং শ্রমসাধ্য। অর্ডার সিঙ্ক্রোনাইজেশন ফাংশনে আমার কিছু পরিপক্ক কৌশল সরাসরি আপগ্রেড করার একটি ভাল উপায় আছে কি?
সমাধান:
আপনি অর্ডার সিঙ্ক্রোনাইজেশন টেমপ্লেট ক্লাস লাইব্রেরি ডিজাইন করতে পারেন (এই নিবন্ধে ডিজাইন করা সিস্টেমে订单同步管理系统类库(Single Server)কৌশল), রেফারেন্স অ্যাকাউন্টের মালিককে (অর্ডার লিডার) অর্ডার এবং পজিশনের সিঙ্ক্রোনাইজেশন ফাংশন উপলব্ধি করার জন্য তার নিজস্ব কৌশলে এই টেমপ্লেট ক্লাস লাইব্রেরিটি সরাসরি এম্বেড করার অনুমতি দেয়।
- অনেক ডেভেলপারের আরও ভাল কৌশল রয়েছে এবং তারা উপরে বর্ণিত দুটি বিগত ক্রম এবং অবস্থান সিঙ্ক্রোনাইজেশন কৌশল ব্যবহার করতে পারে না। কারণ তারপরে আপনাকে এই সিঙ্ক্রোনাইজেশন কৌশলগুলির সাথে আপনার নিজস্ব কৌশলকে সংহত করতে হবে এবং কৌশলটি উল্লেখযোগ্যভাবে পরিবর্তন করতে হবে, যা শ্রমসাধ্য এবং শ্রমসাধ্য। অর্ডার সিঙ্ক্রোনাইজেশন ফাংশনে আমার কিছু পরিপক্ক কৌশল সরাসরি আপগ্রেড করার একটি ভাল উপায় আছে কি?
-
- একটি অতিরিক্ত দৃঢ় অফার হ্রাস.
শেষ ব্যথা পয়েন্ট যদি আপনি উপরে বর্ণিত দুটি অতীত আদেশ এবং অবস্থান সিঙ্ক্রোনাইজেশন কৌশল ব্যবহার করেন। এটি একটি বাস্তব অফার মনিটরিং রেফারেন্স অ্যাকাউন্ট (অর্ডার সহ অ্যাকাউন্ট) এর একটি অতিরিক্ত অবস্থান খুলতে প্রয়োজনীয়।
সমাধান:
রেফারেন্স অ্যাকাউন্ট নীতিতে কার্যকারিতা এমবেড করতে একটি টেমপ্লেট ক্লাস লাইব্রেরি ব্যবহার করুন।
- একটি অতিরিক্ত দৃঢ় অফার হ্রাস.
সুতরাং এই সিস্টেমটি 2 টি অংশ নিয়ে গঠিত:
১. অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম ক্লাস লাইব্রেরি (একক সার্ভার)
2. অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম (সিঙ্ক্রোনাস সার্ভার)
একবার প্রয়োজনীয়তা পরিষ্কার হয়ে গেলে, আসুন ডিজাইন করা শুরু করি!
ডিজাইন 1: অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম ক্লাস লাইব্রেরি (একক সার্ভার)
মনে রাখবেন এটি কোনও কৌশল নয়। এটি FMZ এর একটি টেমপ্লেট ক্লাস লাইব্রেরি। টেমপ্লেট ক্লাস লাইব্রেরির ধারণাটি FMZ API ডকুমেন্টেশনে অনুসন্ধান করা যেতে পারে, তাই আমি এখানে বিস্তারিত জানাবো না।
টেমপ্লেট লাইব্রেরি কোড:
javascript
// 全局变量
var keyName_label = "label"
var keyName_robotId = "robotId"
var keyName_extendAccessKey = "extendAccessKey"
var keyName_extendSecretKey = "extendSecretKey"
var fmzExtendApis = parseConfigs([config1, config2, config3, config4, config5])
var mapInitRefPosAmount = {}
function parseConfigs(configs) {
var arr = []
_.each(configs, function(config) {
if (config == "") {
return
}
var strArr = config.split(",")
if (strArr.length != 4) {
throw "configs error!"
}
var obj = {}
obj[keyName_label] = strArr[0]
obj[keyName_robotId] = strArr[1]
obj[keyName_extendAccessKey] = strArr[2]
obj[keyName_extendSecretKey] = strArr[3]
arr.push(obj)
})
return arr
}
function getPosAmount(pos, ct) {
var longPosAmount = 0
var shortPosAmount = 0
_.each(pos, function(ele) {
if (ele.ContractType == ct && ele.Type == PD_LONG) {
longPosAmount = ele.Amount
} else if (ele.ContractType == ct && ele.Type == PD_SHORT) {
shortPosAmount = ele.Amount
}
})
var timestamp = new Date().getTime()
return {ts: timestamp, long: longPosAmount, short: shortPosAmount}
}
function sendCommandRobotMsg (robotId, accessKey, secretKey, msg) {
// https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
var url = "https://www.fmz.com/api/v1?access_key=" + accessKey + "&secret_key=" + secretKey + "&method=CommandRobot&args=[" + robotId + ',"' + msg + '"]'
Log(url)
var ret = HttpQuery(url)
return ret
}
function follow(nowPosAmount, symbol, ct, type, delta) {
var msg = ""
var nowAmount = type == PD_LONG ? nowPosAmount.long : nowPosAmount.short
if (delta > 0) {
// 开仓
var tradeDirection = type == PD_LONG ? "buy" : "sell"
// 发送信号
msg = symbol + "," + ct + "," + tradeDirection + "," + Math.abs(delta)
} else if (delta < 0) {
// 平仓
var tradeDirection = type == PD_LONG ? "closebuy" : "closesell"
if (nowAmount <= 0) {
Log("未检测到持仓")
return
}
// 发送信号
msg = symbol + "," + ct + "," + tradeDirection + "," + Math.abs(delta)
} else {
throw "错误"
}
if (msg) {
_.each(fmzExtendApis, function(extendApiConfig) {
var ret = sendCommandRobotMsg(extendApiConfig[keyName_robotId], extendApiConfig[keyName_extendAccessKey], extendApiConfig[keyName_extendSecretKey], msg)
Log("调用CommandRobot接口,", "label:", extendApiConfig[keyName_label], ", msg:", msg, ", ret:", ret)
Sleep(1000)
})
}
}
$.PosMonitor = function(exIndex, symbol, ct) {
var ts = new Date().getTime()
var ex = exchanges[exIndex]
// 判断ex类型
var exName = ex.GetName()
var isFutures = exName.includes("Futures_")
var exType = isFutures ? "futures" : "spot"
if (!isFutures) {
throw "仅支持期货跟单"
}
if (exType == "futures") {
// 缓存 symbol ct
var buffSymbol = ex.GetCurrency()
var buffCt = ex.GetContractType()
// 切换到对应的交易对、合约代码
ex.SetCurrency(symbol)
if (!ex.SetContractType(ct)) {
throw "SetContractType failed"
}
// 监控持仓
var keyInitRefPosAmount = "refPos-" + exIndex + "-" + symbol + "-" + ct // refPos-exIndex-symbol-contractType
var initRefPosAmount = mapInitRefPosAmount[keyInitRefPosAmount]
if (!initRefPosAmount) {
// 没有初始化数据,初始化
mapInitRefPosAmount[keyInitRefPosAmount] = getPosAmount(_C(ex.GetPosition), ct)
initRefPosAmount = mapInitRefPosAmount[keyInitRefPosAmount]
}
// 监控
var nowRefPosAmount = getPosAmount(_C(ex.GetPosition), ct)
// 计算仓位变动
var longPosDelta = nowRefPosAmount.long - initRefPosAmount.long
var shortPosDelta = nowRefPosAmount.short - initRefPosAmount.short
// 检测变动
if (!(longPosDelta == 0 && shortPosDelta == 0)) {
// 执行多头动作
if (longPosDelta != 0) {
Log(ex.GetName(), ex.GetLabel(), symbol, ct, "执行多头跟单,变动量:", longPosDelta)
follow(nowRefPosAmount, symbol, ct, PD_LONG, longPosDelta)
}
// 执行空头动作
if (shortPosDelta != 0) {
Log(ex.GetName(), ex.GetLabel(), symbol, ct, "执行空头跟单,变动量:", shortPosDelta)
follow(nowRefPosAmount, symbol, ct, PD_SHORT, shortPosDelta)
}
// 执行跟单操作后,更新
mapInitRefPosAmount[keyInitRefPosAmount] = nowRefPosAmount
}
// 恢复 symbol ct
ex.SetCurrency(buffSymbol)
ex.SetContractType(buffCt)
} else if (exType == "spot") {
// 现货
}
}
$.getTbl = function() {
var tbl = {
"type" : "table",
"title" : "同步数据",
"cols" : [],
"rows" : []
}
// 构造表头
tbl.cols.push("监控账户:refPos-exIndex-symbol-contractType")
tbl.cols.push(`监控持仓:{"时间戳":xxx,"多头持仓量":xxx,"空头持仓量":xxx}`)
_.each(fmzExtendApis, function(extendApiData, index) {
tbl.cols.push(keyName_robotId + "-" + index)
})
// 写入数据
_.each(mapInitRefPosAmount, function(initRefPosAmount, key) {
var arr = [key, JSON.stringify(initRefPosAmount)]
_.each(fmzExtendApis, function(extendApiData) {
arr.push(extendApiData[keyName_robotId])
})
tbl.rows.push(arr)
})
return tbl
}
// 引用该模板类库的策略调用范例
function main() {
// 清除所有日志
LogReset(1)
// 切换到OKEX 模拟盘测试
exchanges[0].IO("simulate", true)
// 设置合约
exchanges[0].SetCurrency("ETH_USDT")
exchanges[0].SetContractType("swap")
// 定时交易时间间隔
var tradeInterval = 1000 * 60 * 3 // 三分钟交易一次,用于观察跟单信号
var lastTradeTS = new Date().getTime()
while (true) {
// 策略其它逻辑...
// 用于测试的模拟交易触发
var ts = new Date().getTime()
if (ts - lastTradeTS > tradeInterval) {
Log("模拟带单策略发生交易,持仓变化", "#FF0000")
exchanges[0].SetDirection("buy")
exchanges[0].Buy(-1, 1)
lastTradeTS = ts
}
// 使用模板的接口函数
$.PosMonitor(0, "ETH_USDT", "swap") // 可以设置多个监控,监控带单策略上的不同的exchange对象
var tbl = $.getTbl()
// 显示状态栏
LogStatus(_D(), "\n" + "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
ডিজাইনটি খুবই সহজ এই ক্লাস লাইব্রেরিতে 2টি কার্যকরী ফাংশন রয়েছে। যখন FMZ প্ল্যাটফর্মে একটি প্রোগ্রামেটিক ট্রেডিং কৌশল উদ্ধৃত হয়订单同步管理系统类库(Single Server)টেমপ্লেট ক্লাস লাইব্রেরির পরে। এই কৌশল নিম্নলিখিত ফাংশন ব্যবহার করতে পারেন.
-
$.PosMonitor
এই ফাংশনের কাজটি হ'ল কৌশলে বিনিময় বস্তুর অবস্থান পরিবর্তনগুলি পর্যবেক্ষণ করা এবং তারপরে টেমপ্লেটের পরামিতিগুলিতে সেট করা আসল অফারে ট্রেডিং সংকেত প্রেরণ করা: অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম ক্লাস লাইব্রেরি (একক সার্ভার)। -
$.getTbl
নিরীক্ষণ করা সিঙ্ক্রোনাইজেশন ডেটা ফেরত দেয়।
ব্যবহারের একটি উদাহরণ হল: অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম ক্লাস লাইব্রেরি (একক সার্ভার) টেমপ্লেটmainফাংশনে:
javascript
// 引用该模板类库的策略调用范例
function main() {
// 清除所有日志
LogReset(1)
// 切换到OKEX 模拟盘测试
exchanges[0].IO("simulate", true)
// 设置合约
exchanges[0].SetCurrency("ETH_USDT")
exchanges[0].SetContractType("swap")
// 定时交易时间间隔
var tradeInterval = 1000 * 60 * 3 // 三分钟交易一次,用于观察跟单信号
var lastTradeTS = new Date().getTime()
while (true) {
// 策略其它逻辑...
// 用于测试的模拟交易触发
var ts = new Date().getTime()
if (ts - lastTradeTS > tradeInterval) {
Log("模拟带单策略发生交易,持仓变化", "#FF0000")
exchanges[0].SetDirection("buy")
exchanges[0].Buy(-1, 1)
lastTradeTS = ts
}
// 使用模板的接口函数
$.PosMonitor(0, "ETH_USDT", "swap") // 可以设置多个监控,监控带单策略上的不同的exchange对象
var tbl = $.getTbl()
// 显示状态栏
LogStatus(_D(), "\n" + "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
একটি টেমপ্লেট লাইব্রেরি নিজেই বাস্তব কৌশল তৈরি করতে পারে, যা সাধারণত টেমপ্লেট লাইব্রেরি পরীক্ষা করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, এই টেমপ্লেটের একটি পরীক্ষা। তুমি টেমপ্লেটটি বুঝতে পারছো।mainএকটি ফাংশন হল আপনার নিজস্ব একটি কৌশল।mainফাংশন
পরীক্ষার কোডটি OKEX সিমুলেটেড ডিস্ক পরীক্ষাটি ব্যবহার করার জন্য লেখা হয়েছে একটি রেফারেন্স অ্যাকাউন্ট (অর্ডার সহ) হিসাবে OKEX সিমুলেটেড ডিস্কের API KEY কনফিগার করা এবং মূল ফাংশনে সিমুলেটেড ডিস্কে স্যুইচ করা শুরু করা প্রয়োজন৷ তারপরে ট্রেডিং পেয়ার সেট করুন ETH_USDT, এবং তারপর চুক্তিকে চিরস্থায়ী (অদলবদল) সেট করুন। তারপর একটি সময় লুপ লিখুন। কৌশলগত লেনদেনের ট্রিগারিং অনুকরণ করতে চক্রের প্রতি 3 মিনিটে একটি অর্ডার দেওয়া হয়। যখন লুপ কল$.PosMonitor(0, "ETH_USDT", "swap"), বলা ফাংশনের প্রথম প্যারামিটারটি 0 এ পাস করা হয়, যার অর্থ এক্সচেঞ্জগুলি পর্যবেক্ষণ করা[0] এই এক্সচেঞ্জ অবজেক্টটি ETH_USDT ট্রেডিং পেয়ার এবং অদলবদল চুক্তি পর্যবেক্ষণ করে। এবং তারপর কল$.getTbl()চার্ট তথ্য পেতে, ব্যবহার করুনLogStatus(_D(), "\n" + "" + JSON.stringify(tbl) + "")স্ট্যাটাস বারে চার্ট ডেটা প্রদর্শন করুন।
সুতরাং আপনি দেখতে পাচ্ছেন, যতক্ষণ আপনি এটিকে একটি নীতিতে ব্যবহার করেন যা টেমপ্লেটটি উল্লেখ করে$.PosMonitor(0, "ETH_USDT", "swap"), আপনি একটি নির্দিষ্ট বৈচিত্র্যের অবস্থান নিরীক্ষণ এবং অবস্থানের পরিবর্তনের উপর বার্তা ঠেলে দেওয়ার ফাংশন কৌশলটিকে অনুমতি দিতে পারেন।
পরীক্ষার আগে ব্যাখ্যা করুন订单同步管理系统类库(Single Server)কৌশল প্যারামিটার ডিজাইন:
আমি শুধু একটি নির্দিষ্ট নীতি আপগ্রেড অর্ডার ফাংশন আছে করতে টেমপ্লেট এর ইন্টারফেস ফাংশন কিভাবে ব্যবহার করতে হবে সম্পর্কে কথা বললাম. তাহলে অবস্থান পরিবর্তন হলে কাকে সংকেত পাঠানো হয়?
কার কাছে এই প্রশ্ন পাঠানো হবে তা নির্ধারিত হয়订单同步管理系统类库(Single Server)কনফিগার করার পরামিতি।
আপনি দেখতে পাচ্ছেন যে এখানে 5টি প্যারামিটার রয়েছে এবং সর্বাধিক 5টি পুশ সমর্থিত (আপনি এটিকে প্রসারিত করতে পারেন যদি আপনার আরও যোগ করার প্রয়োজন হয়) একটি খালি স্ট্রিংটিতে ডিফল্ট হয়, যার অর্থ এটি প্রক্রিয়া করা হবে না৷ কনফিগারেশন স্ট্রিং বিন্যাস: লেবেল, রোবটআইডি, অ্যাক্সেসকি, সিক্রেটকি
-
label
সিঙ্ক্রোনাইজড অ্যাকাউন্টের লেবেল একটি অ্যাকাউন্ট চিহ্নিত করতে ব্যবহৃত হয়। -
robotId
রিয়েল আইডি, সিঙ্ক্রোনাইজেশন অ্যাকাউন্টের মালিক দ্বারা তৈরি订单同步管理系统(Synchronous Server)আসল অফারের আইডি। -
accessKey
FMZ এক্সটেনশন API অ্যাক্সেসকি -
secretKey
FMZ এক্সটেনশন API-এর গোপন কী
পরবর্তী আমরা একটি সহজ পরীক্ষা পরিচালনা করতে পারেন.
অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম ক্লাস লাইব্রেরি (একক সার্ভার) বাস্তব অপারেশন:
অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম (সিঙ্ক্রোনাস সার্ভার) সংকেত পেয়েছে:
আমরা এখনও অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম (সিঙ্ক্রোনাস সার্ভার) এর ডিজাইন সম্পূর্ণ করিনি আমরা প্রথমে এটি বাস্তবায়নের জন্য একটি সাধারণ কোড ব্যবহার করব, লেনদেন না করে, শুধুমাত্র মুদ্রণ সংকেত:
অর্ডার সিঙ্ক্রোনাইজেশন ম্যানেজমেন্ট সিস্টেম (সিঙ্ক্রোনাস সার্ভার) অস্থায়ী কোড:
javascript
function main() {
LogReset(1)
while (true) {
var cmd = GetCommand()
if (cmd) {
// cmd: ETH_USDT,swap,buy,1
Log("cmd: ", cmd)
}
Sleep(1000)
}
}
আপনি দেখতে পাচ্ছেন যে সিঙ্ক্রোনাইজেশন অ্যাকাউন্টের মালিকের আসল অফার তথ্য পেয়েছে:ETH_USDT,swap,buy,1。
এইভাবে, পরবর্তী ধাপে, আপনি স্বয়ংক্রিয়ভাবে ট্রেডিং পেয়ার, চুক্তি কোড, ট্রেডিং দিকনির্দেশ এবং তথ্যের পরিমাণের উপর ভিত্তি করে অর্ডারগুলি অনুসরণ করতে পারেন।
বর্তমানে订单同步管理系统(Synchronous Server)এটি শুধুমাত্র একটি অস্থায়ী কোড, আমরা পরবর্তী সংখ্যায় এর নকশা নিয়ে আলোচনা চালিয়ে যাব।
您可能没看明白文章,这个类库是一个工具,可以在带单者策略行直接嵌入,然后这个策略就有带单功能了,就会给设置好的跟单账户发信息,跟单机器人就会收到消息跟单了。
简单说就是这样的场景。
错误 configs error!,在订单同步管理系统类库(Single Server)中,把带单者实盘和2个KEY都填进去了,然后再实盘中引用了订单同步管理系统类库(Single Server),报错,错误 configs error!
可以看下文章,配置信息: 标签,实盘ID,accesskey,secretkey 。 报这个错误应该就是您信息配置错了,您再检查下。注意使用英文逗号间隔。
- 1





