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

৬০ লাইনের কোড এক চিন্তাভাবনা বাস্তবায়ন - চুক্তির নীচের মাছধরা

লেখক:নিনাবাদাস, সৃষ্টিঃ ২০২২-০৪-০২ ১৮ঃ২৭ঃ৫৪, আপডেটঃ ২০২২-০৪-০২ ১৮ঃ২৯ঃ৪৭

৬০ লাইনের কোড এক চিন্তাভাবনা বাস্তবায়ন - চুক্তির নীচের মাছধরা

গ্রিড কৌশল এবং Martingale কৌশল, যা বাজার কোট oscillate করতে পছন্দ করে, অন্তর্নিহিত অসুবিধা আছে, এবং অনুরূপ কৌশল ETH চুক্তি বাজারে একটি সময়ের জন্য পরীক্ষা করা হয়েছে.FMZ.COM. এই ধরনের কৌশল সম্পর্কে আমি আমার এক বন্ধুর সাথে একমত যে, এটি মুদ্রা বৃত্তে চুক্তি করা, এবং লং করার ঝুঁকি শর্ট করার চেয়ে কম। অথবা সহজভাবে বলতে গেলে, সবচেয়ে খারাপ পতন শূন্যে ফিরে আসা, কিন্তু বৃদ্ধি অসীম।

সুতরাং, মার্টিনগেল এবং গ্রিডের মতো কৌশলগুলি কি কেবল দীর্ঘ, তবে সংক্ষিপ্ত নয়? দ্বিপাক্ষিক করার চেয়ে দীর্ঘ পরিসরে নীচের মাছ ধরার ঝুঁকি ছড়িয়ে দেওয়া কি ভাল? এই ধারণাটি খুব ভাল শোনাচ্ছে, তবে এটি প্রকৃত লড়াইয়ের প্রতিরোধ করতে পারে কিনা তা কেউ জানে না। তবে কমপক্ষে আমরা কেবল এই ধারণাটি ব্যাকটেস্ট করতে পারি। অতএব, আমাদের আজকের নিবন্ধের বিষয় রয়েছে - একটি চুক্তি নীচের মাছ ধরার কৌশল ডিজাইন করুন।

দ্রুত উন্নয়নFMZ.COM

এই ধারণা বাস্তবায়নের জন্য কোডটি খুব সহজ, নমনীয়তা, ইন্টারফেস ইনক্যাপসুলেশন এবং এফএমজেড প্ল্যাটফর্মের শক্তিশালী ব্যাকটেস্ট সিস্টেম ইত্যাদির জন্য ধন্যবাদ। পুরো কোডটি মাত্র 60 টি লাইন (কোড লেখার স্পেসিফিকেশনের জন্য, অনেকগুলি লাইন যা সংক্ষিপ্ত করা যেতে পারে, সংক্ষিপ্ত করা হয় না) ।

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

কৌশল উৎস কোডঃ

function cancelAll() {
    while (true) {
        var orders = _C(exchange.GetOrders)
        if (orders.length == 0) { 
            break 
        }
        for (var i = 0 ; i < orders.length ; i++) {
            exchange.CancelOrder(orders[i].Id, orders[i])
            Sleep(interval)
        }
    }
}

function getLong(arr, kind) {
    var ret = null 
    for (var i = 0 ; i < arr.length ; i++) {
        if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) {
            ret = arr[i]
        }
    }
    return ret
}

function pendingBidOrders(firstPrice) {
    var index = 0
    var amount = baseAmount
    while (true) {
        var pos = _C(exchange.GetPosition)
        var price = firstPrice - index * baseSpacing
        amount *= ratio
        index++
        exchange.SetDirection("buy")
        exchange.Buy(price, amount)        
        if (pos.length != 0) {
            var longPos = getLong(pos, "pos")
            if (longPos) {
                exchange.SetDirection("closebuy")
                exchange.Sell(longPos.Price + profitTarget, longPos.Amount)
            }
        }
        while (true) {
            Sleep(interval)
            if (!getLong(_C(exchange.GetOrders), "orders")) {
                cancelAll()
                break
            }
            if (!getLong(_C(exchange.GetPosition), "pos")) {
                cancelAll()
                return 
            }
        }
    }
}

function main() {
    exchange.SetContractType(symbol)
    while (true) {
        pendingBidOrders(_C(exchange.GetTicker).Last)
    }
}

পরামিতিগুলির নকশাও খুব সহজঃ

img

এখানে মাত্র কয়েকটা প্যারামিটার আছে।

আসুন দেখি কয়েক ডজন লাইন কোডের ব্যাকটেস্ট ফলাফল

ব্যাকটেস্ট সময় পরিসীমা এলোমেলোভাবে সেট করুনঃ

img

ব্যাকটেস্টঃ

img

img

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

উপরের কৌশল কোডগুলি শুধুমাত্র গবেষণা এবং গবেষণার জন্য ব্যবহৃত হয়।


আরো