获取指定 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 线对象。
用法说明¶
- 得到一个 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
});
- 使用 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>
|