Sumber daya yang dimuat... Pemuatan...

Desain strategi frekuensi tinggi dari mesin pemetik kedelai Magic

Penulis:Penemu Kuantitas - Mimpi Kecil, Dibuat: 2021-03-09 13:41:54, Diperbarui: 2023-09-26 20:53:41

img

Desain strategi frekuensi tinggi dari mesin pemetik kedelai Magic

Dalam beberapa artikel sebelumnya, kami telah menganalisis ide-ide dan implementasi kode untuk strategi frekuensi tinggi dari mesin pemetik lobak versi asli.

Cara Membedah Mesin Pemetik Cengkeh (1) Teknik pemotongan kacang kedelai (2)

Banyak pengguna yang lebih peduli dengan kuantitas lingkaran koin.cetak uang"Saya tidak tahu apa yang terjadi.cetak uangDari pengamatan dan analisis dari banyak orang yang memperhatikan, strategi frekuensi tinggi ini mirip dengan mesin pemotong kacang kedelai (Grassin juga mengatakan bahwa prinsip frekuensi tinggi strategi relatif lebih dekat). Namun pasti ada kesenian untuk mewujudkan strategi yang memiliki tingkat kemenangan yang stabil dan rasio laba rugi yang tepat.

Karena itu, anak-anak kecil yang ahli teknik juga tidak tahan untuk mengubah mantra, meskipun efek taktik yang diubah oleh mantra itu dihancurkan menjadi kotoran oleh strategi dewa-dewa besar. Tetapi juga merupakan praktik belajar strategi frekuensi tinggi, teman-teman sekolah FM Zer yang tertarik untuk mendiskusikan dan belajar bersama.

Mesin pemetik kedelai yang dimanipulasi

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 Perubahan Pikiran

Strategi ini dirancang untuk digunakan dalam perdagangan di pasar kontrak USDT Binance, kontrak Binance mendukung kepemilikan unidirectional. Oleh karena itu, strategi ini dirancang sesuai dengan karakteristik kepemilikan unidirectional ("pemilikan unidirectional lebih mudah untuk memodifikasi strategi), tidak memperhitungkan perhentian, hanya memperhitungkan jual beli.

Strategi ini pada dasarnya mempertahankan standar penentuan tren harga jangka pendek dari versi aslinya, dan ukuran harga jangka pendek yang terganggu oleh parameterburstThresholdPctUntuk menentukan harga jangka pendek berdasarkan kriteria ini,bull(Sapi) ataubear(Beruang)

Kebijakan ini menghapus beberapa modul dari versi aslinya, seperti modul keseimbangan. Perubahan besar adalah mengubah suborder menjadi suborder yang ditempatkan di dalam lembar pesanan, menunggu transaksi. Harapkan untuk membuka posisi dengan biaya yang lebih rendah dalam peredaran yang sangat kacau, mengikuti tren jangka pendek, dan terus berpaling ketika tren jangka pendek terbalik.

Strategi ini sangat singkat dan sederhana. Meskipun strategi ini tidak menghasilkan uang atau bahkan kehilangan uang, sebagai FMZer belajar strategi frekuensi tinggi, mengamati perilaku strategi frekuensi tinggi, mengamati hukum mikro pasar, dan sebagainya.

Pergilah sebentar.

img

Anda dapat melihat bahwa ketika pasar tidak aktif, lebih sulit untuk membuka posisi.

Optimisasi Strategi

Saat ini, belum ada optimasi yang baik. Para siswa yang tertarik silahkan berbicara dan mendiskusikan bersama.

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

Strategi ini hanya digunakan untuk belajar, dan jika pasar tidak stabil, Anda mungkin akan kehilangan.


Berkaitan

Lebih banyak

Buah kedelai panggangBagaimana kontrak mengatur leverage multiplier di sini?

BensonDream Total, strategi Anda muncul di platform lain, perhatikan kesadaran hak cipta.

Sapi-sapi ternak2"Kalau ada kesepakatan yang dilakukan secara sepihak, bagaimana cara mengatasinya?

Makhluk di lintasanIni bisa menentukan jumlah transaksi atau tidak, atau menentukan mata uang yang dipilih secara otomatis.

QslllApakah ada yang berhasil? Bisa berbagi data?

Kuantitas Buah KacangUpdateOrderBook menghitung harga di mana, versi aslinya setelah harga ditimbang seharusnya berada di dekat angka tengah dari n jual beli di bursa, dalam artikel ini menghitung harga setelah ditimbang adalah dua kali (dekat angka tengah dari bursa), di sini tidak jelas.

168Apakah DreamWorks bisa membuat versi yang dapat diunduh, yang dapat digunakan secara langsung?

168main:68:43 - TypeError: Cannot read property 'totalWalletBalance' of undefined (Tidak dapat membaca properti 'totalWalletBalance' dari undefined) Jika Anda tidak bisa melakukan tes ulang, apakah Anda harus melakukan tes ulang? Bagaimana cara mengoreksi?

bengbanFoto-foto yang benar-benar berjalan sangat tipis.

Sedih"Trading yang tidak bisa dicapai, strategi yang tidak bisa berjalan, bagaimana bisa jalan-jalan".

Penemu Kuantitas - Mimpi KecilAnda dapat menurunkan tingkat perbandingan, tetapi ada keuntungan dan kerugian. Strategi frekuensi tinggi ini membutuhkan kedalaman yang baik di permukaan, banyak ruang bermain yang sengit.

Buah kedelai panggangDream Over, saya menghitung strategi ini, daftar pendirian ini akan dibatalkan jika tidak ada transaksi dalam 100 ms, saya berjalan satu malam (sekitar 5 jam) tidak ada pesanan dan 5 pesanan, bagaimana cara mengubah parameter?

Penemu Kuantitas - Mimpi KecilJika Anda ingin mendapatkan keuntungan dari trading Forex, Anda bisa langsung memasang leverage di bursa.

Penemu Kuantitas - Mimpi KecilHa ha, baiklah, terima kasih atas pengingatannya.

Penemu Kuantitas - Mimpi KecilStrategi ini adalah strategi pengajaran, terutama melihat ide, hanya mengajar.

m0606Saya juga merasa harga terbatas ini cukup bagus...

Penemu Kuantitas - Mimpi KecilINFO adalah bahasa Melayu.

BerjalanUji ulang tidak mendukung informasi INFO

bengbanTick harga terbatas desain yang bagus

Penemu Kuantitas - Mimpi Kecil!>_>! Ini hanya prototipe, rugi, belajar, hanya memiliki objek penelitian.