获取指定 K 线序列 - GET_KLINE

GET_KLINE(config)

获取指定 K 线序列

Arguments:
  • config (object) -- K 线序列参数。
Returns:

返回 K 线对象。

参数说明

params default note
kline_id 随机字符串 默认为一个 8 位长的随机字符串
symbol   必填,合约 symbol。关于 symbol 的说明
duration   必填,K 线周期,以秒为单位。
width 100 K 线序列长度,最新一个柱子为 K 线序列的最后一个值。

Note

kline_id 是 K 线对象的唯一标识,设置相同的 kline_id,会覆盖前一个 K 线对象。

用法说明

  1. 得到一个 K 线序列
获取一个 K 线序列对象
const TQ = new TQSDK();
var kseq = TQ.GET_KLINE({
    kline_id: 'my_kline', // 若没有指定值,默认为一个 8 位长的随机字符串,随机字符串不会重复
    symbol: 'SHFE.cu1805',
    duration: 10, // 10 秒线
    width: 200, // 若没有指定值,默认设定为 100
});
  1. 使用 K 线序列
查看 K 线最后一个柱子的 id
kseq.last_id // 3550
查看 K 线序列某个字段的序列
var open = kseq.open;  // 开盘价
// 返回一个指向 K 线开盘价序列对象,若数据还没从服务器返回,则对应位置为 undefined

var datetime = kseq.datetime; // UnixNano 时间
var high = kseq.high; // 最高价
var low = kseq.low; // 最低价
var close = kseq.close; // 收盘价
var volume = kseq.volume; // 成交量
var open_oi = kseq.open_oi; // 起始持仓量
var close_oi = kseq.close_oi; // 结束持仓量
查看 K 线最后一个柱子
var k = kseq[kseq.last_id]; // 最后一根 K 线
k.open // 3330 最后一根 K 线的开盘价
k.high // 3368 最后一根 K 线的最高价

var k = kseq[kseq.last_id - 1]; // 倒数第二根 K 线
k.open // 倒数第二根 K 线的开盘价
k.high // 倒数第二根 K 线的最高价
查看 K 线最后一个柱子
kseq.open[kseq.last_id] // 3330 最后一根 K 线的开盘价
kseq.high[kseq.last_id] // 3368 最后一根 K 线的最高价

以上两种写法是等价的。K 线序列对象支持像数组一样用下标访问,下标从 0 开始到 kseq.last_id。

每个柱子的数据结构示意
k = {
    datetime: 1521529197000000000, // UnixNano 时间
    open: 51450, // 开
    high: 51450, // 高
    low: 51440, // 低
    close: 51450, // 收
    volume: 18, // 成交量
    open_oi: 295736, // 起始持仓量
    close_oi: 295739 // 结束持仓量
}

一个完整的示例

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>天勤-交易</title>
    <!-- base ui && js -->
    <link href="assets/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="assets/highlight/styles/atom-one-light.css">
    <link rel="stylesheet" href="tq.css">
</head>

<body>
    <div class="container-fluid main-container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">持仓量变化示例
                    <span class="pull-right STATE">
                        <span class="label label-danger">停止</span>
                    </span>
                </h3>
            </div>
            <ul class="list-group inputs" style="font-size:12px;">
                <li class="list-group-item tq-container">
                    <div class="row">
                        <div class="col col-xs-3">
                            <span class="pull-right">合约代码</span>
                        </div>
                        <div class="col col-xs-9">
                            <input type="text" class="form-control input-sm" placeholder="合约代码" value="SHFE.cu1805" id="symbol">
                        </div>
                    </div>

                    <div class="row">
                        <div class="col col-xs-3">
                            <span class="pull-right">K线间隔</span>
                        </div>
                        <div class="col col-xs-9">
                            <input type="number" class="form-control input-sm" placeholder="手数" value="20" id="duration">
                        </div>
                    </div>

                    <div class="row">
                        <div class="col col-xs-3">
                            <span class="pull-right">持仓量变化</span>
                        </div>
                        <div class="col col-xs-9">
                            <span id='oi'> </span>
                        </div>
                    </div>
                </li>
            </ul>
            <li class="list-group-item">
                <div class="row">
                    <div class="col col-xs-12">
                        <div class="btn-toolbar" role="toolbar">
                            <div class="btn-group btn-group-xs">
                                <button type="button" class="btn btn-default START" id="START">开始</button>
                            </div>
                            <div class="btn-group btn-group-xs">
                                <button type="button" class="btn btn-default STOP" id='STOP'>停止</button>
                            </div>
                        </div>
                    </div>
                </div>
            </li>
        </div>
        <div class="panel panel-default">
            <div class="panel-heading" role="tab" id="headingOne">
                <h4 class="panel-title">
                    <a role="button" data-toggle="collapse" href="#collapse" aria-expanded="true" aria-controls="collapse">
                        说明:K 线使用示例
                        <span id='collapse_arrow' class="glyphicon glyphicon-menu-down pull-right"></span>
                    </a>
                </h4>
            </div>
            <div id="collapse" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
                <ul class="list-group" style="font-size:12px;">
                    <li class="list-group-item">
                        <div class="row">
                            <div class="col col-xs-12">
                                <b>详细说明:</b>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col col-xs-12">
                                <p>显示最近一个 K 线柱子,结束持仓量和开始持仓量的差。</p>
                            </div>
                        </div>
                    </li>
                    <li class="list-group-item">
                        <div class="row">
                            <div class="col col-xs-12">
                                <b>源代码:</b>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col col-xs-12" id="code_container">
                                <pre><code class="javascript"></code></pre>
                            </div>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="assets/jquery.min.js"></script>
    <script type="text/javascript" src="assets/bootstrap/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="assets/highlight/highlight.pack.js"></script>
    <script type="text/javascript" src="assets/noty.js"></script>

    <!-- del:start -->
    <script type="text/javascript" src="libs/modules/utils.js"></script>
    <script type="text/javascript" src="libs/modules/color.js"></script>
    <script type="text/javascript" src="libs/modules/event.js"></script>
    <script type="text/javascript" src="libs/modules/datamanager.js"></script>
    <script type="text/javascript" src="libs/modules/indDefineCtx.js"></script>
    <script type="text/javascript" src="libs/modules/indRunCtx.js"></script>
    <script type="text/javascript" src="libs/modules/tamanager.js"></script>
    <script type="text/javascript" src="libs/modules/taskmanager.js"></script>
    <script type="text/javascript" src="libs/modules/websocket.js"></script>
    <!-- del:end -->

    <script type="text/javascript" src="libs/func/basefuncs.js"></script>
    <script type="text/javascript" src="libs/tqsdk.js"></script>

    <script type="text/javascript" id='TRADE-CODE'>
        const TQ = new TQSDK();

        function* TaskKLine() {
            TQ.SET_STATE('START');

            var kseq = TQ.GET_KLINE(TQ.UI());

            while (true) {
                var result = yield {
                    USER_CLICK_STOP: TQ.ON_CLICK('STOP'),
                    SHOW: function () {
                        if (kseq[kseq.last_id]) {
                            TQ.UI.oi = kseq[kseq.last_id].close_oi - kseq[kseq.last_id].open_oi;
                        }
                        return false;
                    }
                };
                if (result.USER_CLICK_STOP) break;
            }

            TQ.SET_STATE('STOP');
            return;
        }

        $('button#START').on('click', function (e) {
            TQ.START_TASK(TaskKLine);
        });
    </script>
</body>

</html>