Les ressources ont été chargées... Je charge...

La nouvelle version de la "stratégie de réseau" ne contient que 50 lignes de codage!

Auteur:La bonté, Créé à partir de: 2018-08-28 14:18:15, mis à jour à partir de: 2019-12-03 17:27:50

La nouvelle version de la "stratégie de réseau" ne contient que 50 lignes de codage!www.fmz.com

Vous souvenez-vous encore de la fameuse stratégie de réseau (https://www.fmz.com/bbs-topic/2268)?

Celui qui a beaucoup de commentaires de code (plus que le code lui-même), est un excellent exemple pour apprendre à écrire une stratégie sur notre plateforme FMZ.

Certains amis ont trouvé que la version originale de cette stratégie est trop compliquée, ils se demandent s'il existe une version plus courte.

Voici ce que nous faisons, sous l'exclusivité de notre programmeur de génie, nous le réécrivons (encore en utilisant JavaScript) en utilisant seulement 50 lignes de code.

C'est aussi une bonne occasion pour vous de comprendre comment notre plateforme a évolué, comment le progrès de codage compliqué peut être comprimé en seulement des dizaines de phrases de codage sans perdre aucune fonction de l'intention originale.

Voici les plus de 700 lignes de code originales: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)
    }
}

Plus de

L'inventeur de la quantification - un petit rêveC'est très bien!