Sumber daya yang dimuat... Pemuatan...

Versi baru dari strategi grid hanya berisi 50 baris kode!

Penulis:Kebaikan, Dibuat: 2018-08-28 14:18:15, Diperbarui: 2019-12-03 17:27:50

Versi baru dari strategi grid hanya berisi 50 baris kode!www.fmz.com

Apakah Anda masih ingat strategi grid yang terkenal (https://www.fmz.com/bbs-topic/2268)?

Yang memiliki banyak komentar kode (lebih dari kode itu sendiri), adalah contoh yang sangat baik untuk belajar bagaimana menulis strategi di platform FMZ kami.

Beberapa teman menemukan bahwa versi asli dari strategi ini terlalu rumit, mereka bertanya-tanya apakah ada versi yang lebih pendek dari itu.

Di sini datang, di bawah programmer jenius kami keterampilan coding eksklusif, kita menulis ulang (masih menggunakan JavaScript) dengan hanya menggunakan 50 baris kode. yang asli adalah lebih dari 700 baris kode.

Ini juga kesempatan bagus bagi Anda untuk mencari tahu bagaimana platform kami telah berkembang, bagaimana kemajuan pengkodean yang rumit dapat dikompres menjadi hanya lusinan kalimat pengkodean tanpa kehilangan fungsi dari tujuan asli.

Ini adalah 700+ baris kode asli:https://www.fmz.com/bbs-topic/2268

var _StopLoss = 0
var _StopWin = 0
var _Grid = []

function UpdateGrid(nowBidsPrice, nowAsksPrice, direction){    // up 1, down -1
    if(_Grid.length == 0 || (direction == 1 && nowBidsPrice - _Grid[_Grid.length - 1].price > _GridPointDis) || 
        (direction == -1 && _Grid[_Grid.length - 1].price - nowAsksPrice > _GridPointDis)){

        var nowPrice = direction == 1 ? nowBidsPrice : nowAsksPrice
        _Grid.push({
            price: _Grid.length == 0 ? nowPrice : _Grid[_Grid.length - 1].price + _GridPointDis * direction,
            hold : {price: 0, amount: 0}, 
            coverPrice : _Grid.length == 0 ? nowPrice - direction * _GridCovDis : _Grid[_Grid.length - 1].price + _GridPointDis * direction - direction * _GridCovDis
        })

        var tradeInfo = direction == 1 ? $.Sell(_GridPointAmount) : $.Buy(_GridPointAmount)
        _Grid[_Grid.length - 1].hold.price = tradeInfo.price
        _Grid[_Grid.length - 1].hold.amount = tradeInfo.amount
        $.PlotFlag(new Date().getTime(), JSON.stringify(tradeInfo), "O")
    }
    if(_Grid.length > 0 && 
        ((direction == 1 && nowAsksPrice < _Grid[_Grid.length - 1].coverPrice) || (direction == -1 && nowBidsPrice > _Grid[_Grid.length - 1].coverPrice))){
        
        var coverInfo = direction == 1 ? $.Buy(_Grid[_Grid.length - 1].hold.amount) : $.Sell(_Grid[_Grid.length - 1].hold.amount)
        _Grid.pop()
        $.PlotFlag(new Date().getTime(), JSON.stringify(coverInfo), "C")
        _StopWin++
    } else if(_Grid.length > _GridNum){
        var coverfirstInfo = direction == 1 ? $.Buy(_Grid[0].hold.amount) : $.Sell(_Grid[0].hold.amount)
        _Grid.shift()
        $.PlotFlag(new Date().getTime(), JSON.stringify(coverfirstInfo), "C")
        _StopLoss++
    }

}

function main(){
    while(1){
        var ticker = _C(exchange.GetTicker)
        var records = _C(exchange.GetRecords)
        $.PlotRecords(records, "kline")
        UpdateGrid(ticker.Buy, ticker.Sell, direction)       
        var msg = ""
        for(var i = 0; i < _Grid.length; i++){
            msg += JSON.stringify(_Grid[i]) + "\n"
        }
        LogStatus(_D(), "_StopWin:", _StopWin, "_StopLoss:", _StopLoss, _C(exchange.GetAccount), "\n", "_Grid.length:", _Grid.length, "_GridNum:", _GridNum, "\n", msg)
        Sleep(500)
    }
}

Lebih banyak

Penemu Kuantitas - Mimpi KecilBagus sekali!