وسائل لوڈ ہو رہے ہیں... لوڈنگ...

Cryptocurrency سپاٹ کی ایک سادہ آرڈر نگرانی بوٹ کا احساس

مصنف:نینا باداس, تخلیق: 2022-04-11 11:54:34, تازہ کاری: 2022-04-11 11:55:08

Cryptocurrency سپاٹ کی ایک سادہ آرڈر نگرانی بوٹ کا احساس

کریپٹوکرنسی حلقے میں بہت سارے دوست ہیں جنھیں آرڈر سپروائزنگ بوٹ کی ضرورت ہے ، لیکن جب ان کے پاس صفر بیسک ہوتا ہے تو وہ پروگرامٹک ڈیزائن کے ساتھ شروع کرنے میں طویل وقت سے دوچار ہوتے ہیں۔ اس طرح کی ضروریات کی بنیاد پر ، اس مضمون میں ، ہم ایک سادہ اسپاٹ آرڈر سپروائزنگ بوٹ ڈیزائن کریں گے تاکہ ان دوستوں کی مدد کی جاسکے جن کے پاس صفر بیسک ہے پروگرام ٹریڈنگ سیکھنے کے لئے۔

سب سے پہلے ، آئیے اس کی ضرورت کا تجزیہ کریں۔ اس بوٹ کا کام یہ سمجھنا ہے کہ جب کسی اکاؤنٹ میں خریداری یا فروخت کا عمل ہوتا ہے تو ، آرڈر کی نگرانی کرنے والے دوسرے اکاؤنٹس بھی اس عمل کی پیروی کریں گے اور اسے انجام دیں گے۔ تو، ہم سب سے پہلے 2 مضامین کی وضاحت:

  • ریفرنس اکاؤنٹ: زیر نگرانی اکاؤنٹ، جس کے ہر عمل کی نگرانی کی جاتی ہے۔
  • آرڈر سپروائزنگ اکاؤنٹ: آرڈر سپروائزنگ اکاؤنٹ۔ جب ریفرنس اکاؤنٹ میں ایکشن ہوتا ہے تو آرڈر سپروائزنگ اکاؤنٹ ایک ہی کارروائی کرے گا۔

اس شرط کو ابتدائی طور پر واضح کرنے کے بعد ، ہم اگلے مرحلے کے بارے میں سوچتے رہتے ہیں۔ ہم حوالہ اکاؤنٹ کی ہر کارروائی کی شناخت کیسے کرسکتے ہیں؟

حوالہ اکاؤنٹ کی نگرانی کریں۔ اسپاٹ ٹریڈنگ اکاؤنٹس کے لئے یہ بہت آسان ہے۔ ہمیں صرف تازہ ترین اکاؤنٹ کی معلومات کے اعداد و شمار میں علامت کی رقم کا حالیہ اکاؤنٹ کی معلومات کے اعداد و شمار میں موجودہ علامت کی رقم سے موازنہ کرنے کی ضرورت ہے۔ اگر موجودہ حاصل کردہ تازہ ترین اکاؤنٹ کی معلومات کے اعداد و شمار میں علامت کی رقم پچھلے ریکارڈ سے زیادہ ہے تو ، اس سے یہ ثابت ہوتا ہے کہ حوالہ اکاؤنٹ نے خریداری کا آپریشن انجام دیا ہے اور عملدرآمد کامیاب رہا ہے۔ اس کے برعکس ، اگر کم علامتیں ہیں تو ، حوالہ اکاؤنٹ کے لئے فروخت کا آپریشن انجام دیا جاتا ہے۔ جب ہم اس کارروائی کا پتہ لگاتے ہیں تو ، دوسرے پلیٹ فارم اکاؤنٹس کو وہی آپریشن انجام دینے دیں۔

جب یہ معلوم ہوتا ہے کہ ریفرنس اکاؤنٹ نے تجارت کی ہے تو ، اکاؤنٹ کے تازہ ترین ڈیٹا ریکارڈ کو اپ ڈیٹ کیا جانا چاہئے تاکہ اس کا موازنہ اگلی بار حاصل کردہ اکاؤنٹ کی معلومات سے کیا جاسکے تاکہ یہ معلوم کیا جاسکے کہ آیا کوئی نئی تجارتی کارروائی ہوئی ہے۔

