Highstock中的PivotPoints R&S备用颜色

时间:2019-06-21 12:55:41

标签: highcharts

在HighStock中使用PivotPoint,并希望电阻(R1,R2,R3)的颜色与支撑(S1,S2,S3)线的颜色不同。

考虑使用阈值和负色,但不确定如何以编程方式添加阈值以匹配P线。

{
               type: 'pivotpoints',
               linkedTo: 'MV1',
               zIndex: 0,
               lineWidth: 1,
               color:'#707073',
               negativeColor: 'red',
               threshold: 180,
               visible: false,
               clip: true,
               //color: red,
              dataLabels: {
                   overflow: 'none',
                   crop: false,
                   y: 4,
                   style: {
                       fontSize: 9
                   }
               },
               params: {
                  //period: 90
               }
           }

显然这是行不通的,因为它需要随着数据的变化而适应。

The end result if possible

1 个答案:

答案 0 :(得分:0)

使用可用的API时,没有动态阈值可以沿着P线跨越不同点的不同值。

您可以创建两个枢轴点指示器,这些指示器将以一种颜色生成一些线条-每个指示器一种颜色。为防止重叠,您可以通过为所有指标都不应该看到的所有行设置空值来提供用于计算行的自定义算法。必须为每种算法计算P线(中间),以正确显示dataLabel。

这是一个演示(以及JSFiddle中的副本):

(function(H){

H.seriesTypes.pivotpoints.prototype['std-topPlacement'] = function (values) {
                    var diff = values[1] - values[2],
                        avg = [
                            null,
                            null,
                            values[0] + diff,
                            values[0] * 2 - values[2],
                            values[0], // middle
                            null, //values[0] * 2 - values[1],
                            null, //values[0] - diff,
                            null,
                            null
                        ];

                    return avg;
                };
                
                H.seriesTypes.pivotpoints.prototype['std-bottomPlacement'] = function (values) {
                    var diff = values[1] - values[2],
                        avg = [
                            null,
                            null,
                            null, //values[0] + diff,
                            null, //values[0] * 2 - values[2],
                            values[0], // middle
                            values[0] * 2 - values[1],
                            values[0] - diff,
                            null,
                            null
                        ];

                    return avg;
                };

}(Highcharts))


$.getJSON('https://www.highcharts.com/samples/data/aapl-ohlc.json', function (data) {

    Highcharts.stockChart('container', {

        rangeSelector: {
            selected: 2
        },

        title: {
            text: 'AAPL Stock Price'
        },

        legend: {
            enabled: true
        },

        plotOptions: {
            series: {
                showInLegend: true
            }
        },

        series: [{
            type: 'ohlc',
            id: 'aapl',
            name: 'AAPL Stock Price',
            data: data,
            zIndex: 1
        }, {
        		showInLegend: false,
            type: 'pivotpoints',
            linkedTo: 'aapl',
            zIndex: 0,
            lineWidth: 3,
            color: 'red',
            params: {
            	algorithm: 'std-bottom'
            },
            dataLabels: {
                overflow: 'none',
                crop: false,
                y: 4,
                style: {
                    fontSize: 9
                }
            }
        }, {
            type: 'pivotpoints',
            linkedTo: 'aapl',
            zIndex: 0,
            lineWidth: 3,
            color: 'black',
            params: {
            	algorithm: 'std-top'
            },
            dataLabels: {
                overflow: 'none',
                crop: false,
                y: 4,
                style: {
                    fontSize: 9
                }
            }
        }]
    });
});
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<script src="https://code.highcharts.com/stock/indicators/indicators.js"></script>
<script src="https://code.highcharts.com/stock/indicators/pivot-points.js"></script>


<div id="container" style="height: 400px; min-width: 310px"></div>