avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

2.2 Coloque uma ordem de limite

Criado em: 2016-11-07 16:41:10, atualizado em: 2019-08-01 09:26:27
comments   7
hits   6268

Instruções de preço inferior


  • ### A função Buy (Price, Amount)

Preparação

A função de transação Buy ()/Sell () é uma API que deve ser conhecida.

  • 1 GetOrder ((orderId) Obter detalhes do pedido com base no número do pedido e devolver uma estrutura de pedido.
  • 2 GetOrders Obter todas as ordens pendentes e retornar uma estrutura de uma matriz de ordens.
  • 3 CancelOrder ((orderId) Cancelar um pedido com base no número de ordem, devolver true ou false ◦
  • 4 - O status da ordem
[
        ORDER_STATE_PENDING     :未完成
        ORDER_STATE_CLOSED      :已关闭
        ORDER_STATE_CANCELED	:已取消
]
  • 5. Estrutura de ordens Order, retornada pela função GetOrder
{
        Id          :交易单唯一标识
        Price       :下单价格
        Amount      :下单数量
        DealAmount  :成交数量
        Status      :订单状态, 参考常量里的订单状态
        Type        :订单类型, 参考常量里的订单类型
}

Documentação da API

Buy(Price, Amount)	下买单, Price为买单价格,Amount为数量, 返回一个订单ID
可以跟多余的参数做为附加消息显示到日志, 如exchange.Buy(1000,0.1, "OK", 123)
支持现货(火币/BitVC/OKCoin/OKCoin国际/OKCoin期货/BTCChina/BitYes)市价单, 市价单价格指定为-1
exchange.Buy(1000), 指买市价1000元的币, BTCChina例外exchange.Buy(0.3)指市价买0.3个币
  • #### Lista de preços

Vamos ver como é simples usar o listado de preços, na verdade, o listado de preços tem muitos detalhes a serem tratados, vamos entender simplesmente, porque mais adiante vamos falar sobre o que é um listado de preços.Capítulo 3.1A partir daí, haverá um processo de processamento muito detalhado para que todos aprendam.

function main() {    
        //  方便用户看这些  宏的值 我们事先打印出来
        //  ORDER_STATE_PENDING     :未完成
        //  ORDER_STATE_CLOSED      :已关闭
        //  ORDER_STATE_CANCELED    :已取消

        Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, ", ORDER_STATE_CLOSED:", 
            ORDER_STATE_CLOSED, ", ORDER_STATE_CANCELED:", ORDER_STATE_CANCELED); // 这些都是订单状态的宏,打印这些值认识下,在本段代码不起任何作用,仅仅观察下这些 “状态” 的值。
    
        var ticker = exchange.GetTicker();               // 上一章 已经讲述了怎么获取行情信息。
        Log("初始账户信息:", exchange.GetAccount());      //  用于对比交易前后账户信息
    
        var ID = exchange.Buy(ticker.Sell + 0.1, 0.1);   // ticker.Sell 即 上一章中的  depth.Asks[0].Price 。
                                                         //  返回值是一个订单 ID ,参考上面 小准备。
        // 限价单下单后 返回一个ID 可以用来查询这个订单的完成情况。我们暂停1秒 即:  Sleep(1000)   。
        Sleep(1000);
        var order = exchange.GetOrder(ID);               // 根据ID 获取 对应的 订单信息。
        Log("order:", order);
        Log("当前账户信息:", exchange.GetAccount());       //  对比初始账户信息
}

O resultado é o seguinte: 2.2 Coloque uma ordem de limite Pode-se ver que o status do pedido impresso é 1, ou seja: ORDER_STATE_CLOSED 。 O estado atual do pedido foi concluído, e ver dealAmount como 0.1, também pode confirmar que o pedido foi concluído. A quantidade de transação é dealAmount 。 Os alunos que podem ter uma observação atenta descobriram que o pedido impresso é um AvgPrice (preço médio de transação) a mais do que o documento da API, isso porque este atributo foi exibido mais tarde.

  • ### A função Sell ((Price, Amount)

Documentação da API

    Sell(Price, Amount)	跟Buy函数一样的调用方法和场景
  • #### Lista de preços

A função Buy ((() acima foi testada pelo sistema de feedback que usamos, e aqui nós testamos com o disco simulado para ver se há algum pedido pendente (((ou parcialmente fechado) [2].

function main() {    
        //  方便用户看这些  宏的值 我们事先打印出来
        //  ORDER_STATE_PENDING	:未完成
        //  ORDER_STATE_CLOSED	:已关闭
        //  ORDER_STATE_CANCELED	:已取消

        Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, "
            , ORDER_STATE_CLOSED:", ORDER_STATE_CLOSED, ", ORDER_STATE_CANCELED:", ORDER_STATE_CANCELED);
    
        var ticker = exchange.GetTicker();   // 上一章 已经讲述了怎么获取行情信息。
        Log("初始账户信息:", exchange.GetAccount());   //  用于对比交易前后账户信息
        var ID = exchange.Sell(ticker.Sell + 0.3, 2); // 这里故意把卖出价格加了 0.3 ,并且使用的ticker.Sell,增加了未成交的几率。
                                                      //  返回值是一个订单 ID ,参考上面 小准备。
        // 限价单下单后 返回一个ID 可以用来查询这个订单的完成情况。我们暂停1秒 即:  Sleep(1000)   。
        Sleep(1000);
        var order = exchange.GetOrder(ID);            // 根据ID 获取 对应的 订单信息。
        Log("order:", order);
        Log("当前账户信息:", exchange.GetAccount());   //  对比初始账户信息
}

Os inventores quantificaram os resultados da simulação de disco como segue: 2.2 Coloque uma ordem de limite Pode-se ver que o status da ordem impressa é 0, ou seja, não concluída. O DealAmount é 0, e as 2 moedas vendidas também foram congeladas, pois a ordem está pendente.

Então, o que acontece com o single “Pending”? A função CancelOrder ((ID) é usada para cancelar um pedido com uma determinada ID.

function main() {    
        //  方便用户看这些  宏的值 我们事先打印出来
        //  ORDER_STATE_PENDING	:未完成
        //  ORDER_STATE_CLOSED	:已关闭
        //  ORDER_STATE_CANCELED	:已取消

        Log("ORDER_STATE_PENDING:", ORDER_STATE_PENDING, ", ORDER_STATE_CLOSED:", ORDER_STATE_CLOSED,
            ", ORDER_STATE_CANCELED:", ORDER_STATE_CANCELED);
    
        var ticker = exchange.GetTicker();   // 上一章 已经讲述了怎么获取行情信息。
        Log("初始账户信息:", exchange.GetAccount());   //  用于对比交易前后账户信息
        var ID = exchange.Sell(ticker.Sell + 50, 2);  // ticker.Sell 即 上一章中的  depth.Asks[0].Price 。
                                                      //  返回值是一个订单 ID ,参考上面 小准备。
        // 限价单下单后 返回一个ID 可以用来查询这个订单的完成情况。我们暂停1秒 即:  Sleep(1000)   。
        Sleep(1000);
        var order = exchange.GetOrder(ID);  // 根据ID 获取 对应的 订单信息。
        Log("order:", order);
        Log("当前账户信息:", exchange.GetAccount());   //  对比初始账户信息
        Sleep(60 * 1000);
        exchange.CancelOrder(ID);         //  取消 这个ID 的订单
        order = exchange.GetOrder(ID);    //  读取这个ID的订单信息。
        Log("order:", order);
}

Resultado da execução: Disponibilização do pedido com o ID 634795459 Status da mensagem impressa no final é 2 ou seja: ORDER_STATE_CANCELED: Cancelado 2.2 Coloque uma ordem de limite

A função GetOrder ((ID) e a função GetOrders (()) são muito parecidas, mas a diferença é que a primeira obtém informações sobre o pedido com o ID especificado, enquanto a segunda obtém todas as informações sobre o pedido com o ID específico.未完成A ordem ((GetOrders (() retorna a estrutura de dados como uma matriz de objetos, ou seja, uma matriz em que cada elemento é uma estrutura de ordens).