Thiết kế chiến lược tần số cao từ máy thu hoạch cải bắp

Tác giả:Giấc mơ nhỏ, Tạo: 2021-03-09 13:41:54, Cập nhật: 2023-09-26 20:53:41

img

Thiết kế chiến lược tần số cao từ máy thu hoạch cải bắp

Trong một số bài viết trước đây, chúng tôi đã phân tích ý tưởng về chiến lược tần số cao của máy thu hoạch hạt nhân hiện tại của phiên bản gốc và thực hiện mã.

Phân tích chiến lược máy thu hoạch cải bắp (1) Phân tích chiến lược máy thu hoạch cải chuối (2)

Một số người dùng quan tâm đến việc định lượng vòng đồng xu.in tiềnNhững chiến thuật của con chimin tiềnChiến lược của ông là giao dịch hợp đồng USDT. Theo quan sát và phân tích của nhiều người quan tâm, chiến lược tần số cao này tương tự như các công cụ thu hoạch hạt cải (Grabshin cũng đã nói rằng các nguyên tắc chiến lược tần số cao tương tự). Nhưng chắc chắn có những điều tinh tế để thực hiện chiến lược có tỷ lệ chiến thắng ổn định và tỷ lệ thua lỗ thích hợp.

Vì vậy, các học viên kỹ thuật cũng không thể chịu đựng được một phép thuật thay đổi, mặc dù các tác dụng chiến lược được thay đổi của phép thuật đã được áp dụng cho các chiến thuật của các vị thần lớn. Nhưng cũng là một thực hành học tập cho các chiến thuật tần số cao, các học sinh FM Zer quan tâm cùng nhau khám phá, hãy học.

Máy thu hoạch cải tạo rau củ

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

Chiến lược thay đổi tư duy

Chiến lược là dự định sử dụng giao dịch trên thị trường hợp đồng USDT của Binance, hợp đồng Binance hỗ trợ giữ một chiều. Vì vậy, chiến lược được thiết kế theo đặc điểm của giữ một chiều (để giữ một chiều dễ dàng hơn để thay đổi chiến lược), không xem xét sàn giao dịch, chỉ xem xét bán.

Chiến lược chủ yếu giữ nguyên các tiêu chuẩn xác định xu hướng giá ngắn hạn của phiên bản gốc, mức độ giá ngắn hạn được xác định bởi các tham sốburstThresholdPctĐiều này có nghĩa là giá bán trong thời gian ngắn sẽ được đánh giá bằng giá bán trong thời gian ngắn.bull(Thịt bò)bear(Gấu)

Chính sách loại bỏ một số mô-đun trong bản gốc, chẳng hạn như mô-đun cân bằng. Một thay đổi lớn hơn là thay đổi đơn đặt hàng để đặt hàng trong tờ đơn đặt hàng, chờ giao dịch. Dự kiến sẽ mở đầu với chi phí thấp hơn trong bối cảnh hỗn loạn, theo xu hướng ngắn hạn và tiếp tục mở đầu một lần quay ngược khi xu hướng ngắn hạn đảo ngược.

Chiến lược loại bỏ các mã không cần thiết khác vì vậy rất ngắn và đơn giản. Mặc dù chiến lược là một chiến lược không kiếm tiền, thậm chí mất tiền, nhưng như FMZer, học chiến lược tần số cao, quan sát hành vi của chiến lược tần số cao, quan sát các quy luật vi mô của thị trường, v.v. là một mô hình có thể áp dụng.

Chạy thật một chút.

img

Như bạn có thể thấy, việc mở sàn giao dịch khi thị trường không hoạt động là khá khó khăn.

Chiến lược tối ưu hóa

Hiện tại, vẫn chưa có hướng tối ưu tốt nào được tìm thấy. Các bạn học sinh quan tâm hãy tham gia và thảo luận cùng nhau.

Địa chỉ chiến lược:https://www.fmz.com/strategy/260806

Chiến lược này chỉ dùng để học hỏi, thị trường có thể mất mát nếu không có sự ổn định.


Có liên quan

Thêm nữa

Củ cải nướngLàm thế nào để các hợp đồng được đặt tỷ lệ đòn bẩy?

BensonXin hãy chú ý đến sự nhận thức bản quyền của bạn, vì chiến lược của bạn đã xuất hiện trên một nền tảng khác.

cá sứa2Khi một bên thỏa thuận, điều gì nên được thực hiện?

Động vật quỹ đạoĐiều này có thể quyết định xem có thêm một số lượng giao dịch hay không, hoặc quyết định đồng tiền tự động.

QslllBạn có thể chia sẻ dữ liệu không?

Xác định lượng bơupdateOrderBook tính toán giá ở đó, phiên bản gốc giá sau khi cân nhắc nên ở gần số trung bình mua bán n, trong bài viết này tính toán giá sau khi cân nhắc là hai lần (gần số trung bình mua bán), đây không phải là rất rõ ràng.

168DreamHost có thể tạo ra một phiên bản có thể truy cập lại được và có thể sử dụng trực tiếp không?

168main:68:43 - TypeError: Cannot read property 'totalWalletBalance' of undefined Không thể đọc tài sản 'totalWalletBalance' của undefined Xin hãy hỏi Little Dream, điều này không thể được kiểm tra lại, phải có trên đĩa thật?

BengbanNhững hình ảnh thực tế trong một giây là quá nhỏ.

Ừm.Các giao dịch hợp đồng dường như không thể đạt được, chiến lược không thể chạy lên, làm thế nào để bạn có thể chạy lên.

Giấc mơ nhỏBạn có thể hạ thấp một chút, nhưng có lợi thế. Chiến lược tần số cao này đòi hỏi độ sâu tốt trên đĩa, nhiều cảnh chơi nhiều không gian.

Củ cải nướngĐúng vậy, tôi đã tính toán chiến lược này, và nếu không có giao dịch trong vòng 100ms, thì đơn đặt hàng này sẽ bị hủy bỏ, tôi đã chạy một đêm (gần 5 giờ) không có giao dịch và đã giao dịch 5 lần, làm thế nào để thay đổi tham số?

Giấc mơ nhỏBạn có thể đặt đòn bẩy trực tiếp trên sàn giao dịch.

Giấc mơ nhỏCảm ơn vì đã nhắc nhở.

Giấc mơ nhỏMột chiến thuật là một chiến thuật giảng dạy, chủ yếu là xem xét ý tưởng, chỉ là giảng dạy.

m0606Tôi cũng nghĩ rằng giá cả hạn chế này là khá tốt...

Giấc mơ nhỏINFO là tiếng Ma.

Bước quaQuá trình kiểm tra không hỗ trợ thông tin INFO

BengbanTick giá rẻ đơn giản thiết kế tốt

Giấc mơ nhỏ!>_>! Đây chỉ là một nguyên mẫu, tốn kém, học tập, chỉ có một đối tượng nghiên cứu.