سکوں کے حلقے میں بہت سے دوست ہیں جو دستی طور پر تجارت کرتے ہیں ، لیکن پھر بھی 0 بنیادی طور پر سیکھنے کے لئے روبوٹ کی ضرورت ہوتی ہے ، لیکن پھر بھی پروگرامنگ ڈیزائن کے آغاز میں زیادہ وقت لگتا ہے۔ ہم نے اس طرح کی ضروریات کی بنیاد پر اس مضمون کو ایک ساتھ مل کر ایک سادہ فوری طور پر روبوٹ ڈیزائن کیا ہے ، تاکہ سکوں کے حلقے کے دوستوں کو 0 بنیادی سیکھنے میں مدد ملے۔
سب سے پہلے ہم مطالبات کا تجزیہ کرتے ہیں، اس روبوٹ کا کام یہ ہے کہ جب ایک اکاؤنٹ میں خرید و فروخت کی کارروائی ہوتی ہے تو دوسرے اکاؤنٹس کو اس کارروائی کو انجام دینے کے لئے عملدرآمد کیا جاتا ہے۔ لہذا ، ہم پہلے دو موضوعات کو واضح کرتے ہیں:
یہ ضروری ہے کہ پہلے سے ہی واضح ہو جائے، اور اگلے مرحلے کے بارے میں سوچنا جاری رکھیں؛ ہم کس طرح حوالہ اکاؤنٹس کی شناخت کرتے ہیں؟
ریفرنس اکاؤنٹس کی نگرانی ، جو کہ نقد اکاؤنٹس کے لئے بہت آسان ہے ، ہم صرف حالیہ اکاؤنٹ کی معلومات کے اعداد و شمار میں سکے کی تعداد کا موازنہ کرتے ہوئے موجودہ تازہ ترین اکاؤنٹ کی معلومات کے اعداد و شمار میں سکے کی تعداد کا موازنہ کرسکتے ہیں۔ اگر موجودہ اکاؤنٹ کی تازہ ترین معلومات کے اعداد و شمار میں موجود سکے کی تعداد پچھلے ریکارڈ سے زیادہ ہے تو ، اس بات کا ثبوت ہے کہ حوالہ اکاؤنٹ نے ایک بار خریداری کی اور خریداری کامیاب ہوگئی ہے۔ اس کے برعکس ، اگر سکے کم ہیں تو ، حوالہ اکاؤنٹ کے لئے ایک بار فروخت کی کارروائی کی جائے گی۔ جب ہم اس کارروائی کا پتہ لگاتے ہیں تو ، دوسرے ایکسچینج اکاؤنٹس کو بھی ایسا ہی کرنے دیں۔
جب یہ پتہ چلتا ہے کہ حوالہ اکاؤنٹ نے ایک ٹرانزیکشن کو انجام دیا ہے، تو یہ یقینی بنانا ضروری ہے کہ تازہ ترین اکاؤنٹ کے اعداد و شمار کے ریکارڈ کو اپ ڈیٹ کیا جائے تاکہ یہ معلوم کیا جا سکے کہ آیا کوئی نئی ٹرانزیکشن کی سرگرمی ہے.
اس کے علاوہ ، آپ کو اس کے بارے میں مزید جاننے کی ضرورت ہے۔
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) // 检测币数发生的变化
var func = null
if (amount > 0) { // 币变多了
func = $.Buy // 买入
} else if (amount < 0) { // 币变少了
func = $.Sell // 卖出
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) { // i 等于 0 时,是参考交易所,不处理,处理其它的跟单交易所
func(exchanges[i], Math.abs(amount)) // 执行具体的交易函数,可能是$.Buy 或者是 $.Sell ,具体看amount 是大于0,还是小于0
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc // 更新参考交易所最近一次的账户信息,用于下次对比
اس حکمت عملی کا بنیادی پتہ لگانے کا منطق مندرجہ بالا کوڈ ہے۔ آسان ڈیزائن کے لئے ، اس حکمت عملی نے ایف ایم زیڈ کے سرکاری ایمیزون ڈیجیٹل کرنسی ٹرانزیکشن لائبریری ایمیزون ٹیمپلیٹ کا استعمال کیا ہے۔$.Buy
, $.Sell
یہ سب اس ٹیمپلیٹ کے افعال ہیں، جس کا کام مندرجہ ذیل عمل کو انجام دینا ہے۔
اس کے علاوہ ، اس پالیسی میں کچھ اسٹیٹس ٹیبز بھی شامل کیے گئے ہیں ، تاکہ ہر اکاؤنٹ کے اعداد و شمار کی نگرانی کی جاسکے۔
function test() {
// 测试函数
var ts = new Date().getTime()
if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) {
Sleep(1000 * 60 * 10)
var x = Math.random()
if (x > 0.5) {
$.Buy(exchange, x / 10)
} else {
$.Sell(exchange, x / 10)
}
}
}
function main() {
LogReset(1)
if (exchanges.length < 2) {
throw "没有跟单的交易所"
}
var exName = exchange.GetName()
// 检测参考交易所
if (exName.includes("Futures_")) {
throw "仅支持现货跟单"
}
Log("开始监控", exName, "交易所", "#FF0000")
// 检测跟单交易所
for (var i = 1 ; i < exchanges.length ; i++) {
if (exchanges[i].GetName().includes("Futures_")) {
throw "不支持期货交易所跟单"
}
}
var initAcc = _C(exchange.GetAccount)
while(1) {
if(IsVirtual()) {
// 测试函数
test()
}
Sleep(5000)
// 更新参考账户当前的账户信息
var nowAcc = _C(exchange.GetAccount)
// 参考交易所账户信息
var refTbl = {
type : "table",
title : "参考交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
// 跟单交易所账户信息
var followTbl = {
type : "table",
title : "跟单交易所",
cols : ["名称", "币", "冻结币", "钱", "冻结钱"],
rows : []
}
for (var i = 1 ; i < exchanges.length ; i++) {
var acc = _C(exchanges[i].GetAccount)
var name = exchanges[i].GetName()
followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance])
}
// 状态栏显示
LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
// 检测跟单
var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)
var func = null
if (amount > 0) {
func = $.Buy
} else if (amount < 0) {
func = $.Sell
} else {
continue
}
// 执行跟单
Log("跟单!数量:", Math.abs(amount), "#FF0000")
for (var i = 1 ; i < exchanges.length ; i++) {
func(exchanges[i], Math.abs(amount))
}
// 执行跟单之后更新参考交易所账户信息记录
initAcc = nowAcc
}
}
آئیے ایک حقیقی ٹیسٹ کرتے ہیں، ایف ایم زیڈ کا استعمال کرتے ہوئے ایک ویکس ایپ سمیلیٹر ایکسچینج۔ یہاں میں نے تین ویکس ایپ اکاؤنٹس شامل کیے ہیں، جو ایک دوسرے سے الگ الگ اکاؤنٹس ہیں۔ ایک حوالہ تبادلہ کے طور پر اور دوسرے دو ٹریکنگ کے طور پر۔
اس کے بعد ہم ایف ایم زیڈ کے ٹرانزیکشن ٹرمینل کا استعمال کرتے ہوئے دستی طور پر اگلی بُک بھیجتے ہیں اور دیکھتے ہیں کہ آیا روبوٹ خود بخود ادائیگی کرتا ہے۔
آپ دیکھ سکتے ہیں کہ روبوٹ نے ٹرانزیکشن کا پتہ لگایا اور عملدرآمد کیا.
مکمل حکمت عملی:https://www.fmz.com/strategy/255182
یہ حکمت عملی صرف سیکھنے کے لیے ہے۔ اگر آپ کے پاس کوئی سوال ہے تو شکریہ۔
سیائیہیلو ، کیا آپ اس کی تعیناتی میں مدد کر سکتے ہیں ، ادائیگی کی درخواست کریں۔ شکریہ۔
سیائیہیلو ، کیا آپ اس کی تعیناتی میں مدد کر سکتے ہیں ، ادائیگی کی درخواست کریں۔ شکریہ۔
موٹا بچہکیا آپ کو معلوم ہے کہ آپ کے پاس کیا ہے؟
13169222039ہیلو، میں آپ کو ایک سوال پوچھنا چاہتا ہوں، کیا آپ کو اس شخص کا کوڈ مل سکتا ہے جو ایک سکوں پر ہے؟
ایجاد کاروں کی مقدار - خواباس حکمت عملی کا کوڈ اوپن سورس ہے ، حکمت عملی کو حکمت عملی اسکوائر پر شائع کیا گیا ہے ، جہاں ایف ایم زیڈ کمیونٹی کے ذریعہ تیار کردہ سبق کو دیکھا جاسکتا ہے ، ابتدائی سبق تعلیم کے لئے استعمال کیا جاتا ہے ، اور بنیادی استعمال کو تعینات کیا جاسکتا ہے۔
روٹمیاگر آپ کے پاس کوئی ٹرانزیکشن نہیں ہے تو ، آپ کے پاس ایک ٹرانزیکشن نہیں ہے۔