Template 3.2: Digital Currency Transaction Class Library (Integrado) (Pontos de venda, futuros com suporte a OKCoin Futures/BitVC)

Autora:Sonhos pequenos, Criado: 2017-01-04 19:00:10, Atualizado: 2017-10-11 10:27:01

Template 3.2: Digital Currency Transaction Class Library (Integrado) (Pontos de venda, futuros com suporte a OKCoin Futures/BitVC)


O capítulo 3.1 mostra um modelo de negociação em tempo real, que simplifica muito a dificuldade de escrever uma estratégia de negociação em tempo real. No entanto, o processamento de negociações em futuros é muito diferente do que em tempo real, por isso a função de negociação em futuros integrada na base do modelo de negociação em tempo real, agora está aberta ao público.

img

O blog oficial do grupo, publicado no site do grupo, é o seguinte:

img

  • O que está disponível:

    O Bitcoin é uma moeda digital de câmbio virtual, que é uma moeda de câmbio virtual.

  • Futuros:

    Parâmetros:img

    img

    A estratégia vem com um código de teste:

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

    Utilização:img

Código de teste na política (selecionar o modelo de referência)

img

Estratégias de teste:

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

Se você tiver alguma dúvida, BUG, entre em contato com o autor, muito obrigado!


Mais.

YundiPor que eu não encontrei o catálogo de negociação de moeda digital do JS e não vi a estratégia nele?

Eu não sou um tio mau.Qual é o preço do $.Buy ((0.5)

OutlawjkA versão do Python também suporta os futuros do OKEX?

simples-chunO que ret significa? Qual é a abreviação do termo em inglês? RECOVER T?

simples-chunOnde está a versão PY, por favor?

YhfggVocê está acostumado com o Python, há uma versão do Python?

Sonhos pequenosO catálogo de negociação de futuros de criptomoedas é não oficial e foi cancelado publicamente porque a interface de armazenamento do exchange é freqüentemente atrasada, o que pode levar a pedidos repetidos.

YundiOlá, este é o mercado de ações e futuros de commodities, eu perguntei no grupo, o banco de dados de futuros de moeda digital do JS não existe por causa de um bug.

Sonhos pequenos/upload/asset/16c4dcc69723e302152c.png Neste ponto.

Sonhos pequenosO preço da oponente, acrescentando um pouco de deslizamento.

Sonhos pequenosEste não está escrito por enquanto, mas há um modelo Python de futuros de commodities, meu JS também está escrito de acordo com a estrutura dos futuros de commodities, pode ser usado como referência.

OutlawjkO que você está fazendo é usar o jS, com base no modelo de Python do OKEX?

Sonhos pequenosPython não tem funções de futuros. Não há transplante.

Sonhos pequenosReturn significa valor de retorno, geralmente usado para armazenar temporariamente uma função que retorna um valor.

simples-chunObrigada.

Sonhos pequenoshttps://www.botvs.com/strategy/21104, pode ser um pouco diferente da versão do JS, que foi portada em função do JS.

Sonhos pequenosHá uma versão do Python, mas é menos usada.