Die neue Version der "Grid-Strategie" enthält nur 50 Codezeilen!

Schriftsteller:Gutes, Erstellt: 2018-08-28 14:18:15, aktualisiert: 2019-12-03 17:27:50

Die neue Version der "Grid-Strategie" enthält nur 50 Codezeilen!www.fmz.com

Erinnern Sie sich noch an die berühmte Grid Strategie (https://www.fmz.com/bbs-topic/2268)?

Der, der viele Kommentare zum Code hat (mehr als der Code selbst), ist ein ausgezeichnetes Beispiel, um zu lernen, wie man eine Strategie auf unserer FMZ-Plattform schreibt.

Einige Freunde fanden, dass die ursprüngliche Version dieser Strategie zu kompliziert ist, sie fragen sich, ob es kürzere Versionen davon gibt.

Hier kommt es, unter unserem genialen Programmierers exklusive Codierung Fähigkeit, wir neu schreiben es (noch mit JavaScript) mit nur 50 Zeilen der Codierung.

Dies ist auch eine gute Gelegenheit für Sie, herauszufinden, wie sich unsere Plattform entwickelt hat, wie der komplizierte Programmierung Fortschritt in nur Dutzende von Code-Sätzen komprimiert werden kann, ohne jede Funktion der ursprünglichen Absicht zu verlieren.

Hier sind die ursprünglichen 700+ Zeilen Code: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)
    }
}

Mehr

Kleine TräumeDas ist toll!