Die Ressourcen sind geladen. Beförderung...

Wie kann man die Linienbibliothek-Linienblätter verwenden, um zwei Y-Achsen zu zeichnen

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2017-04-07 14:14:29, Aktualisiert: 2017-10-11 10:26:42

Wie kann ich die Linienkatalog-Linienkatalog-Vorlage verwenden?

  • Sie können es kopieren.画线类库Das Modell ist in seinem eigenen Kontrollzentrum eingerichtet.

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

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

Bei der Verwendung der Vorlage "Linearity" können folgende Probleme auftreten:

img

Der Grund dafür ist, dass der berechnete MACD-Indikatorwert zu klein ist, und dass die Ergebnisse nicht lokal angezeigt werden.

Die Lösung besteht darin, dem Diagramm eine Y-Achse hinzuzufügen, um die Indikatorlinien einzeln anzuzeigen.

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);
    }
}

Erinnern Sie sich an die Auswahl beim Testimg

Das Bild zeigt:

img


Mehr

ZürichEine Woche ist nur Zeit, um Code zu schreiben, und ich habe mehr als ein paar Monate lang gelernt, Code zu schreiben.

ZürichDas Problem ist gelöst.

ZürichVielen Dank! https://dn-filebox.qbox.me/90d55ceceda193667f26b9b21d5122be8a2bcb2b.png Es dauerte fast eine Woche, und schließlich schrieb ich eine visualisierte, einfache Version, mit einem einfachen Umzugsgewinn von 1% und einem negativen Umzugscode.

ZürichWenn ich die Seite öffne, muss ich kurz blinzeln, um zu sehen, welche Daten auf der Bilderkarte sind.

ZürichIch werde das berechnen, aber das Schema kann keine historischen Informationen speichern, warum wird es jedes Mal, wenn ich eine Seite aktualisiere, initialiert.

Die Erfinder quantifizieren - Kleine Träume

Die Erfinder quantifizieren - Kleine TräumeEine Woche, und schnell 666

Die Erfinder quantifizieren - Kleine TräumeBotVS-Roboter-Diagramme werden in einer permanenten Log-Datenbank in Ihrem Administrator gespeichert, wenn sie gelöscht werden.

Die Erfinder quantifizieren - Kleine TräumeWas ist das?