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

Modèle 3.2: bibliothèque de classes de transactions de devises numériques (intégrées à l'offre, à l'avenir avec support OKCoin Futures/BitVC)

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2017-01-04 19:00:10, Mis à jour: 2017-10-11 10:27:01

Modèle 3.2: bibliothèque de classes de transactions de devises numériques (intégrées à l'offre, à l'avenir avec support OKCoin Futures/BitVC)


Le chapitre 3.1 présente un modèle de négociation sur place qui simplifie considérablement la difficulté de la rédaction d'une stratégie sur place. Cependant, le traitement des transactions sur les futures est très différent de celui sur place, de sorte que les fonctionnalités de négociation sur les futures sont intégrées sur la base du modèle sur place et sont maintenant publiques.

img

Il y a eu une manifestation publique sur la place des stratégies:

img

  • Les produits en stock:

    La crypto-monnaie a été introduite en tant que crypto-monnaie en tant qu'échangeur de crypto-monnaie.

  • Le terme:

    Paramètres:img

    img

    Le code de test fourni par la stratégie:

    function main() {
      if (exchange.GetName() === 'Futures_OKCoin') {
          var info = exchange.SetContractType("this_week");
          Log("info 返回值:", info);
          Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
          var depth = exchange.GetDepth();
          var p = $.NewPositionManager();
          p.OpenShort("this_week", 10, depth.Bids[0].Price - 2);
          Log(exchange.GetPosition());
          Sleep(500 * 1000);
          depth = exchange.GetDepth();
          var ret = p.Cover("this_week", depth.Bids[0].Price + 2, 5);
          Log("cover ret:", ret);
          //LogProfit(p.Profit());
          Log(exchange.GetPosition());
          Log("-----------------------------测试分割线----------------------------------------");
          var depth = exchange.GetDepth();
          p.OpenLong("this_week", 20, depth.Bids[0].Price + 2);
          Log(exchange.GetPosition());
          Sleep(500 * 1000);
          depth = exchange.GetDepth();
          var ret = p.Cover("this_week", depth.Bids[0].Price - 2, 10, PD_LONG);
          Log("cover ret:", ret);
          Log(exchange.GetPosition());
          Log("-----------------------------测试分割线----------------------------------------");
          var ret = p.Cover("this_week", depth.Bids[0].Price - 3, 10, PD_LONG);
          Log("cover ret:", ret);
          var ret = p.Cover("this_week", depth.Bids[0].Price + 3, 5, PD_SHORT);
          Log("cover ret:", ret);
          Log(exchange.GetPosition());
      } else if (exchange.GetName() === 'Futures_BitVC') {
          var info = exchange.SetContractType("week");
          Log("info 返回值:", info);
          Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
          var depth = exchange.GetDepth();
          var p = $.NewPositionManager();
          p.OpenLong("week", 500, depth.Bids[0].Price + 2);
          Log(exchange.GetPosition());
          Sleep(500 * 1000);
          depth = exchange.GetDepth();
          var ret = p.Cover("week", depth.Bids[0].Price - 2, 500);
          Log("cover ret:", ret);
          Log(exchange.GetPosition());
          Log("-----------------------------测试分割线----------------------------------------");
          var info = exchange.SetContractType("week");
          Log("info 返回值:", info);
          Log("当前持仓信息", exchange.GetPosition(), _C(exchange.GetTicker));
          var depth = exchange.GetDepth();
          p.OpenShort("week", 600, depth.Bids[0].Price - 2);
          Log(exchange.GetPosition());
          Sleep(500 * 1000);
          depth = exchange.GetDepth();
          var ret = p.Cover("week", depth.Bids[0].Price - 2, 500, PD_SHORT);
          Log("cover ret:", ret);
          Log(exchange.GetPosition());
          Log("-----------------------------测试分割线----------------------------------------");
          var ret = p.Cover("week", depth.Bids[0].Price + 3, 100, PD_SHORT);
          Log("cover ret:", ret);
          //p.Cover("week", depth.Asks[0].Price - 3, 300, PD_LONG);
          Log(exchange.GetPosition());
      } else if(exchange.GetName() === 'huobi' || exchange.GetName() === 'OKCoin'){
          Log($.GetAccount());
          Log($.Buy(0.5));
          Log($.Sell(0.5));
          exchange.Buy(1000, 3);
          $.CancelPendingOrders(exchanges[0]);
          Log($.Cross(30, 7));
          Log($.Cross([1,2,3,2.8,3.5], [3,1.9,2,5,0.6]));
      }
    }
    

    Utilisation:img

