资源加载中... loading...

商品期货「订单流」系列文章(四):微单和POC

Author: ianzeng123, Created: 2024-08-06 17:16:51, Updated: 2024-08-12 16:59:22

img

在前面的三篇文章中,我们介绍了「订单流」的概念以及相关的Delta,供需失衡和堆积带指标,以及在优宽量化进行指标代码复现。本篇文章中,我们将介绍订单流的两个判断市场趋势反转的指标:微单和POC。

微单

订单流指标中的“微单”通常指的是在特定的价格区间内,买单或卖单的数量显著大于其他价格区间的现象。这种现象可能表明市场在这些价格区间内有较强的买入或卖出意愿,从而可以作为市场潜在的支撑或阻力位。微单分析可以帮助交易者识别出市场中的重要价位,从而做出更好的交易决策。

判断标准

在订单流交易中,微单的检测通常有以下几个方面:

  1. 顶部微单:指的是在市场价格上涨过程中,某一特定价格区间内的买单数量显著增加,表明在该价位上有大量买盘,这可能会成为潜在的阻力位。

判断方法:如果行情位于顶部区域,可观察主买区K线顶部的微单,不观察主卖区K线顶部的微单。如果主买区顶部第二档的买单数量除以最顶部的买单数量的比例大于28,则提醒出现顶部微单。

img

  1. 底部微单:指的是在市场价格下跌过程中,某一特定价格区间内的卖单数量显著增加,表明在该价位上有大量卖盘,这可能会成为潜在的支撑位。

判断方法:如果行情位于底部区域,可观察主卖区K线底部的微单,不观察主买区K线底部的微单。如果主卖区倒数第二档的卖单数量除以最低档的卖单数量的比例大于28,则提醒出现底部微单。

img

代码实现

检测微单的方法可以通过以下步骤进行:

  1. 数据收集:收集订单流数据,记录每个价格区间内的买单和卖单数量(前面文章已实现)。
  2. 计算比例:计算相邻价格区间内买单和卖单的比例。
  3. 识别微单:根据设定的阈值识别出顶部或底部的微单。

以下是对微单的进一步代码实现:

var curBar = self.records[self.records.length - 1].data;
var curClose = self.records[self.records.length - 1].close;

// 将data对象转换为数组并排序
var dataArray = Object.keys(curBar).map(function(price) {
    return {
        price: parseInt(price),
        sell: curBar[price].sell,
        buy: curBar[price].buy,
        total: curBar[price].sell + curBar[price].buy
    };
}).sort(function(a, b) {
    return b.price - a.price; // 从大到小排序
});

if (dataArray.length > 2) {
    // 顶部微单判断
    if (dataArray[1].buy / dataArray[0].buy > 28) {
        Log('顶部微单出现,价格可能呈现反转向下趋势#00ff00','@');
    }

    // 底部微单判断
    var len = dataArray.length;
    if (dataArray[len - 2].sell / dataArray[len - 1].sell > 28) {
        Log('底部微单出现,价格可能呈现反转向上趋势#ff0000','@');
    }
}

这个示例代码中:

  • 顶部微单判断:如果第二档价格的买单数相对于第一档价格的买单数的比例大于28,则认为出现顶部微单。
  • 底部微单判断:如果倒数第二档价格的卖单数相对于倒数第一档价格的卖单数的比例大于28,则认为出现底部微单。

通过这种方式,我们可以及时捕捉到微单情况,并且使用’@'符号可以及时发出通知,提醒我们注意趋势的变化,省去了我们人工盯盘的烦恼。

img

POC

POC代表最大成交量位置,它是当前K线的重心。POC出现的位置和数值大小反映了市场潜在的力量变化。一般来说,POC靠近底部代表强烈买入,靠近顶部代表强烈卖出。通过POC的概念,我们可以识别出在一根K线中哪个价格点的交易最为集中,这通常意味着该点位是多空双方博弈的焦点。通常情况下,POC位于K线的中部,但如果它出现在K线的顶部或底部,这通常具有特别的意义。

img

如何判断行情的底部或顶部形成POC是技术分析的一个辅助工具。在下跌行情中,如果POC出现在K线的相对底部且远离收盘价,这可能预示着市场反转的信号。相反,如果POC出现在K线的相对顶部且远离收盘价,后续行情可能会出现下跌。

具体应用方法如下:

  1. POC出现在K线底部且远离收盘价

    • 这是一个积极的信号,表明后期行情有较大可能性上涨。市场在较低价格区域成交量大,显示出买盘力量强劲,预示着价格可能向上反转。
  2. POC出现在K线顶部且远离收盘价

    • 这是一个利空的信号,表明后期行情有较大可能性下跌。市场在较高价格区域成交量大,显示出卖盘力量强劲,预示着价格可能向下反转。

POC本身并不是一个独立的指标,但可以用来对一个价格运动进行确认,通过重心所在的位置的变化判断未来市场方向的变化。

以下代码实现了上述概念,通过计算每个价位的买卖单数量,找出最大成交量位置(POC),并判断POC是否远离收盘价,从而提示可能的市场反转信号:

var curBar = self.records[self.records.length - 1].data
var curClose = self.records[self.records.length - 1].close

// 将data对象转换为数组并排序
var dataArray = Object.keys(curBar).map(function(price) {
    return {
        price: parseInt(price),
        sell: curBar[price].sell,
        buy: curBar[price].buy,
        total: curBar[price].sell + curBar[price].buy
    };
}).sort(function(a, b) {
    return b.price - a.price; // 从大到小排序
});

if (dataArray.length > 2) {

    // 找出POC(最大total的价格)
    var poc = dataArray.reduce(function(max, item) {
        return item.total > max.total ? item : max;
    });

    // 判断POC是否远离收盘价
    var distance = poc.price - curClose;
    var priceTick = exchange.SetContractType(contract).PriceTick;

    if (distance > 3 * priceTick) { // 出现在顶部,可能出现下跌的趋势
        Log('POC远离收盘价,出现在顶部,价格可能呈现反转向下趋势#ff0000','@');
    }

    if (distance < -3 * priceTick) { // 出现在底部,可能出现上涨的趋势
        Log('POC远离收盘价,出现在底部,价格可能呈现反转向上趋势#ff0000','@');
    }
}

该代码首先按价格从高到低排序。然后,通过遍历数组找到最大成交量位置(POC)。接着,计算POC与当前收盘价的距离,并判断该距离是否超过3个最小价格变动单位(price tick,可以根据自身交易经验设置)。如果超过,则根据POC出现的位置(顶部或底部)提示可能的市场反转信号。

img

结语

以上呢,就是我们基于订单流开发的一系列指标,但是更多的是基于科普的性质,并未开展深入的研究。大家可根据自身的交易检验,将这些指标引入到你的交易模型当中,如果有好的交易想法,也欢迎大家留言,一起交流,共同进步。


更多内容