ہائی فریکوئینسی حکمت عملی ڈیزائن پر بحث جادوئی طور پر ترمیم شدہ منافع کاٹنے والا

مصنف:نینا باداس, تخلیق: 2022-04-25 11:49:11, تازہ کاری: 2022-04-25 12:04:06

ہائی فریکوئینسی حکمت عملی ڈیزائن پر بحث جادوئی طور پر ترمیم شدہ منافع کاٹنے والا

پچھلے مضامین میں، ہم نے اعلی تعدد کے منافع کٹائی کی حکمت عملی کے اصل اسپاٹ ورژن کے خیالات اور کوڈ کے نفاذ کا تجزیہ کیا.

منافع کاٹنے والا تجزیہ (1) منافع کاٹنے والا تجزیہ (2)

مقداری cryptocurrency دائرے میں بہت سے صارفین کو ایک ماسٹر کی طرف سے تیار کی حکمت عملی کے بارے میں بہت فکر مند ہیںپیسہ چھاپناکی حکمت عملی.پیسہ چھاپنابائننس یو ایس ڈی ٹی معاہدے میں تجارت کی جاتی ہے۔ بہت سے پیروکاروں کے مشاہدے اور تجزیے سے یہ دیکھا جاسکتا ہے کہ اعلی تعدد کی حکمت عملی منافع کٹانے والے کے اصول سے ملتی جلتی ہے (ماسٹر شیاؤ کاؤ نے یہ بھی کہا کہ اعلی تعدد کی حکمت عملی کا اصول منافع کٹانے والے سے ملتا جلتا ہے) ۔ لیکن کچھ لطیفیت ہونی چاہئے جو حکمت عملی کو مستحکم جیت کی شرح اور مناسب منافع سے نقصان کا تناسب حاصل کرنے کے قابل بناتی ہے۔

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

جادوئی طور پر تبدیل شدہ منافع کاٹنے والا

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.

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

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

بوٹ میں چلائیں

img

یہ دیکھا جاسکتا ہے کہ جب مارکیٹ کی صورتحال فعال نہیں ہوتی ہے تو پوزیشن کھولنا اور بند کرنا زیادہ مشکل ہوتا ہے۔

حکمت عملی کی اصلاح

فی الحال، کوئی اچھی اصلاح کی سمت نہیں ملی ہے. طالب علم، جو دلچسپی رکھتے ہیں، فعال طور پر بات کر سکتے ہیں اور اس پر ایک ساتھ بحث کر سکتے ہیں.

حکمت عملی کا پتہ:https://www.fmz.com/strategy/260806

یہ حکمت عملی صرف مطالعہ کے لیے ہے۔ جب مارکیٹ فلیٹ ہو، تو اسے بوٹ میں چلانے سے نقصان ہو سکتا ہے۔


مزید