O recurso está a ser carregado... Carregamento...

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

Autora:Inventor quantificado - sonho pequeno, 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?

Inventor quantificado - sonho pequenoO 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.

Inventor quantificado - sonho pequeno/upload/asset/16c4dcc69723e302152c.png Neste ponto.

Inventor quantificado - sonho pequenoO preço da oponente, acrescentando um pouco de deslizamento.

Inventor quantificado - sonho pequenoEste 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?

Inventor quantificado - sonho pequenoPython não tem funções de futuros. Não há transplante.

Inventor quantificado - sonho pequenoReturn significa valor de retorno, geralmente usado para armazenar temporariamente uma função que retorna um valor.

simples-chunObrigada.

Inventor quantificado - sonho pequenohttps://www.botvs.com/strategy/21104, pode ser um pouco diferente da versão do JS, que foi portada em função do JS.

Inventor quantificado - sonho pequenoHá uma versão do Python, mas é menos usada.