В процессе загрузки ресурсов... загрузка...

2.2 Нижняя цена

Автор:Изобретатели количественного измерения - мечты, Создано: 2016-11-07 16:41:10, Обновлено: 2019-08-01 09:26:27

Дополнительная цена


  • Функция Buy ((Price, Amount)

Подготовка

Используйте функцию "Buy"/Sell ((()) Есть несколько предыдущих API, с которыми вы должны быть знакомы.

  • 1, GetOrder ((orderId) получает подробную информацию о заказе по номеру заказа и возвращает структуру заказа.
  • 2, GetOrders получает все незавершенные заказы и возвращает структуру Array Order.
  • 3, CancelOrder ((orderId) отменяет заказ в зависимости от номера заказа, возвращает true или false.
  • 4, состояние заказа Статус в структуре заказа
[
        ORDER_STATE_PENDING     :未完成
        ORDER_STATE_CLOSED      :已关闭
        ORDER_STATE_CANCELED	:已取消
]
  • 5, Order Структура заказа, возвращаемая функцией GetOrder
{
        Id          :交易单唯一标识
        Price       :下单价格
        Amount      :下单数量
        DealAmount  :成交数量
        Status      :订单状态, 参考常量里的订单状态
        Type        :订单类型, 参考常量里的订单类型
}

Документация 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个币
  • Ограниченная цена

Давайте посмотрим на то, как просто использовать лимитные списки, но на самом деле лимитные списки имеют много деталей, которые нужно обработать.Раздел 3.1У нас будет очень подробный процесс обработки, который мы должны изучить.

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

Результаты были следующими:imgВы можете увидеть, что состояние отпечатанного заказа составляет 1, т.е.: ORDER_STATE_CLOSED. Текущее состояние заказа представляет собой завершенное, а dealAmount представляет собой 0.1, что также подтверждает, что заказ завершен. Стоимость сделки представляет собой dealAmount.

  • Функция Sell (Price, Amount)

Документация API

    Sell(Price, Amount)	跟Buy函数一样的调用方法和场景
  • Ограниченная цена

Выше функция Buy (), которую мы использовали для тестирования с помощью системы обратной проверки, здесь мы проверим ее с помощью диска, чтобы увидеть, есть ли какие-либо случаи, когда заказ не выполнен (или частично выполнен).

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

Изобретатели количественно оценили результаты работы диска:imgВидно, что состояние отпечатанного заказа равно 0, т.е. не завершено. DealAmount равно 0, и 2 продаваемых монета также заморожены из-за того, что заказ находится в состоянии ожидания.

Что делать с записями в ожидании? Здесь используется функция CancelOrder ((ID), которую мы используем для отмены заказов с указанием 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);
}

Результаты выполнения: показывает заказ с ID No 634795459 Последнее напечатанное сообщение Status 2 означает: ORDER_STATE_CANCELED : отмененimg

Функции GetOrder ((ID) и GetOrders ((() выглядят очень похоже, однако разница заключается в том, что первая получает информацию о заказе с указанным ID, а вторая получает информацию обо всех.未完成В результате получается, что данные, полученные в системе GetOrders, возвращаются в виде матриц объектов, т. е. матриц, в которых каждый элемент является структурой порядка.


Больше

БиджасуоЧто, если я не куплю биткоин, а куплю другую монету, и все будет хорошо?

БиджасуоМарк, пожалуйста.

ПэнглихенгЕсли вы можете, спросите меня. exchange.Buy ((ticker, 0.1) купить один и exchange.Buy ((depth, 0.1) купить один Но это не значит, что мы не можем быть счастливы. Как на самом деле рынок монет получает иран?

ФанбэйPython версия https://dn-filebox.qbox.me/a2802f5f41f416374d79c48aca05030ce2b2e8a8.png https://dn-filebox.qbox.me/d6d7d1af28993a2225ec33b092b4cf2e8c479edc.png

Изобретатели количественного измерения - мечтыПосмотрите на четвертый вопрос в этом посте: https://www.botvs.com/bbs-topic/1427 На диске можно использовать настройки пользовательских контроллеров.

Изобретатели количественного измерения - мечтыGetTicker получает данные о действиях в режиме реального времени, GetDepth получает информацию о глубине, покупка и продажа - это одно и то же.

Изобретатели количественного измерения - мечтыСпасибо, что поделились!