幫忙改一下VB函數(shù) [金字塔]
- 咨詢內(nèi)容:
我需要做一個實現(xiàn)EMA函數(shù)的VBA程序。在金字塔中做個自定義函數(shù)。
請問哪位高手指教一下。
下面是網(wǎng)上找的,但好像有點問題:EMA需要2個參數(shù),但2個參數(shù)中沒有收盤價呀?
最近有用到EMA函數(shù)便自己實現(xiàn)了一個,EMA表示的是指數(shù)平滑移動平均,其函數(shù)的定義為,Y = [2 * X + (N - 1) * LY] / (N + 1),LY 上一個周期的Y值,其定義比較難以理解,不少人是用遞歸去實現(xiàn)的,把一個簡單的問題搞的忒復(fù)雜了,其實根本不需要使用遞歸。下面給出偶的實現(xiàn)方式:
一 分析家接口實現(xiàn)
這個是使用分析家接口實現(xiàn)系統(tǒng)EMA函數(shù)的功能
__declspec(dllexport) int WINAPI
EMA(CALCINFO* pData)
{
float f;
const float* pValue;
int nPeriod,nFirst;
if(NULL != pData
&& pData->m_pfParam1
&& pData->m_pfParam2 //參數(shù)1,2有效
&& pData->m_nParam1Start>=0 //參數(shù)1為序列數(shù)
&& pData->m_pfParam3==NULL) //有2個參數(shù)
{
pValue = pData->m_pfParam1; //參數(shù)1
nFirst = pData->m_nParam1Start; //有效值
f = *pData->m_pfParam2;
nPeriod = (int)f; //參數(shù)2
int nLen = pData->m_nNumData;
if(nFirst>=0 && nPeriod>0 && nLen > 0)
{
if(nPeriod > nLen) nPeriod = nLen;
pData->m_pResultBuf[0] = pValue[0]; // 第一個值
for(int i=1; i < nLen; i++)
{
// Y = [2 * X + (N - 1) * LY] / (N + 1)
pData->m_pResultBuf[i] = (2 * pValue[i] + (nPeriod - 1) * pData->m_pResultBuf[i - 1]) / (nPeriod + 1);
}
return 0;
}
}
return -1;
}
//
使用方式 "chanlun@EMA"(C,5); 參數(shù)和系統(tǒng)自帶的EMA函數(shù)一樣
二 純C++實現(xiàn)
這個是EMA算法實現(xiàn),供在后臺調(diào)用股票價格數(shù)據(jù)計算EMA值
std::vector
ChanlunTools::Ema(std::vector &X, int N) { std::vector vec; int nLen = X.size(); if(nLen >= 1) { if(N > nLen) N = nLen; vec.resize(nLen); //vec.reserve(nLen); vec[0] = X[0]; for(int i = 1; i < nLen; i++) { vec[i] = (2 * X[i] + (N - 1) * vec[i - 1]) / (N + 1); } } return vec; } - 金字塔客服:
已經(jīng)安排工作人員制作EMA自定義函數(shù)范例,請耐心等待
- 用戶回復(fù):
CYC是表示取第周期的值, N是EMA函數(shù)里的N
Function EMA3(Formula,CYC,N)
Set History=Formula.ParentGrid.GetHistoryData()
Y=History.Close(0)
For i=1 To CYC
Y=(2*History.Close(i)+(N-1)*Y)/(N+1)
Next
Ema3=Y
End Function
如果創(chuàng)建一個自定義函數(shù)EMA2
Function EMA2(Formula,N)
EMA2 = EMA3(formula,formula.indexdata,n)
End Function
公式里這些調(diào)用測試
aa:ema(close,30);
bb:ema2(30);
與系統(tǒng)EMA結(jié)果完全一致
論壇上的,我試過是一樣的;
<!--EndFragment-->
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫!(不貴!點擊查看價格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容