مندرجہ بالا منطق کی حکمت عملی کوڈ کی وضاحت:

        // detect order supervising
        var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks)  // detect the currency amount changes 
        var func = null 
        if (amount > 0) {   // the amount increased 
            func = $.Buy    // buy
        } else if (amount < 0) {  // the amount decreased 
            func = $.Sell         // sell 
        } else {
            continue
        }
        
        // execute order supervising 
        Log("Order supervising! Amount:", Math.abs(amount), "#FF0000")
        for (var i = 1 ; i < exchanges.length ; i++) {    // when i equals 0, it indicates the reference platform, not to be processed; process other order supervising platforms 
            func(exchanges[i], Math.abs(amount))          // execute the specified trading function, and it could be $.Buy or $.Sell, which needs to be determined by observing whether amount is larger than 0 or less than 0
        }
        
        // update the information record of the reference account after order supervising 
        initAcc = nowAcc                                  // update the latest account information of the reference platform, to compare it with the next one 

حکمت عملی کا بنیادی پتہ لگانے کا منطق مندرجہ بالا کوڈ ہے۔ ڈیزائن کو آسان بنانے کے ل the ، حکمت عملی سرکاری ایف ایم زیڈ [ڈیجیٹل کرنسی ٹریڈنگ لائبریری] ٹیمپلیٹ کا استعمال کرتی ہے ، اور$.Buyاور$.Sellتمام افعال ٹیمپلیٹ کے ہیں، فنکشن آرڈر آپریشنز کو انجام دینے کے لئے ہے.

ہر اکاؤنٹ کے اعداد و شمار کی نگرانی کو آسان بنانے کے لئے حکمت عملی میں کچھ اسٹیٹس بار ڈسپلے شامل کریں۔ مکمل حکمت عملی مندرجہ ذیل ہے:

function test() { 
    // test function 
    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 "no platform of order supervising"
    }
    var exName = exchange.GetName()
    // detect the reference platform 
    if (exName.includes("Futures_")) {
        throw "only support sport order supervising"
    }
    Log("start monitoring", exName, "platform", "#FF0000")
    
    // detect the order supervising platforms 
    for (var i = 1 ; i < exchanges.length ; i++) {
        if (exchanges[i].GetName().includes("Futures_")) {
            throw "Do not support the order supervising of futures platfroms"
        }
    }
    
    var initAcc = _C(exchange.GetAccount)
    while(1) {
        if(IsVirtual()) {
           // test function
           test()  
        }  
        Sleep(5000)
        
        // update the current information of the reference account 
        var nowAcc = _C(exchange.GetAccount)
        
        // the account information of the reference platform
        var refTbl = {
            type : "table", 
            title : "reference platform",
            cols : ["name", "symbol", "frozen symbol", "assets", "frozen assets"],
            rows : []
        }
        refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance])
        
        // the account information of the order supervising platform
        var followTbl = {
            type : "table", 
            title : "order supervising platform",
            cols : ["name", "symbol", "frozen symbol", "assets", "frozen assets"],
            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])
        }
        
        // status bar display 
        LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`")
        
        // detect order supervising 
        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
        }
        
        // execute order supervising 
        Log("Order supervising! Amount:", Math.abs(amount), "#FF0000")
        for (var i = 1 ; i < exchanges.length ; i++) {            
            func(exchanges[i], Math.abs(amount))
        }
        
        // update the information record of the reference account after order supervising 
        initAcc = nowAcc
    }
}

آئیے اسے حقیقی بوٹ پر آزمائیں ، ایف ایم زیڈ ویکس ایپ سمیلیشن پلیٹ فارم کے ذریعہ ٹیسٹ کرنے کے لئے۔ یہاں میں نے تین ویکس ایپ اکاؤنٹس شامل کیے ہیں ، جن میں سے سب آزاد اکاؤنٹس ہیں۔ ان میں سے ایک حوالہ پلیٹ فارم کے طور پر کام کرتا ہے ، اور دوسرے دو آرڈر سپروائزنگ پلیٹ فارم کے طور پر کام کرتے ہیں۔

img

پھر، ہم نے دستی طور پر ایف ایم زیڈ ٹریڈنگ ٹرمینل کے ذریعے ایک آرڈر دیا تاکہ یہ دیکھیں کہ کیا روبوٹ خود بخود آرڈر کی نگرانی کرسکتا ہے۔

img

آپ دیکھ سکتے ہیں کہ بوٹ نے تجارت کا پتہ لگایا اور آرڈر سپروائزنگ آپریشن انجام دیا۔

img

مکمل حکمت عملی:https://www.fmz.com/strategy/255182

یہ حکمت عملی صرف مطالعہ کے لیے ہے۔ اگر کوئی سوال ہے تو ہم اس کی تعریف کریں گے اگر آپ اس پر تبصرے چھوڑیں۔


مزید