Le code de test dans la stratégie (Sélectionnez le modèle de référence)

img

La stratégie de test:

function main(){
    var p = $.NewPositionManager();
    var i = 0;
    exchanges[0].SetContractType("this_week");
    var isFirst = true;
    var ret = null;
    while(true){
        var depth = _C(exchanges[0].GetDepth);
        var positions = _C(exchanges[0].GetPosition);
        var len = positions.length;
        if(isFirst === true && i % 3 === 0 && len === 0){
            ret = p.OpenLong("this_week", 1 + (i % 3) + (i % 2), depth.Asks[0].Price);
            isFirst = false;
        }else if(isFirst === false){
            ret = p.OpenShort("this_week", 1 + (i % 3) + (i % 2), depth.Bids[0].Price);
            isFirst = true;
        }else{
            for(var j = 0 ; j < len; j++){
                if(positions[j].Type === PD_LONG){
                    ret = p.Cover("this_week", depth.Bids[0].Price - 2, positions[j].Amount, PD_LONG);
                }else if(positions[j].Type === PD_SHORT){
                    ret = p.Cover("this_week", depth.Asks[0].Price + 2, positions[j].Amount, PD_SHORT);    
                }
                Log("ret:", ret);
            }
        }
        Log("ret", ret, "---------------------#FF0000");
        i++;
        Sleep(1000 * 60 * 15);
    }
}

Si vous avez des questions ou des bugs, veuillez contacter l'auteur, merci beaucoup!


Plus de

YundiPourquoi je n'ai pas pu trouver la bibliothèque de trading de crypto-monnaie de JS, et pourquoi je n'ai pas vu la stratégie dans cette bibliothèque?

Je ne suis pas un mauvais oncle.Quel est le prix de $.Buy ((0.5)?

hors-la-loiLa version python est-elle également compatible avec les futures d'okex?

simple-chunPourriez-vous m'expliquer ce que représente ret? Quelle est l'abréviation de RECOVER T?

simple-chunOù est la version PY, s'il vous plaît?

YhfggJe suis habitué à Python, y a-t-il une version de Python?

L'inventeur de la quantification - un petit rêveLa bibliothèque de négociation des futures de crypto-monnaie est officieuse, car les interfaces de détention des échanges sont souvent retardées, ce qui peut entraîner une répétition des commandes, et a donc été annulée.

YundiBonjour, c'est pour les contrats à terme sur marchandises, j'ai demandé dans le groupe, la bibliothèque des contrats à terme sur la monnaie numérique de JS a disparu à cause d'un bug.

L'inventeur de la quantification - un petit rêveIl s'agit d'un projet d'envergure de l'économie de l'Europe. Dans cette position.

L'inventeur de la quantification - un petit rêveLes prix des concurrents à l'époque, plus un léger glissement.

L'inventeur de la quantification - un petit rêveCe n'est pas écrit pour l'instant, mais il y a un modèle Python pour les futures de produits, mon JS est en fait aussi écrit selon la structure des futures de produits.

hors-la-loiJe ne suis pas très intéressé par le fait qu'ils utilisent des modèles Python pour les futures OKEX.

L'inventeur de la quantification - un petit rêvePython n'a pas de fonctionnalité de futur Il n'y a pas de greffe.

L'inventeur de la quantification - un petit rêveLe terme " retour " signifie la valeur retournée, généralement utilisée pour stocker temporairement une fonction.

simple-chunMerci merci

L'inventeur de la quantification - un petit rêveLa stratégie de la plateforme est basée sur la stratégie de JS.

L'inventeur de la quantification - un petit rêveIl existe une version de Python, mais elle est moins utilisée.