ہم پچھلے مضمون کو جاری رکھتے ہیں:ایف ایم زیڈ کی بنیاد پر آرڈر سنک مینجمنٹ سسٹم ڈیزائن (1)اس کے بعد ، ہم نے اس پر تبادلہ خیال کیا ، اور ہم نے ہم آہنگی کی حکمت عملی تیار کرنے کا آغاز کیا۔
اس طرح کے ڈیزائن کے بارے میں چند سوالات پر غور کریں:
1، اگر آپ عارضی طور پر ہم آہنگی نہیں کرنا چاہتے ہیں تو ، کیا آپ روک سکتے ہیں؟ ایک بار روکنے کے بعد ، توسیع API سے شروع کرنے اور پاس ورڈ کی توثیق کرنے پر پابندی عائد ہے۔ اس فنکشن کو لاگو کرنے کے لئے ، دو عالمی متغیرات شامل کیے گئے ہیں:
var isStopFollow = false // 用于标记当前是否跟单
var reStartPwd = null // 用于记录重启密码
اس کے بعد پالیسی ایڈیٹنگ کے صفحے پر ایک انٹرایکٹو کنٹرول شامل کیا جاتا ہے جس میں پالیسی کو روکنے / دوبارہ شروع کرنے کے لئے استعمال کیا جاتا ہے ((یہ واقعی ڈسک کو روکنے کے لئے نہیں ہے، صرف منطقی روکنے کے لئے ہے، کوئی فہرست نہیں ہے، کچھ بھی نہیں ہے) ؛ روکنے کے وقت ایک روکنے کا پاس ورڈ مقرر کیا جا سکتا ہے، لہذا یہاں تک کہ اگر آپ کے پاس توسیع API KEY کے ساتھ订单同步管理系统类库(Single Server)
ڈیسک ٹاپ آپ کی پالیسی کو بھی نہیں جاگاسکتا ہے۔ ٹریک لسٹ کو دوبارہ شروع کرتے وقت ، پہلے سے طے شدہ پاس ورڈ درج کریں تاکہ ٹریک لسٹ کی تقریب کو جاگایا جاسکے۔
اس کے لیے کوڈ:
...
// 判断交互指令
if (arr.length == 2) {
// 带控件的按钮
if (arr[0] == "stop/restart") {
// 暂停/重启跟单
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("已经停止跟单,", "设置的重启密码为:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("已经重启跟单,", "清空重启密码。", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("重启密码错误!")
}
}
continue
}
2، آپ فہرست کی کم از کم مقدار کی وضاحت کر سکتے ہیں یا آپ کو کئی گنا بڑھا سکتے ہیں پالیسی میں پیرامیٹرز شامل کریں:
specifiedAmount: فہرستوں کی تعداد کی وضاحت کریں، پہلے سے طے شدہ - 1 ہے، یعنی اس کی وضاحت نہیں کی گئی ہے۔
zoomAmountRatio: بھیجنے والے سگنل میں کم سے کم مقدار میں توسیع ، مثال کے طور پر:ETH_USDT,swap,buy,1
، اس میں سے کم سے کم مقدار کی قدر کو زومAmountRatio سے ضرب دیں۔
var amount = specifiedAmount == -1 ? action.amount : specifiedAmount
amount = zoomAmountRatio == -1 ? amount : amount * zoomAmountRatio
یہاں ایک کم مقدار ہے جس کی ضرورت ہوتی ہے جب تک کہ آپ کو موصول ہونے والے سگنل کی ضرورت ہوتی ہے.توسیعیامخصوص اقدار کی وضاحت کریں。
3، کوڈ کو جتنا ممکن ہو سکے کے طور پر ہلکا پھلکا، دوسرے سانچے کلاس لائبریریوں کا استعمال کرتے ہوئے عملدرآمد.
اس کے علاوہ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے:https://www.fmz.com/strategy/10989فیوچر کے لئے استعمال شدہ کلاسیں:https://www.fmz.com/strategy/203258
function trade(action) {
// 切换交易对,设置合约
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)
... اور اسی طرح.
پچھلا订单同步管理系统(Synchronous Server)
اس کے علاوہ، اس کے پاس ایک غیر معمولی کوڈ ہے:
اب دوبارہ ڈیزائن کرنا شروع کریں订单同步管理系统(Synchronous Server)
:
// 全局变量
var isStopFollow = false
var reStartPwd = null
function trade(action) {
// 切换交易对,设置合约
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 = {}
// 解析cmd ,例如: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() {
// 清除所有日志
LogReset(1)
if (isSimulateOKEX) {
exchange.IO("simulate", true)
Log("切换到OKEX模拟盘!")
}
// 设置精度
exchange.SetPrecision(pricePrecision, amountPrecision)
// 检查缩放、指定不能同时设置
if (specifiedAmount != -1 && zoomAmountRatio != -1) {
throw "不能同时指定同步量和缩放量"
}
while (true) {
var cmd = GetCommand()
if (cmd) {
Log("cmd: ", cmd)
var arr = cmd.split(":")
// 判断交互指令
if (arr.length == 2) {
// 带控件的按钮
if (arr[0] == "stop/restart") {
// 暂停/重启跟单
if (!isStopFollow) {
isStopFollow = true
reStartPwd = arr[1]
Log("已经停止跟单,", "设置的重启密码为:", reStartPwd, "#FF0000")
} else if (isStopFollow && arr[1] == reStartPwd) {
isStopFollow = false
reStartPwd = null
Log("已经重启跟单,", "清空重启密码。", "#FF0000")
} else if (isStopFollow && arr[1] != reStartPwd) {
Log("重启密码错误!")
}
}
continue
}
// 允许跟单
if (!isStopFollow) {
// 解析跟单信号交互指令
var objAction = parseCmd(cmd)
if (objAction) {
// 解析正确
var ret = trade(objAction)
} else {
Log("错误的信号指令 cmd:", cmd)
}
}
}
// 显示跟单情况
LogStatus(_D(), isStopFollow ? "停止同步" : "保持同步", "\n")
Sleep(1000)
}
}
اس بار بینڈ اکاؤنٹ میں بائننس ڈسک ٹیسٹ کا استعمال کیا گیا ہے ، اور بینڈ اکاؤنٹ میں OKEX اکاؤنٹ کا استعمال کیا گیا ہے۔ بینڈ اب بھی ٹیسٹ افعال کا استعمال کرتا ہے جو ہم نے پچھلے مضمون میں استعمال کیا تھا۔订单同步管理系统类库(Single Server)
ٹیمپلیٹ میںmain
فنکشن) ◄
لیکن ہم نے تجارت کی سمت کو خالی کرنے کے لئے تبدیل کر دیا ہے، اور تجارت کی مقدار 0.003 میں تبدیل کر دیا گیا ہے ((بائنن USDT مقامی معاہدے کو ایک چھوٹی سی تعداد میں آرڈر کیا جا سکتا ہے)). لیکن OKEX اکاؤنٹ کی فہرست ایک عدد ہونا ضروری ہے ((OKEX ایکسچینج کی فہرست ایک عدد ہونا ضروری ہے) لہذا میں نے ایک حکمت عملی کی وضاحت کی ہے کہ پیرامیٹرزspecifiedAmount
ایک ہے۔
订单同步管理系统类库(Single Server)
اس کے بعد ، ہم نے اس کے بارے میں مزید معلومات حاصل کیں۔
اس کے بعد ، ہم نے ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر.
اس کے بعد ، اس نے ایک اور آرڈر جاری کیا ، جس میں کہا گیا تھا:
اس کے بعد ہم نے اس کی جانچ پڑتال کی اور اس کی جانچ پڑتال کی، اس کے بعد ہم نے اس کی جانچ پڑتال کی.
اس کے بعد اس ڈسک کو دوبارہ چلائیں جو بینڈ کے لئے ذمہ دار ہے۔订单同步管理系统类库(Single Server)
)。
اس کے علاوہ ، یہ بھی ایک بار جب آپ نے اپنے کمپیوٹر پر ڈرائیو شروع کی ہے تو ، آپ کو ایک بار پھر اس کا استعمال کرنے کی ضرورت ہے۔
اسٹریٹجک ایڈریس:آرڈر سنک مینجمنٹ سسٹم کلاس لائبریری (Single Server) آرڈر سنکرونس مینجمنٹ سسٹم (Synchronous Server)
حکمت عملی ڈیزائن صرف تبادلہ سیکھنے کے لئے ہے، اصل پیداوار کو اپنے آپ کو تبدیل کرنے، ایڈجسٹ کرنے، بہتر بنانے کی ضرورت ہے.