avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

دو Y محور کھینچنے کے لیے "لائن ڈرائنگ لائبریری" ٹیمپلیٹ کا استعمال کیسے کریں۔

میں تخلیق کیا: 2017-04-07 14:14:29, تازہ کاری: 2017-10-11 10:26:42
comments   9
hits   3588

2 Y محوروں کو کیسے ڈرائنگ کریں

  • #### پہلے اس کی نقل بنائی جائے۔画线类库یہ ٹیمپلیٹ آپ کے کنٹرول سینٹر میں ہے۔ آئیے اس پر ایک نظر ڈالتے ہیں:
画线类库
简化了策略图表画线的逻辑, 可以直接调用封装好的函数

支持画多条线
支持K线图
支持flag小图标
你也可以添加更多图形的支持
function main() {
    var isFirst = true
    while (true) {
        var records = exchange.GetRecords();
        if (records && records.length > 0) {
            $.PlotRecords(records, 'BTC')
            if (isFirst) {
                $.PlotFlag(records[records.length-1].Time, 'Start', 'S')
                isFirst = false
            }
        }
        var ticker = exchange.GetTicker()
        if (ticker) {
            $.PlotLine('Last', ticker.Last)
            $.PlotTitle('Last ' + ticker.Last)
        }

        Sleep(60000)
    }
}

اس سانچے کو استعمال کرتے ہوئے، آپ کو مندرجہ ذیل مسائل کا سامنا کرنا پڑ سکتا ہے:

دو Y محور کھینچنے کے لیے “لائن ڈرائنگ لائبریری” ٹیمپلیٹ کا استعمال کیسے کریں۔

اس کی وجہ یہ ہے کہ MACD اشارے کی مقدار بہت چھوٹی ہے اور بٹ کوائن معاہدے کی قیمت ایک Y محور کا اشتراک کرتی ہے۔ یہ چارٹ پر ظاہر ہوتا ہے کہ اشارے بہت کم پوزیشن پر ہیں اور K لائن کی قیمت بہت زیادہ پوزیشن پر ہے ، جس کے نتیجے میں ان کے متعلقہ علاقوں کو ظاہر نہیں کیا جاسکتا ہے۔ بہت چھوٹا)

اس کا حل یہ ہے کہ ایک Y محور کو چارٹ میں شامل کیا جائے تاکہ اس کی اشاریہ لائن کو الگ سے دکھایا جا سکے۔ مثال کے طور پر:

var preTime = 0;
var ChartObj = null;
function main(){
    LogReset(1);
    ChartObj = Chart(null);
    ChartObj.reset();
    var records = null;
    var MACD = null;
    exchange.SetContractType("quarter");
    // Log(exchange.GetUSDCNY());
    // exchange.SetRate(exchange.GetUSDCNY());
    exchange.SetRate(1);
    ChartObj = $.GetCfg();
    
    ///*
    // 处理 指标轴------------------------
    ChartObj.yAxis = [{
            title: {text: 'K线'},//标题
            style: {color: '#4572A7'},//样式 
            opposite: false  //生成右边Y轴
        },
        {
            title:{text: "指标轴"},
            opposite: true,  //生成右边Y轴  ceshi
        }
    ];
    // 初始化指标线
    while(!records || records.length < 30){
        records = _C(exchange.GetRecords);
        LogStatus("records.length:", records.length);
        Sleep(1000);
    }
    
    $.PlotRecords(records, 'OK期货');
    $.PlotLine('dif', 0, records[records.length - 1].Time);
    $.PlotLine('dea', 0, records[records.length - 1].Time);
    var chart = $.PlotLine('macd', 0, records[records.length - 1].Time);
    // 修改指标线 坐标轴Y轴
    for(var key in ChartObj.series){
        if(ChartObj.series[key].name == 'dif' || ChartObj.series[key].name == 'dea' || ChartObj.series[key].name == 'macd'){
            ChartObj.series[key].yAxis = 1;
        }
    }
    chart.update(ChartObj);
    chart.reset();
    //*/
    
    while(true){
        records = _C(exchange.GetRecords);
        if(records.length > 50){
            $.PlotRecords(records, 'OK期货');
            MACD = TA.MACD(records);
            var dif = MACD[0];
            var dea = MACD[1];
            var macd = MACD[2];
            if(preTime !== records[records.length - 1].Time){
                $.PlotLine('dif', dif[dif.length - 2], records[records.length - 2].Time);
                $.PlotLine('dea', dea[dea.length - 2], records[records.length - 2].Time);
                $.PlotLine('macd', macd[macd.length - 2], records[records.length - 2].Time);
                
                $.PlotLine('dif', dif[dif.length - 1], records[records.length - 1].Time);
                $.PlotLine('dea', dea[dea.length - 1], records[records.length - 1].Time);
                $.PlotLine('macd', macd[macd.length - 1], records[records.length - 1].Time);
                
                preTime = records[records.length - 1].Time;
            }else{
                $.PlotLine('dif', dif[dif.length - 1], records[records.length - 1].Time);
                $.PlotLine('dea', dea[dea.length - 1], records[records.length - 1].Time);
                $.PlotLine('macd', macd[macd.length - 1], records[records.length - 1].Time);
            }
        }
        LogStatus("records.length:", records.length, records[records.length - 1]);
        // Log(records[records.length - 1]);
        Sleep(1000);
    }
}

یاد رکھیں کہ ٹیسٹ کے دوران دو Y محور کھینچنے کے لیے “لائن ڈرائنگ لائبریری” ٹیمپلیٹ کا استعمال کیسے کریں۔ کو نشان زد کریں

اسکرین شاٹ:

دو Y محور کھینچنے کے لیے “لائن ڈرائنگ لائبریری” ٹیمپلیٹ کا استعمال کیسے کریں۔