219 行
11 KiB
HTML
219 行
11 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
| |||
<html>
| |||
<head>
| |||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
| |||
<title>Time Series Analysis</title>
| |||
| |||
<script type="text/javascript" src="jquery.js"></script>
| |||
<script type="text/javascript" src="highcharts.js"></script>
| |||
<script type="text/javascript" src="TSDat.txt"></script>
| |||
<!-- ----------------------------------------------------------------------------------------- -->
| |||
<script type="text/javascript">
| |||
| |||
Highcharts.theme = {
| |||
credits:{enabled:false},
| |||
chart:{borderRadius:1,borderWidth:0,shadow:true,borderColor:'#EAEAEA',spacingRight:25,plotBorderWidth:1,plotBorderColor:'#EAEAEA'},
| |||
title:{style:{color:'#222',font:'normal 16px "Trebuchet MS",Verdana,Tahoma,Arial,Helvetica,sans-serif'}},
| |||
subtitle:{style:{color:'#444',font:'normal 12px "Trebuchet MS",Verdana,Tahoma,Arial,Helvetica,sans-serif'}},
| |||
xAxis:{gridLineWidth:1,lineColor:'#000',tickColor:'#000',startOnTick:false,endOnTick:false,gridLineColor:'#EAEAEA',
| |||
maxPadding:0.05,minPadding:0.05,
| |||
labels:{style:{color: '#000',font:'11px Trebuchet MS,Verdana,Tahoma,Arial,Helvetica,sans-serif'}},
| |||
title:{style:{color:'#444',fontWeight:'normal',fontSize:'12px',fontFamily:'Trebuchet MS,Verdana,Tahoma,Arial,Helvetica,sans-serif'}}
| |||
},
| |||
yAxis:{lineColor:'#000',lineWidth:1,tickWidth:1,tickColor:'#000',startOnTick:false,endOnTick:false,gridLineColor:'#EAEAEA',
| |||
maxPadding:0.05,minPadding:0.05,
| |||
labels:{style:{color:'#000',font:'11px Trebuchet MS,Verdana,Tahoma,Arial,Helvetica,sans-serif'}},
| |||
title:{style:{color:'#444',fontWeight:'normal',fontSize:'12px',fontFamily:'Trebuchet MS,Verdana,Tahoma,Arial,Helvetica,sans-serif'}}
| |||
},
| |||
legend:{enabled:false},
| |||
tooltip:{borderWidth:0,borderRadius:1},
| |||
plotOptions:{scatter:{enableMouseTracking:false,color:'rgb(17,50,110)',marker:{symbol:'diamond',radius:2}},
| |||
column:{pointPadding:0.1,groupPadding:0,color:'#F0F0F5',borderWidth:2,borderColor:'rgb(20,60,130)',shadow:false},
| |||
spline:{enableMouseTracking:false,color:'rgba(0,170,0,0.5)',lineWidth:1,shadow:false,enableMouseTracking:false,marker:{enabled:false}},
| |||
line:{enableMouseTracking:false,color:'rgb(20,60,130)',shadow:false,marker:{enabled:false}}}
| |||
};
| |||
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);
| |||
| |||
$(document).ready(function(){
| |||
//------------ Header
| |||
var tit=new Highcharts.Chart({
| |||
chart:{renderTo:'top',borderWidth:0,shadow:false,backgroundColor:{linearGradient:[0,0,500,500],
| |||
stops:[[0,'rgb(251,252,255)'],[1,'rgb(223,227,252)']]}},
| |||
title:{style:{color:'#405A75',font:'normal 10px "Trebuchet MS",Verdana,Tahoma,Arial,Helvetica,sans-serif'},
| |||
align:'left',y:2,text:'Time Series Analysis. MQL5 language and JavaScript ( Highcharts, jQuery ).'}
| |||
});
| |||
//------------ Time series plot
| |||
var ymin=0;
| |||
var ymax=0;
| |||
if(minOut<MinTS)ymin=minOut;else ymin=MinTS;
| |||
if(maxOut>MaxTS)ymax=maxOut;else ymax=MaxTS;
| |||
ymin=ymin-(ymax-ymin)/12;ymax=ymax+(ymax-ymin)/12;
| |||
var ts=new Highcharts.Chart({
| |||
chart:{renderTo:'tseries',zoomType:'x'},
| |||
title:{text:'Time series plot. Number of samples = '+NumTS+'.'},
| |||
subtitle:{text:'Time series, mean and border of outliers lines. Click and drag in the plot area to zoom in.'},
| |||
tooltip:{enabled:true,shared:true,crosshairs:{dashStyle:'Dash'},
| |||
formatter:function(){return 'N = '+this.x+'<br>'+Highcharts.numberFormat(this.points[0].y,4,'.')}},
| |||
yAxis:{title:{text:'TS values'},min:ymin,max:ymax,
| |||
plotLines:[{zIndex:1,color:'#00AA00',dashStyle:'LongDash',width:1,value:Mean},
| |||
{zIndex:2,color:'#E02020',dashStyle:'LongDash',width:1,value:minOut},
| |||
{zIndex:3,color:'#E02020',dashStyle:'LongDash',width:1,value:maxOut}]},
| |||
xAxis:{title:{text:'Sample number'},showLastLabel:true,min:0,max:NumTS-1,maxZoom:NumTS/16},
| |||
series:[{zIndex:4,data:TS}]
| |||
});
| |||
//------------ Lag plot
| |||
var lp=new Highcharts.Chart({
| |||
chart:{renderTo:'lagplot'},
| |||
title:{text:'Lag plot.'},
| |||
yAxis:{title:{text:'TS[n+1]'}},
| |||
xAxis:{title:{text:'TS[n]'}},
| |||
series:[{type:'scatter',data:LagP}]
| |||
});
| |||
//------------- Histogram
| |||
var hi=new Highcharts.Chart({
| |||
chart:{renderTo:'hist'},
| |||
title:{text:'Histogram.'},
| |||
yAxis:{title:{text:'Probability density'}},
| |||
xAxis:{title:{text:'Standard deviation'},min:Nd[0][0],max:-Nd[0][0]},
| |||
tooltip:{enabled:true,formatter:function(){return this.y}},
| |||
series:[{type:'column',data:HistP},
| |||
{type:'spline',data:Nd}]
| |||
});
| |||
//------------- Normal probability plot
| |||
var np=new Highcharts.Chart({
| |||
chart:{renderTo:'norm'},
| |||
title:{text:'Normal probability plot.'},
| |||
yAxis:{title:{text:'Ordered TS'}},
| |||
xAxis:{title:{text:'Normal order statistic medians'}},
| |||
series:[{type:'line',color:'#00AA00',lineWidth:1,dashStyle:'LongDash',shadow:false,data:Ndl},
| |||
{type:'scatter',data:Xnpp}]
| |||
});
| |||
//------------- Spectrum
| |||
var k = Spec.length;
| |||
var spe=new Highcharts.Chart({
| |||
chart:{renderTo:'spectr'},
| |||
title:{text:'Spectral estimation via ACF.'},
| |||
subtitle:{text:'Number of ACF lags '+NLags+'.'},
| |||
yAxis:{title:{text:'Spectral levels'},plotLines:[{zIndex:1,color:'rgb(20,60,130)',width:1,value:0}]},
| |||
xAxis:{title:{text:'Frequency'},showLastLabel:true,min:0,max:k,tickInterval:k/4,
| |||
labels:{formatter:function(){return this.value/k/2;}}},
| |||
tooltip:{enabled:true,shared:true,crosshairs:{dashStyle:'Dash'},
| |||
formatter:function(){return this.points[0].y+'<br>F = '+Highcharts.numberFormat(this.x/k/2,3,'.')}},
| |||
series:[{type:'line',data:Spec}]
| |||
});
| |||
//------------- Statistics (text)
| |||
var i=0;
| |||
var tx=new Highcharts.Chart({
| |||
chart:{renderTo:'stat',plotBorderWidth:0},
| |||
title:{text:''}},
| |||
function(tx){
| |||
for(i=0;i<15;i++)
| |||
{
| |||
tx.renderer.text(s[i*2],18,25+i*16).css({color:'#445',font:'bold 12px "Courier New",monospace'}).add();
| |||
tx.renderer.text(s[i*2+1],65,25+i*16).css({color:'#445',font:'bold 12px "Courier New",monospace'}).add();
| |||
}
| |||
});
| |||
//------------- ACF. Autocorrelation function
| |||
var acf=new Highcharts.Chart({
| |||
chart:{renderTo:'acfunc'},
| |||
title:{text:'Autocorrelation function.'},
| |||
subtitle:{text:'Lag order '+NLags+' with 95% confidence bands.'},
| |||
yAxis:{title:{text:'ACF'},
| |||
plotLines:[{zIndex:1,color:'rgb(20,60,130)',width:1,value:0},
| |||
{zIndex:2,color:'rgb(0,170,0)',dashStyle:'LongDash',width:1,value:UPLim},
| |||
{zIndex:3,color:'rgb(0,170,0)',dashStyle:'LongDash',width:1,value:-UPLim}]},
| |||
xAxis:{title:{text:'Lag'},min:0,max:NLags+1},
| |||
tooltip:{enabled:true,formatter:function(){return 'N = '+this.x+'<br>'+this.y}},
| |||
series:[{type:'spline',dashStyle:'LongDash',color:'rgb(224,32,32)',data:CBup},
| |||
{type:'spline',dashStyle:'LongDash',color:'rgb(224,32,32)',data:CBlo},
| |||
{type:'column',pointPadding:0.1,groupPadding:0.2,borderWidth:0,color:'rgba(20,60,130,0.85)',data:ACF}]
| |||
});
| |||
//------------- PACF. Partial Autocorrelation function
| |||
var pacf=new Highcharts.Chart({
| |||
chart:{renderTo:'pacfunc'},
| |||
title:{text:'Partial autocorrelation function.'},
| |||
subtitle:{text:'Lag order '+NLags+' with 95% confidence bands.'},
| |||
yAxis:{title:{text:'PACF'},
| |||
plotLines:[{zIndex:1,color:'rgb(20,60,130)',width:1,value:0},
| |||
{zIndex:2,color:'rgb(0,170,0)',dashStyle:'LongDash',width:1,value:UPLim},
| |||
{zIndex:3,color:'rgb(0,170,0)',dashStyle:'LongDash',width:1,value:-UPLim}]},
| |||
xAxis:{title:{text:'Lag'},min:0,max:NLags+1},
| |||
tooltip:{enabled:true,formatter:function(){return 'N = '+this.x+'<br>'+this.y}},
| |||
series:[{type:'spline',dashStyle:'LongDash',color:'rgb(224,32,32)',data:CBup},
| |||
{type:'spline',dashStyle:'LongDash',color:'rgb(224,32,32)',data:CBlo},
| |||
{type:'column',pointPadding:0.1,groupPadding:0.2,borderWidth:0,color:'rgba(20,60,130,0.85)',data:PACF}]
| |||
});
| |||
//------------ Maximum entropy spectral estimation
| |||
var n = ARSp.length;
| |||
var ars=new Highcharts.Chart({
| |||
chart:{renderTo:'arspectr',zoomType:'x'},
| |||
title:{text:'Maximum entropy spectral estimation. Model order '+IP+'.'},
| |||
subtitle:{text:'Click and drag in the plot area to zoom in.'},
| |||
yAxis:{title:{text:'Power spectral density, dB'},tickInterval:10},
| |||
xAxis:{title:{text:'Frequency'},showLastLabel:true,min:0,max:n,maxZoom:n/16,tickInterval:n/8,
| |||
labels:{formatter:function(){return this.value/n/2;}}},
| |||
tooltip:{enabled:true,shared:true,crosshairs:{dashStyle:'Dash'},
| |||
formatter:function(){return this.points[0].y+' db'+
| |||
'<br>F = '+Highcharts.numberFormat(this.x/n/2,4,'.')+
| |||
'<br>T = '+Highcharts.numberFormat(2*n/this.x,4,'.')}},
| |||
series:[{type:'line',data:ARSp}]
| |||
});
| |||
//------------ Footer
| |||
var fo=new Highcharts.Chart({
| |||
credits:{enabled:true},
| |||
chart:{renderTo:'foot',borderWidth:0,shadow:false,backgroundColor:{linearGradient:[0,0,500,500],
| |||
stops:[[0,'rgb(251,252,255)'],[1,'rgb(223,227,252)']]}},
| |||
title:{style:{color:'#405A75',font:'normal 10px "Trebuchet MS",Verdana,Tahoma,Arial,Helvetica,sans-serif'},
| |||
align:'left',y:2,text:'MetaTrader 5. MetaQuotes Software Corp.'}
| |||
});
| |||
});
| |||
</script>
| |||
<!-- ----------------------------------------------------------------------------------------- -->
| |||
| |||
</head>
| |||
<body>
| |||
| |||
<table border=0 cellspacing=0>
| |||
<tr>
| |||
<td><div id="top" style="width:994px; height:20px; margin:0 auto"></div></td>
| |||
</tr>
| |||
</table>
| |||
| |||
<table border=0 cellspacing=0>
| |||
<tr>
| |||
<td><div id="tseries" style="width:662px; height:270px; margin:0 auto"></div></td>
| |||
<td><div id="lagplot" style="width:330px; height:270px; margin:0 auto"></div></td>
| |||
</tr>
| |||
</table>
| |||
| |||
<table border=0 cellspacing=0>
| |||
<tr>
| |||
<td><div id="hist" style="width:330px; height:270px; margin:0 auto"></div></td>
| |||
<td><div id="norm" style="width:330px; height:270px; margin:0 auto"></div></td>
| |||
<td><div id="spectr" style="width:330px; height:270px; margin:0 auto"></div></td>
| |||
</tr>
| |||
</table>
| |||
| |||
<table border=0 cellspacing=0>
| |||
<tr>
| |||
<td><div id="stat" style="width:170px; height:270px; margin:0 auto"></div></td>
| |||
<td><div id="acfunc" style="width:410px; height:270px; margin:0 auto"></div></td>
| |||
<td><div id="pacfunc" style="width:410px; height:270px; margin:0 auto"></div></td>
| |||
</tr>
| |||
</table>
| |||
| |||
<table border=0 cellspacing=0>
| |||
<tr>
| |||
<td><div id="arspectr" style="width:994px; height:270px; margin:0 auto"></div></td>
| |||
</tr>
| |||
</table>
| |||
| |||
| |||
<table border=0 cellspacing=0>
| |||
<tr>
| |||
<td><div id="foot" style="width:994px; height:20px; margin:0 auto"></div></td>
| |||
</tr>
| |||
</table>
| |||
| |||
</body>
| |||
</html>
|