2017-03-29 29 views
0

問題陳述:在運行時間期間更新fieldMappings和數據集之後AmChart-更新fieldMappings和數據集之後,圖形並不繪製

用於stockgraph(點擊一個按鈕後),validateNow()/ validteData()不繪製圖表。

注:MACD0從25日加入的元素步步高expoSignalLine0從33元以後在數據提供程序fieldMapping加入也得到更新,並且可以驗證在控制檯一樣。 enter code here

以下是代碼片段: (addMACD函數被調用一個按鈕的點擊)

function addMACD() { 
    var chart = AmCharts.charts[ 0 ]; 
    AmCharts.MACDGraphs = 0; 
    AmCharts.expoSignalLineGraphs = 0; 
    var MACDField = "MACD"+ AmCharts.MACDGraphs; 
    var expoSignalLineField = "expoSignalLine"+ AmCharts.expoSignalLineGraphs; 

    chart.dataSets[0].fieldMappings.push({ 
      fromField : MACDField, 
      toField : MACDField 
    }, 

    { 
      fromField : expoSignalLineField, 
      toField : expoSignalLineField 
    }); 

    var currClose; 
    var prevClose; 
    var twelveDayEMA =[]; 
    var twentySixDayEMA =[]; 
    var MACDarray = []; 
    var signalLineArray = []; 
    var MACDperiod = 9 ;// 9 day exponential average 
    for (var i = 1; i < (chart.dataSets[0].dataProvider.length); i++) { 

      var dp = chart.dataSets[0].dataProvider[i - 1]; 
      prevClose = parseFloat(dp["close"]); 

      var dp = chart.dataSets[0].dataProvider[i]; 
      currClose = parseFloat(dp["close"]); 
      if(i==1){ 
        twelveDayEMA[i] = (0.15*currClose) + (0.85*prevClose); 
        twentySixDayEMA[i] = (0.075*currClose) + (0.925*prevClose); 
      } 
      else{ 
        twelveDayEMA[i] = (0.15*currClose) + (0.85*twelveDayEMA[i - 1]); 
        twentySixDayEMA[i] = (0.075*currClose) + (0.925*twentySixDayEMA[i - 1]); 
      } 

      if(i >= 25){ 

        MACDarray[i] = twelveDayEMA[i] - twentySixDayEMA[i] ; 
        dp[MACDField] = MACDarray[i]; 

        if(i == 25){ 
          signalLineArray[i] = MACDarray[i]; 

        } 
        else{ 
          signalLineArray[i] = (MACDarray[i]*(2/(MACDperiod + 1))) + (signalLineArray[i - 1]*(1-(2/(MACDperiod + 1))))   
        } 
      } 
      if(i >=33){ 
        dp[expoSignalLineField] = signalLineArray[i]; 
      } 

    } 
    console.log(chart); 


    if (chart.panels.length == 1 || chart.panels.length == 2 || chart.panels.length == 3 || chart.panels.length == 4 || chart.panels.length == 5) { 

var newPanel = new AmCharts.StockPanel(); 
newPanel.allowTurningOff = true; 
newPanel.title = "MACD"; 
newPanel.showCategoryAxis = false; 

graph1 = new AmCharts.StockGraph(); 
graph1.valueField = MACDField; 
graph1.useDataSetColors = false; 
graph1.lineColor="#6699FF"; 
graph1.title = "MACD"; 
newPanel.stockGraphs.push(graph1); 

graph2 = new AmCharts.StockGraph(); 
graph2.valueField =expoSignalLineField; 
graph2.useDataSetColors = false; 
graph2.lineColor = "#990000"; 
graph2.title = "MACD2"; 
newPanel.stockGraphs.push(graph2); 

var legend = new AmCharts.StockLegend(); 
legend.markerType = "none"; 
legend.markerSize = 0; 
newPanel.stockLegend = legend; 
chart.addPanelAt(newPanel, 1); 



chart.validateData(); 
chart.validateNow(); 
//chart.write("chartdiv"); 
    } 
} 
+0

這裏是小提琴鏈接: https://jsfiddle.net/ujat2zar/1/ – VenkateshNavali

回答

相關問題