রিসোর্স লোড হচ্ছে... লোডিং...

ক্রিপ্টোকারেন্সি স্পট এর একটি সহজ অর্ডার সুপারভাইজিং বট উপলব্ধি করুন

লেখক:নিনাবাদাস, সৃষ্টিঃ ২০২২-০৪-১১ 11:54:34, আপডেটঃ ২০২২-০৪-১১ 11:55:08

ক্রিপ্টোকারেন্সি স্পট এর একটি সহজ অর্ডার সুপারভাইজিং বট উপলব্ধি করুন

ক্রিপ্টোকারেন্সি সার্কেলের অনেক বন্ধু আছে যাদের একটি অর্ডার সুপারভাইজিং বট দরকার, কিন্তু তারা শূন্য মৌলিক যখন তারা প্রোগ্রাম্যাটিক ডিজাইন দিয়ে শুরু করতে দীর্ঘ সময় ভোগ করছে। এই ধরনের প্রয়োজনের উপর ভিত্তি করে, এই নিবন্ধে, আমরা একটি সহজ স্পট অর্ডার সুপারভাইজিং বট ডিজাইন করব শূন্য মৌলিক সহ বন্ধুদের প্রোগ্রাম ট্রেডিং শিখতে সাহায্য করার জন্য।

প্রথমত, আসুন প্রয়োজনীয়তা বিশ্লেষণ করা যাক. এই বট ফাংশন বুঝতে হয় যে যখন একটি অ্যাকাউন্ট একটি কিনতে বা বিক্রয় অপারেশন আছে, অর্ডার তত্ত্বাবধান অন্যান্য অ্যাকাউন্ট অনুসরণ এবং অপারেশন চালানো হবে. সুতরাং, আমরা প্রথমে দুটি বিষয় সংজ্ঞায়িত করিঃ

  • রেফারেন্স অ্যাকাউন্টঃ যে অ্যাকাউন্টের ওপর নজরদারি করা হয়, তার প্রতিটি কর্মের ওপর নজরদারি করা হয়।
  • অর্ডার তত্ত্বাবধানের অ্যাকাউন্টঃ অর্ডার তত্ত্বাবধানের অ্যাকাউন্ট; যখন রেফারেন্স অ্যাকাউন্টে একটি কর্ম থাকে, তখন অর্ডার তত্ত্বাবধানের অ্যাকাউন্ট একই কর্ম সম্পাদন করবে।

এই প্রয়োজনীয়তা প্রাথমিকভাবে স্পষ্ট করার পরে, আমরা পরবর্তী পদক্ষেপ সম্পর্কে চিন্তা চালিয়ে যাচ্ছি। আমরা কিভাবে রেফারেন্স অ্যাকাউন্টের প্রতিটি কর্ম সনাক্ত করতে পারি?

রেফারেন্স অ্যাকাউন্ট পর্যবেক্ষণ করুন। স্পট ট্রেডিং অ্যাকাউন্টগুলির জন্য এটি খুব সহজ। আমাদের কেবলমাত্র সর্বশেষ অ্যাকাউন্ট তথ্যের ডেটাতে বর্তমান প্রতীক পরিমাণের সাথে সর্বশেষ অ্যাকাউন্ট তথ্যের ডেটা প্রাপ্ত প্রতীক পরিমাণের তুলনা করতে হবে। যদি বর্তমানে প্রাপ্ত সর্বশেষ অ্যাকাউন্ট তথ্য ডেটাতে প্রতীক পরিমাণ পূর্ববর্তী রেকর্ডের চেয়ে বেশি হয়, এটি প্রমাণ করে যে রেফারেন্স অ্যাকাউন্টটি একটি ক্রয় অপারেশন সম্পাদন করেছে এবং কার্যকরকরণ সফল হয়েছে। বিপরীতভাবে, যদি কম প্রতীক থাকে তবে একটি বিক্রয় অপারেশন রেফারেন্স অ্যাকাউন্টের জন্য সম্পাদিত হয়। আমরা অ্যাকশনটি সনাক্ত করার পরে, অন্যান্য প্ল্যাটফর্ম অ্যাকাউন্টগুলি একই অপারেশন সম্পাদন করতে দিন।

যখন দেখা যায় যে রেফারেন্স অ্যাকাউন্টটি একটি ট্রেড করেছে, তখন সর্বশেষ অ্যাকাউন্টের তথ্য রেকর্ডটি আপডেট করা হবে যাতে এটি পরবর্তীবার প্রাপ্ত অ্যাকাউন্টের তথ্যের সাথে তুলনা করা যায় যাতে নতুন ট্রেডিং অ্যাকশন আছে কিনা তা নির্ধারণ করা যায়।

উপরের লজিকের কৌশল কোড বর্ণনাঃ

        // 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 

কৌশল প্রধান সনাক্তকরণ যুক্তি উপরের কোড. নকশা সহজ করার জন্য, কৌশল অফিসিয়াল FMZ ব্যবহার করে [ডিজিটাল মুদ্রা ট্রেডিং লাইব্রেরি] টেমপ্লেট, এবং$.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

তারপর, আমরা ম্যানুয়ালি একটি অর্ডার স্থাপন FMZ ট্রেডিং টার্মিনালে দেখতে যদি বট স্বয়ংক্রিয়ভাবে অর্ডার তদারকি করতে পারে.

img

আপনি দেখতে পাচ্ছেন যে বট ট্রেড সনাক্ত করেছে এবং অর্ডার তত্ত্বাবধানের অপারেশনটি করেছে।

img

সম্পূর্ণ কৌশল:https://www.fmz.com/strategy/255182

কৌশলটি শুধুমাত্র অধ্যয়নের জন্য। যদি কোন প্রশ্ন থাকে, তাহলে আমরা কৃতজ্ঞ হবো যদি আপনি এটি সম্পর্কে মন্তব্য করেন।


আরো