/* ------------------------------------------------------------ /* Arguments p1, p2 - define slice of global array with dates /* @author Martin Nachev (15.10.2014) /* ------------------------------------------------------------ */ function labels_X( p1, p2 ){ var moins_an = false; var d_ = data_date[p1].substr(4, 2); var date_ds = new Date(data_date[p1].substr(0, 4)+"-"+data_date[p1].substr(4, 2)+"-"+data_date[p1].substr(6, 2)); var date_de = new Date(data_date[p2-1].substr(0, 4)+"-"+data_date[p2-1].substr(4, 2)+"-"+data_date[p2-1].substr(6, 2)); if ( ( ( (date_de.getTime()) - (date_ds.getTime())) / (1000*60*60*24) ) < 350 ){ moins_an = true SymexChartGlobals.period1M = 1; }else{ SymexChartGlobals.period1M = 0; } if ( (SymexChartGlobals.period_type == "months" && SymexChartGlobals.period_qty == "1" && SymexChartGlobals.period1M > 0) ) { // var j - count steps, auto iterate in loop! for( var i = p1, j = 1; i < p2; i++, j++ ) { if ( d_ != data_date[i].substr( 6, 2 )) { // Get day d_ = data_date[i].substr( 6, 2 ); // Calculate X position var pos = SymexChartGlobals.stepX * j - SymexChartGlobals.stepX; // Put vertical line var new_div = document.createElement( "div" ); new_div.className ="labelsX"; new_div.style.left = pos.toFixed(0) + "px"; document.getElementById( "priceGraph" ).appendChild( new_div ); // We display vertical line on every day but labels not... if ( i % SymexChartGlobals.period1M != 0 ) { continue; } // Get month var pos_m = data_date[i].substr(4, 2); pos_m = pos_m.substr( 0, 1 ) == "0" ? pos_m.substr( 1, 1 ) : pos_m; var labTXT = ""; var moveLeft = 0; if ( SymexChartGlobals.language == "en" ) { labTXT = SymexChartSettings.lang_array[ pos_m ] + " " + data_date[i].substr(6, 2); moveLeft = 15; }else { labTXT = data_date[i].substr(6, 2) + "/" + data_date[i].substr(4, 2); moveLeft = 15; } // Center label under vertical line // Take care about first label position // CSS margin left rule is not needed anymore (`.labelsX_txt`) var mLeft = pos > moveLeft ? "-" + moveLeft + "px" : "0"; // Put X label var new_div_txt = document.createElement( "div" ); new_div_txt.className = "labelsX_txt"; new_div_txt.innerHTML = labTXT; new_div_txt.style.left = pos.toFixed(0) + "px"; new_div_txt.style.marginLeft = mLeft; document.getElementById( "priceGraph" ).appendChild( new_div_txt ); } } }else if(moins_an){ var a_ = "" for( var i = p1, j = 1; i < p2; i++, j++ ) { if ( d_ != data_date[i].substr( 4, 2 )) { // Get day d_ = data_date[i].substr( 4, 2 ); // Calculate X position var pos = SymexChartGlobals.stepX * j - SymexChartGlobals.stepX; // Put vertical line var new_div = document.createElement( "div" ); new_div.className = "labelsX"; new_div.style.left = pos.toFixed(0) + "px"; document.getElementById( "priceGraph" ).appendChild( new_div ); // We display vertical line on every day but labels not... if ( i % SymexChartGlobals.period1M != 0 ) { continue; } // Get month var pos_m = data_date[i].substr(4, 2); pos_m = pos_m.substr( 0, 1 ) == "0" ? pos_m.substr( 1, 1 ) : pos_m; var labTXT = ""; var moveLeft = 0; labTXT = SymexChartSettings.lang_array[pos_m] ; if(data_date[i].substr(2, 2) != a_ ){ labTXT += " " + data_date[i].substr(2, 2); moveLeft = -2; } a_ = data_date[i].substr(2, 2); //moveLeft = 15; // Center label under vertical line // Take care about first label position // CSS margin left rule is not needed anymore (`.labelsX_txt`) var mLeft = pos > moveLeft ? "-" + moveLeft + "px" : "0"; // Put X label var new_div_txt = document.createElement( "div" ); new_div_txt.className = "labelsX_txt"; new_div_txt.innerHTML = labTXT; new_div_txt.style.left = pos.toFixed(0) + "px"; new_div_txt.style.marginLeft = mLeft; document.getElementById( "priceGraph" ).appendChild( new_div_txt ); } } }else{ // var j - count steps, auto iterate in loop! for( var i = p1, j = 1; i < p2; i++, j++ ){ if( d_ != data_date[i].substr(4, 2) ) { // Get month d_ = data_date[i].substr(4, 2); // Calculate X position var pos = SymexChartGlobals.stepX * j - SymexChartGlobals.stepX; // One year period if (SymexChartGlobals.period_type == "years" && SymexChartGlobals.period_qty == 1 && d_ != "01" && d_ != "04" && d_ != "07" && d_ != "10" ) { continue; } // More than one year period else if ((SymexChartGlobals.period_type == "years" && SymexChartGlobals.period_qty > 1 && d_ != "01") || (!moins_an && d_ != "01")) { continue; } // Put vertical line if(pos.toFixed(0) < SymexChartGlobals.chart_width){ var new_div = document.createElement("div"); new_div.className = "labelsX"; new_div.style.left = pos.toFixed(0) + "px"; document.getElementById( "priceGraph" ).appendChild( new_div ); } var pos_m = data_date[i].substr(4, 2); if ( pos_m.substr(0, 1) == '0' ) pos_m = pos_m.substr(1, 1); var labTXT = ""; var moveLeft = 0; if ( (SymexChartGlobals.period_type == "years" && SymexChartGlobals.period_qty > 1) || !moins_an ) { labTXT = data_date[i].substr(0, 4); // Only year moveLeft = 5; }else{ labTXT = SymexChartSettings.lang_array[pos_m] + " " + data_date[i].substr(0, 4); moveLeft = 20; } // Center label under vertical line // Take care about first label position // CSS margin left rule is not needed anymore (`.labelsX_txt`) var mLeft = pos > moveLeft ? "-" + moveLeft + "px" : "0"; // Put X label if(pos.toFixed(0) < SymexChartGlobals.chart_width){ var new_div_txt = document.createElement("div"); new_div_txt.className = "labelsX_txt"; new_div_txt.innerHTML = labTXT; new_div_txt.style.left = pos.toFixed(0) + 'px'; new_div_txt.style.marginLeft = mLeft; document.getElementById( "priceGraph" ).appendChild( new_div_txt ); } } } } } function labels_Other_X( p1, p2,y){ var d_ = data_date[p1].substr(4, 2); if ( SymexChartGlobals.period_type == "months" && SymexChartGlobals.period_qty == "1" && SymexChartGlobals.period1M > 0 ) { // var j - count steps, auto iterate in loop! for( var i = p1, j = 1; i < p2; i++, j++ ) { if ( d_ != data_date[i].substr( 6, 2 ) ) { // Get day d_ = data_date[i].substr( 6, 2 ); // Calculate X position var pos = SymexChartGlobals.stepX * j - SymexChartGlobals.stepX; if(pos.toFixed(0) < SymexChartGlobals.chart_width){ // Put vertical line var new_div = document.createElement( "div" ); new_div.className ="labelsX_rsi"; new_div.style.left = pos.toFixed(0) + "px"; document.getElementById( "secondGraph"+y ).appendChild( new_div ); } } } }else{ // var j - count steps, auto iterate in loop! for( var i = p1, j = 1; i < p2-1; i++, j++ ) { if ( d_ != data_date[i].substr(4, 2) ) { // Get month d_ = data_date[i].substr(4, 2); // Calculate X position var pos = SymexChartGlobals.stepX * j - SymexChartGlobals.stepX; // One year period if(SymexChartGlobals.period_type == "years" && SymexChartGlobals.period_qty == 1 && d_ != "01" && d_ != "04" && d_ != "07" && d_ != "10" ){ //continue; } // More than one year period else if(SymexChartGlobals.period_type == "years" && SymexChartGlobals.period_qty > 1 && d_ != "01" ){ //continue; } if(pos.toFixed(0) < SymexChartGlobals.chart_width){ // Put vertical line var new_div = document.createElement("div"); new_div.className = "labelsX_rsi"; new_div.style.left = pos.toFixed(0) + "px"; document.getElementById( "secondGraph"+y ).appendChild( new_div ); } } } } } function labels_X_summary(){ var d_ = data_date[0].substr(0, 4); var j = 0; //number of current label 'X' //local calculation for step 'X' for all period (without zoom) var stepX_ = (SymexChartGlobals.chart_width * 0.95) / (SymexChartGlobals.points_qty-1); for( var i = 0; i < data_date.length; i++ ){ if ( d_ != data_date[i].substr(0, 4) ){ d_ = data_date[i].substr(0, 4); var new_div = document.createElement("div"); new_div.className ="labelsX_summary"; var new_div_txt = document.createElement("div"); new_div_txt.className ="labelsX_txt_summary"; new_div_txt.innerHTML = d_; document.getElementById('summaryGraph').appendChild(new_div); document.getElementById('summaryGraph').appendChild(new_div_txt); var pos = stepX_ * j ; //because of +1 by calculation of precCell pos new_div.style.left = pos.toFixed(0) + 'px'; new_div_txt.style.left = pos.toFixed(0) + 'px'; } j++; } } function labels_pivot(){ //alert("coucou"); var x0 = 0; var y0 = 0; var x1 = 200; var y1 = 200; var LignePivot = 0; var canvas = document.getElementById("price_0"); var context = canvas.getContext("2d"); var close = data_close_0[data_close_0.length-1]; var low = data_low_0[data_low_0.length-1]; var high = data_high_0[data_high_0.length-1]; var value; LignePivot = y0 + (y1-y0); //pivot_0 = (close + high + low) / 3; //PIVOT coefStepY = (SymexChartGlobals.max_[0] - SymexChartGlobals.min_[0]) / SymexChartGlobals.chart_height; var pos = (SymexChartGlobals.max_[0] - pivot_0) / coefStepY ; posX = parseInt( SymexChartGlobals.stepX * (data_date.length - 4 - SymexChartGlobals.begin)) context.beginPath(); context.moveTo(posX,pos); context.lineTo(canvas.width - 40,pos); context.lineWidth = 1; context.strokeStyle = '#000000'; context.stroke(); context.fillStyle="black"; context.fillText(pivot_0.toFixed(3), canvas.width - 70, pos - 5); //SUPPORT 1 value = S1_0; var pos = (SymexChartGlobals.max_[0] - (value)) / coefStepY ; context.beginPath(); context.moveTo(posX,pos); context.lineTo(canvas.width - 80,pos); context.lineWidth = 1; context.strokeStyle = '#ff0000'; context.stroke(); context.fillStyle="#ff0000"; context.fillText(value.toFixed(3), canvas.width - 110, pos + 15); //SUPPORT 2 value = S2_0; var pos = (SymexChartGlobals.max_[0] - value) / coefStepY ; context.beginPath(); context.moveTo(posX,pos); context.lineTo(canvas.width - 120,pos); context.lineWidth = 1; context.strokeStyle = '#ff0000'; context.stroke(); context.fillStyle="#ff0000"; context.fillText(value.toFixed(3), canvas.width - 150, pos + 15); //RESISTANCE 1 value = R1_0; var pos = (SymexChartGlobals.max_[0] - (value)) / coefStepY ; context.beginPath(); context.moveTo(posX,pos); context.lineTo(canvas.width - 80,pos); context.lineWidth = 1; context.strokeStyle = '#008000'; context.stroke(); context.fillStyle="#008000"; context.fillText(value.toFixed(3), canvas.width - 110, pos - 5); //RESISTANCE 2 value = R2_0; var pos = (SymexChartGlobals.max_[0] - (value)) / coefStepY ; context.beginPath(); context.moveTo(posX,pos); context.lineTo(canvas.width - 120,pos); context.lineWidth = 1; context.strokeStyle = '#008000'; context.stroke(); context.fillStyle="#008000"; context.fillText(value.toFixed(3), canvas.width - 150, pos - 5); /* if (x0 < x1) { context.fillText(LignePivot.toFixed(1) + "% : " + " " + PixeltoEuro(LignePivot).toFixed(2), x0, LignePivot-3); } else { context.fillText(LignePivot.toFixed(1) + "% : " + " " + PixeltoEuro(LignePivot).toFixed(2), x1, LignePivot-3); } */ /*var new_div = document.createElement("div"); new_div.className ="pivot_line"; document.getElementById('priceGraph').appendChild(new_div); coefStepY = (SymexChartGlobals.max_[0] - SymexChartGlobals.min_[0]) / SymexChartGlobals.chart_height; var pos = (SymexChartGlobals.max_[0] - pivot_0) / coefStepY ; new_div.style.top = pos.toFixed(0) + 'px'; var pos_initiale = pos - 7; //To put the text in the middle of the line var new_div_txt = document.createElement("div"); new_div_txt.className ="pivot_line_txt"; document.getElementById('priceGraph').appendChild(new_div_txt); new_div_txt.innerHTML = "Pivot : "+format_price( pivot_0 ); new_div_txt.style.top = pos_initiale.toFixed(0) + 'px'; var new_div = document.createElement("div"); new_div.className ="support_line"; document.getElementById('priceGraph').appendChild(new_div); coefStepY = (SymexChartGlobals.max_[0] - SymexChartGlobals.min_[0]) / SymexChartGlobals.chart_height; var pos = (SymexChartGlobals.max_[0] - S1_0) / coefStepY ; new_div.style.top = pos.toFixed(0) + 'px'; var new_div_txt = document.createElement("div"); new_div_txt.className ="support_line_txt"; document.getElementById('priceGraph').appendChild(new_div_txt); new_div_txt.innerHTML = "Support 1 : "+format_price( S1_0 ); new_div_txt.style.top = pos_initiale.toFixed(0) - (-15) + 'px'; var new_div = document.createElement("div"); new_div.className ="support_line"; document.getElementById('priceGraph').appendChild(new_div); coefStepY = (SymexChartGlobals.max_[0] - SymexChartGlobals.min_[0]) / SymexChartGlobals.chart_height; var pos = (SymexChartGlobals.max_[0] - S2_0) / coefStepY ; new_div.style.top = pos.toFixed(0) + 'px'; var new_div_txt = document.createElement("div"); new_div_txt.className ="support_line_txt"; document.getElementById('priceGraph').appendChild(new_div_txt); new_div_txt.innerHTML = "Support 2 : "+format_price( S2_0 ); new_div_txt.style.top = pos_initiale.toFixed(0) - (-30) + 'px'; var new_div = document.createElement("div"); new_div.className ="resistance_line"; document.getElementById('priceGraph').appendChild(new_div); coefStepY = (SymexChartGlobals.max_[0] - SymexChartGlobals.min_[0]) / SymexChartGlobals.chart_height; var pos = (SymexChartGlobals.max_[0] - R1_0) / coefStepY ; new_div.style.top = pos.toFixed(0) + 'px'; var new_div_txt = document.createElement("div"); new_div_txt.className ="resistance_line_txt"; document.getElementById('priceGraph').appendChild(new_div_txt); new_div_txt.innerHTML = "Resistance 1 : "+format_price( R1_0 ); new_div_txt.style.top = pos_initiale.toFixed(0)-15 + 'px'; var new_div = document.createElement("div"); new_div.className ="resistance_line"; document.getElementById('priceGraph').appendChild(new_div); coefStepY = (SymexChartGlobals.max_[0] - SymexChartGlobals.min_[0]) / SymexChartGlobals.chart_height; var pos = (SymexChartGlobals.max_[0] - R2_0) / coefStepY ; new_div.style.top = pos.toFixed(0) + 'px'; var new_div_txt = document.createElement("div"); new_div_txt.className ="resistance_line_txt"; document.getElementById('priceGraph').appendChild(new_div_txt); new_div_txt.innerHTML = "Resistance 2 : "+format_price( R2_0 ); new_div_txt.style.top = pos_initiale.toFixed(0)-30 + 'px'; */ }