Plantilla 3.2: Biblioteca de transacciones de monedas digitales (integrada con los futuros de OKCoin / BitVC en efectivo y futuros)

El autor:Un sueño pequeño., Creado: 2017-01-04 19:00:10, Actualizado: 2017-10-11 10:27:01

Plantilla 3.2: Biblioteca de transacciones de monedas digitales (integrada con los futuros de OKCoin / BitVC en efectivo y futuros)


El capítulo 3.1 muestra un modelo de negociación de contado que simplifica mucho la dificultad de escribir una estrategia de contado. Sin embargo, el manejo de la negociación de futuros es muy diferente al de los contados, por lo que se ha integrado una función de negociación de futuros basada en el modelo de contado y ahora es pública.

img

En la Plaza de la Estrategia:

img

  • En el momento:

    La moneda digital tiene el mismo tipo de depósito de transacciones que la anterior moneda virtual.

  • Los futuros:

    Parámetros:img

    img

    La estrategia viene con el código de prueba:

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

    Usado para:img

Código de prueba en la política (selecciona la plantilla de referencia)

img

La estrategia de prueba:

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 tiene alguna pregunta, BUG, bienvenido a contactar con el autor, muchas gracias.


Más.

yundi¿Por qué no puedo encontrar la biblioteca de comercio de monedas digitales de JS?

No soy un mal tío.¿Cuál es el precio para $.Buy ((0.5)?

fuera de la ley¿La versión de python también es compatible con los futuros de OKEX?

el simple-chun¿Qué significa ret? ¿Qué es una abreviatura de un término en inglés? RECOVER T.

el simple-chun¿Dónde está la versión PY?

Yhfgg¿Tiene alguna versión de Python?

Un sueño pequeño.El catálogo de transacciones de futuros de criptomonedas es no oficial, y se cancela públicamente debido a que los intercambios tienen interfaces de almacenamiento con frecuentes retrasos, lo que puede provocar una repetición de la orden.

yundiHola, esto es para futuros de bienes y mercancías, pregunté en el grupo, el catálogo de futuros de monedas digitales de JS ya no existe debido a un error.

Un sueño pequeño./upload/asset/16c4dcc69723e302152c.png /upload/asset/16c4dcc69723e302152c.png /upload/asset/16c4dcc69723e302152c.png /upload/asset/16c4dcc69723e302152c.png /upload/asset/16c4dcc69723e302152c.png En esta posición

Un sueño pequeño.El precio del rival en ese momento, más un pequeño deslizamiento.

Un sueño pequeño.Este no está escrito por el momento, pero hay un modelo Python de futuros de productos, mi JS también está escrito de acuerdo con la estructura de los futuros de productos.

fuera de la ley¿No se usa mucho el js, en referencia a la plantilla de Python de los futuros de OKEX?

Un sueño pequeño.No hay futuros en Python. No hay trasplantes.

Un sueño pequeño.return significa valor de retorno, generalmente utilizado para almacenar temporalmente una función que devuelve valor.

el simple-chunMuchas gracias.

Un sueño pequeño.https://www.botvs.com/strategy/21104, puede ser un poco diferente a la versión de JS, que fue portada a JS.

Un sueño pequeño.Hay versiones de python, pero son menos usadas, por lo que es mejor probarlas.