दो Y-अक्षों को आकर्षित करने के लिए स्ट्रिंग लाइब्रेरी टेम्पलेट का उपयोग कैसे करें

लेखक:छोटे सपने, बनाया गयाः 2017-04-07 14:14:29, अद्यतन किया गयाः 2017-10-11 10:26:42

कैसे उपयोग करने के लिए कंक्रीट ड्राइंग लाइन लाइब्रेरी कंक्रीट टेम्पलेट दो वाई-अक्ष ड्राइंग

  • पहले कॉपी कर सकते हैं画线类库इस टेम्पलेट को अपने नियंत्रण केंद्र में लाया गया है। आइए एक नज़र डालते हैंः

画线类库
简化了策略图表画线的逻辑, 可以直接调用封装好的函数

支持画多条线
支持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)
    }
}

इस टेम्पलेट का उपयोग करते समय आप निम्न समस्याओं का सामना कर सकते हैंः

img

इसका कारण यह है कि गणना की गई 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);
    }
}

याद रखें कि जब आप परीक्षण कर रहे थेimg

तस्वीरें देखेंः

img


अधिक

पेंगलिहेंगएक सप्ताह सिर्फ कोड लिखने का समय होता है, और पिछले कुछ महीनों में मैंने कोड सीखने में हिम्मत नहीं जुटाई।

पेंगलिहेंगसमस्या हल हो गई

पेंगलिहेंगबहुत बहुत धन्यवाद! https://dn-filebox.qbox.me/90d55ceceda193667f26b9b21d5122be8a2bcb2b.png लगभग एक हफ्ते के बाद, अंत में एक विज़ुअलाइज़ेबल सरल संस्करण लिखा गया है, केवल 1% लाभ के साथ, और कुल लाभ नकारात्मक है।

पेंगलिहेंगजब भी आप पेज खोलते हैं, तो एक पल के लिए ब्राउज़ करें ताकि आप देख सकें कि आपके द्वारा प्रदर्शित डेटा क्या है।

पेंगलिहेंगबहुत बहुत धन्यवाद, मैं गणना कर सकता हूं कि शुद्ध स्थानांतरण लाभ क्या है, लेकिन यह नीति चित्र ऐतिहासिक जानकारी नहीं बचा सकता है, मैं पृष्ठ को ताज़ा करने पर यह चार्ट क्यों आरंभ करता है?

छोटे सपने

छोटे सपनेएक सप्ताह में, तेजी से 666

छोटे सपनेBotVS पर रोबोटों के चार्ट स्थायी रूप से लॉग इन डेटाबेस में रखे जाते हैं, आपके प्रशासक के स्थानीय स्तर पर, यदि हटा दिया जाता है, तो आप देख सकते हैं कि क्या आपके कोड में कोई आरंभिकता है।

छोटे सपनेक्या? क्या यह...?