উচ্চ-ফ্রিকোয়েন্সি কৌশল নকশা নিয়ে আলোচনা জাদুকরীভাবে পরিবর্তিত মুনাফা হার্ভেস্টার

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

উচ্চ-ফ্রিকোয়েন্সি কৌশল নকশা নিয়ে আলোচনা জাদুকরীভাবে পরিবর্তিত মুনাফা হার্ভেস্টার

পূর্ববর্তী নিবন্ধগুলিতে, আমরা উচ্চ-ফ্রিকোয়েন্সি মুনাফা হার্ভেস্টার কৌশলটির মূল স্পট সংস্করণের ধারণা এবং কোড বাস্তবায়ন বিশ্লেষণ করেছি।

লাভ হার্ভেস্টার বিশ্লেষণ (1) লাভ হার্ভেস্টার বিশ্লেষণ (2)

পরিমাণগত ক্রিপ্টোকারেন্সি সার্কেলের অনেক ব্যবহারকারীই মাস্টার নামে একটি কৌশল নিয়ে উদ্বিগ্ন।মুদ্রণ. কৌশলমুদ্রণBinance USDT চুক্তিতে ট্রেড করা হয়। অনেক অনুসারীদের পর্যবেক্ষণ এবং বিশ্লেষণ থেকে দেখা যায় যে উচ্চ-ফ্রিকোয়েন্সি কৌশলটি মুনাফা কাটার নীতির অনুরূপ (মাস্টার শাওচাওও বলেছিলেন যে উচ্চ-ফ্রিকোয়েন্সি কৌশলটি মুনাফা কাটার নীতির অনুরূপ) । তবে এমন কিছু সূক্ষ্মতা থাকতে হবে যা একটি কৌশলকে একটি স্থিতিশীল বিজয়ী হার এবং একটি উপযুক্ত লাভ-হানি অনুপাত থাকতে সক্ষম করে।

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

জাদুকরভাবে পরিবর্তিত মুনাফা ফসল কাটার

var TickInterval = 100

