4
Подписаться
1271
Подписчики

2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Создано: 2016-11-05 16:41:04, Обновлено: 2019-08-01 09:31:23
comments   39
hits   10907

2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Наконец-то мы пришли к второй главе, и после просмотра предыдущей главы, мы должны иметь некоторое представление о возможностях, которые изобретатель может измерить.


  • ### Использование API для получения информации об учетной записи

Предположим, что мы уже добавили хостеры и биржи в первой части экскурсии, и, конечно, мы можем тестировать код с помощью Inventor Quantum Simulator.

Давайте сначала создадим стратегию, назовем ее тест 1. 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Интерфейс редактирования стратегий 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Код выглядит следующим образом:

function main() {
    Log(exchange.GetAccount()); // 看过API 文档后知道, exchange就是交易所对象,实际上策略有个全局变量
                                // exchanges 数组,这个数组存放的就是你创建机器人或者回测时添加的交易所(可以是多个)
                                // 添加1个交易所 exchanges 数组就只包含1个交易所对象,即添加的交易所对象。
                                // 那么 exchange 和 exchanges 是什么关系呢? 其实 exchange 就是 exchanges[0] ,
                                // exchange 就是 exchanges 数组的第一个元素(这里这个元素是交易所对象)。
                                
                                // Log()函数应该也不陌生吧,这个API 就是输出一条日志,日志内容就是Log括号里面的参数。
}

Создание робота, также известного как Test 1, связано с стратегией, известной как Test 1 , с использованием изобретателями количественного тестирования имитационных дисков. 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Стратегия была запущена мгновенно, и в ней появилась информация об аккаунте. 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Мы сравниваем данные счетов с аналогичным диском. 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

  • ### Получить рыночные данные
function main() {
    Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
    //下面我们来试试 不停的获取行情数据。 
    while(true){ // 这里用一个无限循环的结构来不停的获取 交易所行情数据。
        Log("行情数据:", exchange.GetTicker()); // 哇! Log() 函数的括号里面可以写2个参数,第一个参数是: "行情数据:"
                                               // 第二个参数是 exchange.GetTicker() 这个函数的返回值。就是主交易所的行情数据。
                                               // 注意 Log() 函数的参数要用 逗号分隔。
        Sleep(1000);   // 咦~ 这个又是什么? 答:机器人程序 执行循环也需要休息!它可是执行很快的哦!(一秒N次)
                       // Sleep 函数的作用就是让程序暂停一会儿,括号里面的参数 1000 是 毫秒数, 1秒 = 1000毫秒。Sleep(1000);就是暂停1000毫秒。
                       // 不要小看这个参数,这个参数控制了程序的轮询频率,间接影响访问 交易所API 的频率,有些交易所API访问过于频繁可是会拒绝访问的。
    }
}

2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка Примечание:Может быть, некоторые ученые обнаружили, что данные, полученные функцией GetTicker, имеют разницу между максимальной и минимальной ценой, что означает, что GetTicker возвращает высокую и низкую цену в течение определенного периода, в зависимости от того, что устанавливает биржа.

  • ### Получение данных K-линии

Давайте посмотрим на описание в документации API:

GetRecords(Period)	返回一个K线历史, K线周期在创建机器人时指定, Record数组结构
不加参数, 默认返回添加机器人时时指量的K线周期, 但也可以自定义K线周期
支持: PERIOD_M1 指1分钟, PERIOD_M5 指5分钟, PERIOD_M15 指15分钟, PERIOD_M30 指30分钟, PERIOD_H1 指1小时, PERIOD_D1 指一天

Мы написали тест-код, чтобы получить данные K-линий с дефолтным периодом (~5 минут).

function main() {
    Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
    //下面我们来试试 不停的获取行情数据。 
    var records = exchanges[0].GetRecords();  // 按照默认周期获取K线数据
    Log("records:", records);  // 在日志中输出 获取到的K线数据。
}

Показать выход: records: [{“Time”:1478260200000,“Open”:4765.14,“High”:4773,“Low”:4764.54,“Close”:4769.47,“Volume”:5211.539999999999}, {“Time”:1478260500000,“Open”:4769.47,“High”:4773.01,“Low”:4764,“Close”:4764.78,“Volume”:3742.250000000002}, {“Time”:1478260800000,“Open”:4764.78,“High”:4782,“Low”:4764,“Close”:4781.28,“Volume”:7929.090000000004}, {“Time”:1478261100000,“Open”:4781.28,“High”:4795,“Low”:4774,“Close”:4792.02,“Volume”:11793.540000000006}, {“Time”:1478261400000,“Open”:4792.02,“High”:4792.96,“Low”:4781,“Close”:4786.78,“Volume”:9204.90000000001}, {“Time”:1478261700000,“Open”:4786.51,“High”:4788.66,“Low”:4775,“Close”:4775.31,“Volume”:7722.3399999999965}]

