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) } }
326538268Bitmex répondait qu'il n'y avait pas de contrat.
Je suis désolée.Je ne sais pas lire, mais je ne sais pas écrire, je ne sais pas écrire, je ne sais pas écrire.
AfanxingzhouQuestion: Lorsque le logiciel à terme est en équilibre, vous devez choisir une position ouverte et l'effacer. Je vois dans le code que lorsque vous êtes en équilibre, l'opération est la même que celle d'ouvrir une position, mais vous ouvrez une nouvelle position opposée à la précédente.
L'inventeur de la quantification - un petit rêveCette stratégie est une stratégie de change, BITMEX est une bourse à terme.
L'inventeur de la quantification - un petit rêveÇa va très bien.
AfanxingzhouBon, je vais voir ce qui se passe avec les futures:)
L'inventeur de la quantification - un petit rêveCette stratégie n'est qu'une version en stock, et il est intéressant de la transformer en une version à terme. Les marchandises sont uniquement achetées et vendues; achetées ou plus, vendues ou moins (s'il y a une opération d'achat correspondante) ou ouvertes.