function LeeksReaper() {
    var self = {}
    self.numTick = 0
    self.lastTradeId = 0
    self.vol = 0
    self.askPrice = 0
    self.bidPrice = 0
    self.orderBook = {
        Asks: [],
        Bids: []
    }
    self.prices = []
    self.tradeOrderId = 0
    self.account = null
    self.buyPrice = 0
    self.sellPrice = 0
    self.state = 0
    self.depth = null

    self.updateTrades = function() {
        var trades = _C(exchange.GetTrades)
        if (self.prices.length == 0) {
            while (trades.length == 0) {
                trades = trades.concat(_C(exchange.GetTrades))
            }
            for (var i = 0; i < 15; i++) {
                self.prices[i] = trades[trades.length - 1].Price
            }
        }
        self.vol = 0.7 * self.vol + 0.3 * _.reduce(trades, function(mem, trade) {
            // Huobi not support trade.Id
            if ((trade.Id > self.lastTradeId) || (trade.Id == 0 && trade.Time > self.lastTradeId)) {
                self.lastTradeId = Math.max(trade.Id == 0 ? trade.Time : trade.Id, self.lastTradeId)
                mem += trade.Amount
            }
            return mem
        }, 0)

    }
    self.updateOrderBook = function() {
        var orderBook = _C(exchange.GetDepth)
        self.depth = orderBook
        self.buyPrice = orderBook.Bids[pendingLevel].Price
        self.sellPrice = orderBook.Asks[pendingLevel].Price
        self.orderBook = orderBook
        if (orderBook.Bids.length < 3 || orderBook.Asks.length < 3) {
            return
        }
        self.bidPrice = orderBook.Bids[0].Price * 0.618 + orderBook.Asks[0].Price * 0.382 + 0.01
        self.askPrice = orderBook.Bids[0].Price * 0.382 + orderBook.Asks[0].Price * 0.618 - 0.01
        self.prices.shift()
        self.prices.push(_N((orderBook.Bids[0].Price + orderBook.Asks[0].Price) * 0.15 +
            (orderBook.Bids[1].Price + orderBook.Asks[1].Price) * 0.1 +
            (orderBook.Bids[2].Price + orderBook.Asks[2].Price) * 0.1 +
            (orderBook.Bids[3].Price + orderBook.Asks[3].Price) * 0.075 +
            (orderBook.Bids[4].Price + orderBook.Asks[4].Price) * 0.05 +
            (orderBook.Bids[5].Price + orderBook.Asks[5].Price) * 0.025))
    }

    self.updateAccount = function() {
        var account = exchange.GetAccount()
        if (!account) {
            return
        }
        self.account = account
        LogProfit(parseFloat(account.Info.totalWalletBalance), account)
    }

    self.CancelAll = function() {
        while (1) {
            var orders = _C(exchange.GetOrders)
            if (orders.length == 0) {
                break
            }
            for (var i = 0; i < orders.length; i++) {
                exchange.CancelOrder(orders[i].Id)
            }
            Sleep(100)
        }
    }

    self.poll = function() {
        self.numTick++
        self.updateTrades()
        self.updateOrderBook()
        var pos = _C(exchange.GetPosition)

        var burstPrice = self.prices[self.prices.length - 1] * burstThresholdPct
        var bull = false
        var bear = false
        LogStatus(_D(), "\n", 'Tick:', self.numTick, 'self.vol:', self.vol, ', lastPrice:', self.prices[self.prices.length - 1], ', burstPrice: ', burstPrice)

        if (self.numTick > 2 && (
                self.prices[self.prices.length - 1] - _.max(self.prices.slice(-6, -1)) > burstPrice ||
                self.prices[self.prices.length - 1] - _.max(self.prices.slice(-6, -2)) > burstPrice && self.prices[self.prices.length - 1] > self.prices[self.prices.length - 2]
            )) {
            bull = true
        } else if (self.numTick > 2 && (
                self.prices[self.prices.length - 1] - _.min(self.prices.slice(-6, -1)) < -burstPrice ||
                self.prices[self.prices.length - 1] - _.min(self.prices.slice(-6, -2)) < -burstPrice && self.prices[self.prices.length - 1] < self.prices[self.prices.length - 2]
            )) {
            bear = true            
        }

        if (pos.length != 0) {
            if (pos[0].Type == PD_LONG) {
                self.state = 1
            } else {
                self.state = 2
            }
        } else {
            self.state = 0
        }


        if ((!bull && !bear)) {
            return
        }

        if (bull) {
            var price = (self.state == 0 || self.state == 1) ? self.buyPrice : self.depth.Bids[coverPendingLevel].Price
            var amount = (self.state == 0 || self.state == 1) ? pendingAmount : pos[0].Amount
            exchange.SetDirection("buy")
            exchange.Buy(price, amount)
        } else if (bear) {
            var price = (self.state == 0 || self.state == 2) ? self.sellPrice : self.depth.Asks[coverPendingLevel].Price
            var amount = (self.state == 0 || self.state == 2) ? pendingAmount : pos[0].Amount
            exchange.SetDirection("sell")
            exchange.Sell(price, amount)                    
        }
        self.numTick = 0
        Sleep(TickInterval)
        self.CancelAll()
        self.updateAccount()
    }

    while (!self.account) {
        self.updateAccount()
        Sleep(500)
    }
    Log("self.account:", self.account)

    return self
}

function main() {
    LogProfitReset()
    exchange.SetPrecision(pricePrecision, amountPrecision)
    exchange.SetContractType("swap")
    var reaper = LeeksReaper()  
    while (true) {
        reaper.poll()
        Sleep(100)
    }
}

img

সংশোধনের ধারণা

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

কৌশল মূলত মূল স্বল্পমেয়াদী মূল্য প্রবণতা ব্রেকআউট মানদণ্ড বজায় রাখে, এবং স্বল্পমেয়াদী মূল্য ব্রেকআউট পরিসীমা প্যারামিটার দ্বারা নিয়ন্ত্রিত হয়burstThresholdPct. সংক্ষিপ্ত মেয়াদী মূল্য নির্ধারণের মানদণ্ড অনুযায়ীbullঅথবাbear.

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

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

বট চালান

img

এটা দেখা যায় যে বাজারের পরিস্থিতি সক্রিয় না হলে পজিশন খোলার এবং বন্ধ করা আরও কঠিন।

কৌশল অপ্টিমাইজেশন

বর্তমানে, কোন ভাল অপ্টিমাইজেশান দিক পাওয়া যায়নি। আগ্রহী শিক্ষার্থীরা সক্রিয়ভাবে কথা বলতে পারে এবং এটি নিয়ে একসাথে আলোচনা করতে পারে।

কৌশল ঠিকানাঃhttps://www.fmz.com/strategy/260806

কৌশলটি শুধুমাত্র অধ্যয়নের জন্য; যখন বাজারটি সমতল থাকে, তখন এটিকে বটে চালানো ক্ষতি করতে পারে।


আরো