Можно увидеть, что переменные records - это структурный массив, расположенный по K-линейной хронологической последовательности от далекого ((индекс 0) до близкого ((индекс records.length - 1)). Давайте познакомимся с K-линией: ((некоторые графики - красный для солнечных лучей, зеленый - для лучей света, а некоторые - наоборот.)) 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка Взгляните на график K-линий с 5-минутным циклом на платформе. 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка Уведомление:После завершения K-линейного цикла его значение определяется. В практическом применении мы вызываем var records = exchanges[0].GetRecords(); возвращается последний элемент в массиве данных records: records[records.length - 1], изменяется до завершения своего цикла. Возможно, даже в последнюю секунду, от солнца до луны.

Функция GetRecords возвращает данные в соответствии с установленным политикой циклом без добавления параметров. Также можно вводить параметры для определения циклов K-линий. В настоящее время система обратной связи поддерживает передачу параметров GetRecords для определения циклов (без добавления параметров для возвращения данных по умолчанию), что позволяет одновременно использовать различные циклы при повторном измерении политики.

  • ### Получить глубокую информацию о рынке

GetDepth возвращает структуру Depth

function main() {
    var depth = exchanges[0].GetDepth();   //获取市场深度信息,  返回订单薄信息,一个对象包含2个属性,每个属性是一个对象数组。
    Log("depth:", depth);    // 日志中输出,一下的输出是 整理过的格式,是方便读者理解,实际上是所有内容都在一行显示的。
}

Вышеприведенный анализ кода показывает следующее:

depth: 
{"Asks":[{"Price":4726.07,"Amount":15},   // 卖单数组,回测时,数据都是模拟出来的,所以Amount 都是 15,索引为0的是卖一,依次类推。
         {"Price":4726.08,"Amount":15},
         {"Price":4726.09,"Amount":15},
         {"Price":4726.1,"Amount":15},
         {"Price":4726.11,"Amount":15},
         {"Price":4726.12,"Amount":15},
         {"Price":4726.13,"Amount":15},
         {"Price":4726.14,"Amount":15},
         {"Price":4726.15,"Amount":15},
         {"Price":4726.16,"Amount":15},
         {"Price":4726.17,"Amount":15}],
"Bids":[{"Price":4726.05,"Amount":15},   //  买单数组,索引为0的是买一, 向后依次类推。
        {"Price":4726.04,"Amount":15},
        {"Price":4726.03,"Amount":15},
        {"Price":4726.02,"Amount":15},
        {"Price":4726.01,"Amount":15},
        {"Price":4726,"Amount":15},
        {"Price":4725.99,"Amount":15},
        {"Price":4725.98,"Amount":15},
        {"Price":4725.97,"Amount":15},
        {"Price":4725.96,"Amount":15},
        {"Price":4725.95,"Amount":15}]
}

Соответствующий заказ на OKCoin выглядит следующим образом: ((Вот реальные данные OKCoin)). Информация о глубине рынка в реальном процессе: ((Заказ на OKCoin)) быстро меняется, заинтересованные студенты могут зарегистрироваться в OKCoin, а затем войти и посмотреть.

2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка

Как можно использовать данные о глубине рынка (информацию об инвентаризации)? Данные об инвентаризации могут быть полезны для многих целей, например, для еды (и, конечно же, для привязки).

function main() {    
    var depth = exchanges[0].GetDepth();    // 获取市场深度
    Log("depth:", depth);                   // 日志输出显示
    Log(exchanges[0].GetAccount());         // 输出 吃单前的 账户信息
    var buyPrice = depth.Asks[0].Price;     // 设置吃卖单的价格,即卖一,
                                            // 有时为确保吃单成功,这样处理:var buyPrice = depth.Asks[0].Price + slidePrice;
    var buyAmount = depth.Asks[0].Amount;   // 吃卖单的量
    exchanges[0].Buy(buyPrice, buyAmount);  // 执行买入操作, 吃掉卖一 这个单子
    Log(exchanges[0].GetAccount());         // 显示买入后的  账户信息,对比初始账户信息。可以对比出 买入操作的成交的数量。
}

Результаты измерения производителя: 2.1 Используйте API для получения информации о счете, рыночных данных, данных K-line и информации о глубине рынка