আসুন আগের নিবন্ধে আলোচনা চালিয়ে যাই:FMZ ভিত্তিক অর্ডার সিঙ্ক্রোন ম্যানেজমেন্ট সিস্টেম ডিজাইন (1), একটি সিঙ্ক্রোন অর্ডার তত্ত্বাবধান কৌশল ডিজাইন করতে। অনুগ্রহ করে নিম্নলিখিত নকশা প্রশ্ন বিবেচনা করুনঃ
var isStopFollow = false // used to mark whether to currently supervise orders or not
var reStartPwd = null // used to record the restart password
তারপর কৌশল সম্পাদনা পৃষ্ঠায় ইন্টারেক্টিভ কন্ট্রোল যোগ করুন কৌশলটি বন্ধ / পুনরায় চালু করতে (এটি বট বন্ধ করতে নয়, কেবল লজিক বন্ধ করুন, আদেশ অনুসরণ এবং তত্ত্বাবধান করবেন না, কিছু না করেই) । এটি বন্ধ করার সময়, আপনি একটি স্টপ পাসওয়ার্ড সেট করতে পারেন, যাতে কোনও বট না থাকলেওOrder Synchronous Management System Library (Single Server)
আপনার বর্ধিত এপিআই কী, এটি আপনার কৌশল কল করতে সক্ষম হবে না. আদেশ তত্ত্বাবধান পুনরায় আরম্ভ করার সময়, অর্ডার তত্ত্বাবধান ফাংশন কল করার জন্য পূর্বনির্ধারিত পাসওয়ার্ড লিখুন.
সংশ্লিষ্ট ফাংশনের বাস্তবায়ন কোডঃ
...
// Judge the interactive command
if (arr.length == 2) {
// Buttons with controls
if (arr[0] == "stop/restart") {
// Stop/restart to supervise orders
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("stopped to supervise orders,", "the set restart password is:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("restarted to supervise orders,", "clear the restart password.", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("Wrong restart password!")
}
}
continue
}
২.পর্যবেক্ষণকৃত অর্ডারের অর্ডার পরিমাণ নির্দিষ্ট করা যেতে পারে অথবা অনুপাতের মাধ্যমে এটিকে জুম করা যেতে পারেঃ
specifiedAmount: তত্ত্বাবধানে থাকা অর্ডারের পরিমাণ নির্দিষ্ট করুন; ডিফল্ট হল -1, অর্থাৎ নির্দিষ্ট করা হয়নি।
zoomAmountRatio: পাঠানো সংকেতের অর্ডার পরিমাণ অনুযায়ী জুম করুন। উদাহরণস্বরূপ, পাঠানো সংকেতটি হলঃETH_USDT,swap,buy,1
, তারপর zoomAmountRatio দ্বারা অর্ডার পরিমাণ মান গুণ; ডিফল্ট হল -1, যথা zoomed না।
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
এখানে আমরা বুঝতে পেরেছি যেজুমঅর্ডারের পরিমাণ বাএকটি নির্দিষ্ট মান উল্লেখ করুন, প্রাপ্ত সংকেত অনুযায়ী।
৩. কোডগুলি যতটা সম্ভব সহজ করে লিখুন এবং অর্ডার দেওয়ার জন্য অন্যান্য টেমপ্লেট লাইব্রেরি ব্যবহার করুন।
স্পট অর্ডার দেওয়ার জন্য ব্যবহৃত টেমপ্লেট লাইব্রেরিঃhttps://www.fmz.com/strategy/10989ফিউচার অর্ডারের জন্য ব্যবহৃত টেমপ্লেট লাইব্রেরিঃhttps://www.fmz.com/strategy/203258
function trade(action) {
// Switch the trading pair, and set contract
exchange.SetCurrency(action.symbol)
if (action.ct != "spot") {
exchange.SetContractType(action.ct)
}
var retTrade = null
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
if (action.direction == "buy") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.OpenLong(exchange, action.ct, amount)
} else if (action.direction == "sell") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.OpenShort(exchange, action.ct, amount)
} else if (action.direction == "closebuy") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.CoverLong(exchange, action.ct, amount)
} else if (action.direction == "closesell") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.CoverShort(exchange, action.ct, amount)
}
return retTrade
}
অতএব, এটা দেখা যায় যে একটি অর্ডার স্থাপন শুধুমাত্র একটি বিবৃতি প্রয়োজনঃ$.Sell(amount)
, $.Buy(amount)
, $.OpenLong(exchange, action.ct, amount)
ইত্যাদি।
পূর্ববর্তী কোডের অস্থায়ী কোডOrder Synchronous Management System (Synchronous Server)
নিম্নরূপঃ
এখন, আসুন ডিজাইন করিOrder Synchronous Management System (Synchronous Server)
আবারও বলছি:
// Global variables
var isStopFollow = false
var reStartPwd = null
function trade(action) {
// Switch the trading pair, and set contract
exchange.SetCurrency(action.symbol)
if (action.ct != "spot") {
exchange.SetContractType(action.ct)
}
var retTrade = null
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
if (action.direction == "buy") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.OpenLong(exchange, action.ct, amount)
} else if (action.direction == "sell") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.OpenShort(exchange, action.ct, amount)
} else if (action.direction == "closebuy") {
retTrade = action.ct == "spot" ? $.Sell(amount) : $.CoverLong(exchange, action.ct, amount)
} else if (action.direction == "closesell") {
retTrade = action.ct == "spot" ? $.Buy(amount) : $.CoverShort(exchange, action.ct, amount)
}
return retTrade
}
function parseCmd(cmd) {
var objAction = {}
// Parse cmd, such as: ETH_USDT,swap,buy,1
var arr = cmd.split(",")
if (arr.length != 4) {
return null
}
objAction.symbol = arr[0]
objAction.ct = arr[1]
objAction.direction = arr[2]
objAction.amount = arr[3]
return objAction
}
function main() {
// Clear all logs
LogReset(1)
if (isSimulateOKEX) {
exchange.IO("simulate", true)
Log("Switch to OKEX simulated bot!")
}
// set precision
exchange.SetPrecision(pricePrecision, amountPrecision)
// Check specifiedAmount and zoomAmountRatio, for they cannot be set at the same time
if (specifiedAmount != -1 && zoomAmountRatio != -1) {
throw "cannot set specifiedAmount and zoomAmountRatio at the same time"
}
while (true) {
var cmd = GetCommand()
if (cmd) {
Log("cmd: ", cmd)
var arr = cmd.split(":")
// Judge the interactive command
if (arr.length == 2) {
// Buttons with controls
if (arr[0] == "stop/restart") {
// Stop/restart to supervise orders
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("stopped to supervise orders,", "the set restart password is:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("restarted to supervise orders,", "Clear the restart password", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("Wrong restart password!")
}
}
continue
}
// Allow to supervise orders
if (!isStopFollow) {
// Parse the interactive command of the order supervising signal
var objAction = parseCmd(cmd)
if (objAction) {
// Parse correctly
var ret = trade(objAction)
} else {
Log("Wrong signal cmd:", cmd)
}
}
}
// Display the order supervising status
LogStatus(_D(), isStopFollow ? "Stop synchronization" : "Maintain synchronization", "\n")
Sleep(1000)
}
}
এই সময়, Binance বাস্তব টিক পরীক্ষা আদেশ সঙ্গে অ্যাকাউন্টের জন্য ব্যবহৃত হয়, এবং OKEX অ্যাকাউন্ট অর্ডার তত্ত্বাবধানে বট জন্য ব্যবহৃত হয়. অর্ডার তত্ত্বাবধানে জন্য, আমরা এখনও পূর্ববর্তী নিবন্ধে ব্যবহৃত পরীক্ষা ফাংশন ব্যবহার (দ্যmain
কর্মক্ষমতাOrder Synchronous Management System Library (Single Server)
টেমপ্লেট)
এটা শুধু আমরা সংক্ষিপ্ত ট্রেডিং দিক পরিবর্তন, এবং ট্রেডিং ভলিউম 0.003 পরিবর্তন করা হয়েছে (Binance USDT- মার্জিনযুক্ত চুক্তি দশমিক স্থাপন করা যেতে পারে). যাইহোক, অর্ডার সঙ্গে OKEX অ্যাকাউন্ট একটি পূর্ণসংখ্যা হতে হবে (OKEX দ্বারা স্থাপন আদেশ একটি পূর্ণসংখ্যা হতে হবে), তাই পরামিতি আমি কৌশল পরামিতি নির্দিষ্টspecifiedAmount
১ হিসেবে।
টেস্টিং ফাংশন এর বটOrder Synchronous Management System Library (Single Server)
বিনিময় শুরু করে।
অর্ডার তত্ত্বাবধানে বট কৌশল সংকেত পেয়েছি, এবং তত্ত্বাবধান কর্ম সঞ্চালনঃ
প্ল্যাটফর্মটি সংশ্লিষ্ট অর্ডারটি খুলেছে।
পরবর্তী, বন্ধ পজিশন পরীক্ষা করুন, এবং শর্ট পজিশন বন্ধ করার জন্য মূল ফাংশনে অর্ডার দিক পরিবর্তন করুন, 0.003.
তারপর বট পুনরায় চালু করুন যা অর্ডার বহন করার জন্য দায়ী (Order Synchronous Management System Library (Single Server)
).
একই অপারেশনটি অর্ডার সুপারভাইজিং বটেও ট্রিগার করা হয়ঃ
কৌশল ঠিকানাঃঅর্ডার সিঙ্ক্রোন ম্যানেজমেন্ট সিস্টেম লাইব্রেরি (একক সার্ভার) অর্ডার সিঙ্ক্রোন ম্যানেজমেন্ট সিস্টেম (সিঙ্ক্রোন সার্ভার)
এই কৌশলগুলি শুধুমাত্র যোগাযোগ এবং অধ্যয়নের জন্য ব্যবহৃত হয়; প্রকৃত ব্যবহারের জন্য, আপনাকে নিজের দ্বারা তাদের সংশোধন, সমন্বয় এবং অপ্টিমাইজ করতে হবে।