Die Ressourcen sind geladen. Beförderung...

50-Zeilen-Gitter-Strategie (unterrichtet)

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Datum: 2018-08-24 16:32:24
Tags:StudiumGitter


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)
    }
}

Verwandt

Mehr

326538268Bitmex-Rückmeldung zeigt keinen Vertrag

Wufuhao100wIch bin ein junger Mann, ich kann nicht lesen.

Das ist nicht wahr.Frage: Wenn die Futures-Software ausfällt, muss man eine Position wählen, die Position ausfällt. Ich sehe im Code, dass die Operation im Ausgleich derselbe ist wie die Eröffnung, nur eine neue und entgegengesetzte Position geöffnet wird.

Die Erfinder quantifizieren - Kleine TräumeDie Strategie ist eine Bargeld-Strategie, und BITMEX ist eine Futures-Börse.

Die Erfinder quantifizieren - Kleine TräumeDas ist gut.

Das ist nicht wahr.Ich werde mir die Futures anschauen.

Die Erfinder quantifizieren - Kleine TräumeDie Strategie ist lediglich für die Aktienversion, die Interessenten können die Futures-Version umwandeln. Der Kauf ist nur ein Kauf. Kaufen ist zu viel, verkaufen ist zu viel (wenn vorher eine entsprechende Kaufoperation vorhanden war) oder frei.