function draw() {

      svg.select("g.x.axis").call(xAxis);
      svg.select("g.ohlc .axis").call(yAxis);
      svg.select("g.volume.axis").call(volumeAxis);
      svg.select("g.percent.axis").call(percentAxis);
      svg.select("g.macd .axis.right").call(macdAxis);
      svg.select("g.rsi .axis.right").call(rsiAxis);
      svg.select("g.macd .axis.left").call(macdAxisLeft);
      svg.select("g.rsi .axis.left").call(rsiAxisLeft);

      // We know the data does not change, a simple refresh that does not perform data joins will suffice.
      svg.select("g.candlestick").call(candlestick.refresh);
      svg.select("g.close.annotation").call(closeAnnotation.refresh);
      svg.select("g.volume").call(volume.refresh);
      svg.select("g .sma.ma-0").call(sma0.refresh);
      svg.select("g .sma.ma-1").call(sma1.refresh);
      svg.select("g .ema.ma-2").call(ema2.refresh);
      svg.select("g.macd .indicator-plot").call(macd.refresh);
      svg.select("g.rsi .indicator-plot").call(rsi.refresh);
      svg.select("g.crosshair.ohlc").call(ohlcCrosshair.refresh);
      svg.select("g.crosshair.macd").call(macdCrosshair.refresh);
      svg.select("g.crosshair.rsi").call(rsiCrosshair.refresh);
      svg.select("g.trendlines").call(trendline.refresh);
      // svg.select("g.supstances").call(supstance.refresh);
      svg.select("g.tradearrow").call(tradearrow.refresh);
  }
//---------------END of trade arrow mouse over text functions------------------

END of trade arrow mouse over text functions
END of trade arrow mouse over text functions
function draw() {
      svg.select("g.x.axis").call(xAxis);
      svg.select("g.ohlc .axis").call(yAxis);
      svg.select("g.volume.axis").call(volumeAxis);
      svg.select("g.percent.axis").call(percentAxis);
      svg.select("g.macd .axis.right").call(macdAxis);
      svg.select("g.rsi .axis.right").call(rsiAxis);
      svg.select("g.macd .axis.left").call(macdAxisLeft);
      svg.select("g.rsi .axis.left").call(rsiAxisLeft);
      svg.select("g.candlestick").call(candlestick.refresh);
      svg.select("g.close.annotation").call(closeAnnotation.refresh);
      svg.select("g.volume").call(volume.refresh);
      svg.select("g .sma.ma-0").call(sma0.refresh);
      svg.select("g .sma.ma-1").call(sma1.refresh);
      svg.select("g .ema.ma-2").call(ema2.refresh);
      svg.select("g.macd .indicator-plot").call(macd.refresh);
      svg.select("g.rsi .indicator-plot").call(rsi.refresh);
      svg.select("g.crosshair.ohlc").call(ohlcCrosshair.refresh);
      svg.select("g.crosshair.macd").call(macdCrosshair.refresh);
      svg.select("g.crosshair.rsi").call(rsiCrosshair.refresh);
      svg.select("g.trendlines").call(trendline.refresh);
      svg.select("g.tradearrow").call(tradearrow.refresh);
  }
function draw ( ) { svg . select ( "g.x.axis" ) . call ( xAxis ) ; svg . select ( "g.ohlc .axis" ) . call ( yAxis ) ; svg . select ( "g.volume.axis" ) . call ( volumeAxis ) ; svg . select ( "g.percent.axis" ) . call ( percentAxis ) ; svg . select ( "g.macd .axis.right" ) . call ( macdAxis ) ; svg . select ( "g.rsi .axis.right" ) . call ( rsiAxis ) ; svg . select ( "g.macd .axis.left" ) . call ( macdAxisLeft ) ; svg . select ( "g.rsi .axis.left" ) . call ( rsiAxisLeft ) ; svg . select ( "g.candlestick" ) . call ( candlestick . refresh ) ; svg . select ( "g.close.annotation" ) . call ( closeAnnotation . refresh ) ; svg . select ( "g.volume" ) . call ( volume . refresh ) ; svg . select ( "g .sma.ma-0" ) . call ( sma0 . refresh ) ; svg . select ( "g .sma.ma-1" ) . call ( sma1 . refresh ) ; svg . select ( "g .ema.ma-2" ) . call ( ema2 . refresh ) ; svg . select ( "g.macd .indicator-plot" ) . call ( macd . refresh ) ; svg . select ( "g.rsi .indicator-plot" ) . call ( rsi . refresh ) ; svg . select ( "g.crosshair.ohlc" ) . call ( ohlcCrosshair . refresh ) ; svg . select ( "g.crosshair.macd" ) . call ( macdCrosshair . refresh ) ; svg . select ( "g.crosshair.rsi" ) . call ( rsiCrosshair . refresh ) ; svg . select ( "g.trendlines" ) . call ( trendline . refresh ) ; svg . select ( "g.tradearrow" ) . call ( tradearrow . refresh ) ; }
END of trade arrow mouse over text functions
END of trade arrow mouse over text functions
// We know the data does not change, a simple refresh that does not perform data joins will suffice.
 // svg.select("g.supstances").call(supstance.refresh);
