4
ফোকাস
1271
অনুসারী

পরিবর্তিত লিক হারভেস্টার থেকে উচ্চ-ফ্রিকোয়েন্সি কৌশল ডিজাইনের উপর আলোচনা

তৈরি: 2021-03-09 13:41:54, আপডেট করা হয়েছে: 2023-09-26 20:53:41
comments   21
hits   8484

পরিবর্তিত লিক হারভেস্টার থেকে উচ্চ-ফ্রিকোয়েন্সি কৌশল ডিজাইনের উপর আলোচনা

পরিবর্তিত লিক হারভেস্টার থেকে উচ্চ-ফ্রিকোয়েন্সি কৌশল ডিজাইনের উপর আলোচনা

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

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

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

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

জাদুকরী পরিবর্তিত লিক হারভেস্টার

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)
    }
}

পরিবর্তিত লিক হারভেস্টার থেকে উচ্চ-ফ্রিকোয়েন্সি কৌশল ডিজাইনের উপর আলোচনা

কৌশল পরিবর্তন ধারনা

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

কৌশলটি মূলত মূল স্বল্প-মেয়াদী মূল্য প্রবণতা অগ্রগতি বিচারের মানদণ্ড ধরে রাখে স্বল্প-মেয়াদী মূল্য অগ্রগতি পরিসীমা পরামিতি দ্বারা নির্ধারিত হয়।burstThresholdPctনিয়ন্ত্রণ, এই রায় শর্ত উপর ভিত্তি করে, স্বল্পমেয়াদী মূল্য বিচার করা হয়bull(গরু), বাbear(ভাল্লুক)।

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

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

কিছুক্ষণ দৌড়ান

পরিবর্তিত লিক হারভেস্টার থেকে উচ্চ-ফ্রিকোয়েন্সি কৌশল ডিজাইনের উপর আলোচনা

এটি দেখা যায় যে বাজার সক্রিয় না থাকলে অবস্থানগুলি খোলা এবং বন্ধ করা আরও কঠিন।

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

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

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

এই কৌশলটি শুধুমাত্র শেখার উদ্দেশ্যে, এবং বাজার সমতল থাকলে প্রকৃত ট্রেডিং ক্ষতির কারণ হতে পারে।