有JavaScript代碼,請高手幫忙翻譯成Delphi的,先謝謝了,代碼如下:
var input,macd;
var calcEMA,calcDIF,calcDEA,calcMACD;
/*
* K線資料
* 開盤價,收盤價,最低價,最高價
*/
input=[
{open:3.89,close:3.89,low:3.86,high:3.93},
{open:3.88,close:3.85,low:3.81,high:3.89},
{open:3.85,close:3.91,low:3.82,high:3.95},
{open:3.89,close:4.02,low:3.89,high:4.07},
{open:4.04,close:4.05,low:4.00,high:4.08},
{open:4.05,close:4.00,low:3.98,high:4.08},
{open:4.00,close:4.00,low:3.97,high:4.04},
{open:3.99,close:3.90,low:3.88,high:4.00},
{open:3.89,close:3.90,low:3.88,high:3.92},
{open:3.89,close:3.98,low:3.88,high:3.98},
{open:3.99,close:3.98,low:3.95,high:4.03},
{open:3.98,close:4.06,low:3.96,high:4.08},
{open:4.08,close:4.08,low:4.02,high:4.08}
];
/*
* 計算EMA指數平滑移動平均線,用于MACD
* @param {number} n 時間視窗
* @param {array} data 輸入資料
* @param {string} field 計算欄位配置
*/
calcEMA=function(n,data,field){
var i,l,ema,a;
a=2/(n+1);
if(field){
//二維陣列
ema=[data[0][field]];
for(i=1,l=data.length;i<l;i++){
ema.push(a*data[i][field]+(1-a)*ema[i-1]);
}
}else{
//普通一維陣列
ema=[data[0]];
for(i=1,l=data.length;i<l;i++){
ema.push(a*data[i]+(1-a)*ema[i-1]);
}
}
return ema;
};
/*
* 計算DIF快線,用于MACD
* @param {number} short 快速EMA時間視窗
* @param {number} long 慢速EMA時間視窗
* @param {array} data 輸入資料
* @param {string} field 計算欄位配置
*/
calcDIF=function(short,long,data,field){
var i,l,dif,emaShort,emaLong;
dif=[];
emaShort=calcEMA(short,data,field);
emaLong=calcEMA(long,data,field);
for(i=0,l=data.length;i<l;i++){
dif.push(emaShort[i]-emaLong[i]);
}
return dif;
};
/*
* 計算DEA慢線,用于MACD
* @param {number} mid 對dif的時間視窗
* @param {array} dif 輸入資料
*/
calcDEA=function(mid,dif){
return calcEMA(mid,dif);
};
/*
* 計算MACD
* @param {number} short 快速EMA時間視窗
* @param {number} long 慢速EMA時間視窗
* @param {number} mid dea時間視窗
* @param {array} data 輸入資料
* @param {string} field 計算欄位配置
*/
calcMACD=function(short,long,mid,data,field){
var i,l,dif,dea,macd,result;
result={};
macd=[];
dif=calcDIF(short,long,data,field);
dea=calcDEA(mid,dif);
for(i=0,l=data.length;i<l;i++){
macd.push((dif[i]-dea[i])*2);
}
result.dif=dif;
result.dea=dea;
result.macd=macd;
return result;
};
macd=calcMACD(12,26,9,input,"close");
console.log("DIF:",macd.dif);
console.log("DEA:",macd.dea);
console.log("MACD:",macd.macd);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252838.html
標籤:語言基礎/算法/系統設計
