Rancangan strategi frekuensi tinggi dari mesin pemetik lobak Magic

Penulis:Mimpi kecil, Dicipta: 2021-03-09 13:41:54, Dikemas kini: 2023-09-26 20:53:41

img

Rancangan strategi frekuensi tinggi dari mesin pemetik lobak Magic

Dalam beberapa artikel sebelum ini, kami telah menganalisis idea dan pelaksanaan kod untuk strategi frekuensi tinggi untuk mesin pemetik ketumbar versi asli.

Penggambaran teknik mesin pemetik lobak (1) Penggambaran teknik mesin pemetik ketumbar (2)

Banyak pengguna yang lebih berminat dengan pengukuran lingkaran wang.cetak wangTaktik yang digunakan oleh orang ramai.cetak wangStrategi yang digunakan adalah perdagangan kontrak USDT. Dari pemerhatian dan analisis ramai peminat, strategi frekuensi tinggi ini menyerupai mesin pemetik lobak (Grassin juga mengatakan bahawa prinsip strategi frekuensi tinggi lebih hampir). Tetapi pasti ada kesukaran untuk mencapai strategi yang mempunyai kadar kemenangan yang stabil dan nisbah kerugian yang sesuai.

Oleh itu, kanak-kanak yang mahir dalam teknik tidak dapat menahan diri untuk mengubah sihir, walaupun kesan strategi yang diubah oleh sihir telah ditekan menjadi sampah oleh taktik dewa-dewa besar. Tetapi juga merupakan amalan pembelajaran untuk strategi frekuensi tinggi, rakan sekelas FM Zer yang berminat boleh datang bersama untuk meneroka, belajar.

Mesin pemetik lobak yang telah diubahsuai

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

Strategi mengubah pemikiran

Strategi ini dirancang untuk digunakan untuk berdagang di pasaran kontrak USDT Binance, kontrak Binance menyokong pegangan satu arah. Oleh itu, strategi ini diubah reka bentuk mengikut ciri pegangan satu arah (penguatan strategi yang lebih mudah untuk pegangan satu arah), tidak mempertimbangkan pegangan, hanya mempertimbangkan membeli dan menjual.

Strategi ini sebahagian besarnya mengekalkan kriteria penentuan trend harga jangka pendek asal, dan lebar harga jangka pendek dipengaruhi oleh parameter.burstThresholdPctPengendalian, berdasarkan kriteria ini untuk menilai harga jangka pendek adalahbull(Sapi) ataubear(Beruang)

Kaedah ini menghilangkan beberapa modul dalam versi asal, seperti modul imbangan. Perubahan yang lebih besar adalah mengubah pesanan bawah untuk meletakkan pesanan di dalam lembaran pesanan, menunggu transaksi. Menjangkakan untuk membuka dagangan dengan kos yang lebih rendah dalam peredaran huru-hara, mengikuti trend jangka pendek, dan menghampiri ketika trend jangka pendek berbalik, terus membuka dagangan secara berbalik.

Strategi ini adalah sangat ringkas dan mudah. Walaupun strategi ini adalah strategi yang tidak menghasilkan wang atau bahkan kehilangan wang, tetapi sebagai FMZer, belajar strategi frekuensi tinggi, melihat tingkah laku strategi frekuensi tinggi, melihat undang-undang mikro pasaran dan lain-lain adalah model yang boleh digunakan. Perdagangan terprogram, perdagangan kuantitatif memerlukan banyak amalan, pengalaman, teori sebagai asas.

Pergilah sebentar.

img

Seperti yang dapat dilihat, ia lebih sukar untuk membuka kedudukan ketika pasaran tidak aktif.

Pengoptimuman Strategi

Pada masa ini, tidak ada arah pengoptimuman yang baik. Pelajar-pelajar yang berminat boleh bersuara dan membincangkannya bersama-sama.

Alamat strategi:https://www.fmz.com/strategy/260806

Strategi ini hanya digunakan untuk belajar, dan jika pasaran tidak stabil, ia boleh menyebabkan kerugian.


Berkaitan

Lebih lanjut

Kelapa bakarDi sini, bagaimana kontrak menetapkan mata wang yang digunakan?

BensonMoms, strategi anda muncul di platform lain, sila perhatikan hak cipta.

Gillbates2Apabila ada perjanjian secara bersendirian, apa yang harus dilakukan?

Makhluk orbitIni boleh menentukan sama ada jumlah dagangan ditambah, atau menentukan mata wang pilihan automatik.

QslllAdakah ada yang berjaya? Boleh berkongsi data?

Pengukuran ketumbarDi updateOrderBook, harga selepas penimbang nilai versi asal sepatutnya berada di dekat purata n jual beli, dan dalam artikel ini, harga selepas penimbang nilai adalah dua kali ganda ((berhampiran purata jual beli), di sini tidak jelas.

168Adakah DreamHost boleh membuat versi yang boleh dipetik semula dan boleh digunakan secara langsung?

168main:68:43 - TypeError: Cannot read property 'totalWalletBalance' of undefined Saya ingin bertanya kepada Dream, adakah ini tidak boleh diuji semula, dan adakah ia perlu dipadamkan di rak sebenar?

bengbanGambar yang betul-betul berlari adalah terlalu kecil.

SedihDalam satu video yang disiarkan di laman webnya, beliau berkata, "Tradisi kontrak seolah-olah tidak dapat diperoleh, strategi tidak dapat berjalan dan bagaimana mereka berjaya".

Mimpi kecilIa boleh menurunkan kadar, tetapi ia mempunyai kelebihan dan kelemahan. Strategi frekuensi tinggi ini memerlukan kedalaman yang baik di atas piring, banyak ruang permainan yang sengit.

Kelapa bakarSaya telah membuat strategi ini dan jika tiada transaksi dalam masa 100ms, ia akan dibatalkan, saya telah berjalan sepanjang malam (sekitar 5 jam) tidak ada pesanan dan 5 pesanan, bagaimana untuk mengubah parameter?

Mimpi kecilJika anda ingin mendapatkan keuntungan daripada perdagangan forex, anda boleh meletakkan levera secara langsung di bursa.

Mimpi kecilHahaha, baiklah, terima kasih kerana mengingatkan.

Mimpi kecilStrategi ini adalah strategi pengajaran, terutama melihat idea, hanya pengajaran.

m0606Saya juga rasa harga terhad ini agak baik...

Mimpi kecilINFO adalah Bahasa Melayu.

PergiUjian semula tidak menyokong maklumat INFO

bengbanTick harga terhad satu reka bentuk yang baik

Mimpi kecil!>_>! Ini hanya prototaip, rugi, belajar, hanya mempunyai objek kajian.