2.2 Lista de precios más bajos

El autor:Un sueño pequeño., Creado: 2016-11-07 16:41:10, Actualizado: 2019-08-01 09:26:27

Lista de precios más bajos


  • Función de compra (precio, cantidad)

Un poco de preparación

En el uso de la función de transacción Buy (((/Sell (Sell) tiene varias APIs con las que debes estar familiarizado.

  • 1, GetOrder ((orderId) Obtiene detalles de la orden según el número de la orden y devuelve una estructura de orden.
  • 2, GetOrders obtiene todos los pedidos sin completar y devuelve una estructura de orden.
  • 3, CancelOrder ((orderId) Cancelar un pedido basado en el número de orden, devolviendo true o false.
  • 4, estado de la orden, valor de estado en la estructura de la orden
[
        ORDER_STATE_PENDING     :未完成
        ORDER_STATE_CLOSED      :已关闭
        ORDER_STATE_CANCELED	:已取消
]
  • 5, Order Estructura de orden, devuelta por la función GetOrder
{
        Id          :交易单唯一标识
        Price       :下单价格
        Amount      :下单数量
        DealAmount  :成交数量
        Status      :订单状态, 参考常量里的订单状态
        Type        :订单类型, 参考常量里的订单类型
}

Documentación de la 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 precios

Ahora vamos a ver cómo se puede usar un listón de precios sencillo, pero en realidad hay muchos detalles que se deben manejar.Capítulo 3.1En la página web de la organización, se puede leer:

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());       //  对比初始账户信息
}

Los resultados son los siguientes:imgSe puede ver que el estado de la orden impreso es 1, es decir: ORDER_STATE_CLOSED. El estado de la orden actual es completado, ver que el dealAmount es 0.1, también puede confirmar que la orden ha completado la transacción. El monto de transacción es dealAmount.

  • Función de venta (Price, Amount)

Documentación de la API

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

La función Buy (() anterior fue probada por el sistema de retroceso que usamos, y aquí probamos con el disco analógico para ver si hay pedidos pendientes (() o parcialmente realizados.

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());   //  对比初始账户信息
}

El resultado de la operación del disco analógico fue el siguiente:imgSe puede ver que el estado de la orden impresa es 0, es decir, no se ha completado. El valor de DealAmount es 0, y los 2 monedas vendidas también se han congelado debido a que la orden está en estado de Pending.

¿Qué pasa con la lista Pending? Aquí usamos la función CancelOrder (ID), que usamos para cancelar los pedidos con el ID especificado.

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

Resultados de ejecución: muestra el pedido con el ID 634795459 El último mensaje impreso en el estado es 2: ORDER_STATE_CANCELED: canceladoimg

Las funciones GetOrder ((ID) y GetOrders ((() se parecen mucho, con la diferencia de que la primera obtiene la información de la orden del ID especificado, mientras que la segunda obtiene toda la información de la orden.未完成La estructura de datos de la orden ((GetOrders)) que se devuelve es una matriz de objetos, es decir, una matriz en la que cada elemento es una estructura de orden).


Más.

¿Qué es eso?¿Qué pasa si no compro bitcoins, compro otras monedas, y lo arreglo?

¿Qué es eso?¿Qué es eso?

el pingüino¿Puede preguntarme si me basé en la historia de la ciudad de Nueva York? exchange.Buy ((ticker, 0.1) para comprar uno y exchange.Buy ((depth, 0.1) para comprar uno ¿Cuál es la diferencia? El precio real de la moneda en el mercado de divisas es el precio real de la plata.

¿ Qué haces?La versión de python https://dn-filebox.qbox.me/a2802f5f41f416374d79c48aca05030ce2b2e8a8.png https://dn-filebox.qbox.me/d6d7d1af28993a2225ec33b092b4cf2e8c479edc.png

Un sueño pequeño.La cuarta pregunta de este post se encuentra en https://www.botvs.com/bbs-topic/1427. En el disco real se puede usar la configuración de controles personalizados.

Un sueño pequeño.GetTicker obtiene datos de comportamiento en tiempo real, GetDepth obtiene información de profundidad, compra y venta son lo mismo.

Un sueño pequeño.¡Gracias por compartir!