Versi baru strategi grid hanya mengandungi 50 baris kod!

Penulis:Kebaikan, Dicipta pada: 2018-08-28 14:18:15, Dikemas kini pada: 2019-12-03 17:27:50

Versi baru strategi grid hanya mengandungi 50 baris kod!www.fmz.com

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

Satu yang mempunyai banyak komen kod (lebih daripada kod itu sendiri), adalah contoh yang sangat baik untuk belajar bagaimana untuk menulis strategi di platform FMZ kami.

Beberapa kawan mendapati bahawa versi asal strategi ini terlalu rumit, mereka tertanya-tanya jika terdapat versi yang lebih pendek.

Di sini ia datang, di bawah pengaturcara genius kami kemahiran pengekodan eksklusif, kita menulis semula (masih menggunakan JavaScript) dengan hanya menggunakan 50 baris kod. yang asal adalah lebih daripada 700 baris kod.

Ini juga merupakan peluang yang baik untuk anda untuk mengetahui bagaimana platform kami telah berkembang, bagaimana kemajuan pengekodan yang rumit dapat dikompres menjadi hanya berpuluh-puluh ayat pengekodan tanpa kehilangan apa-apa fungsi asal.

Ini adalah asal 700+ baris kod: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 lanjut

Mimpi kecilHebat!