您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

帮忙改一下VB函数 [金字塔]

  • 咨询内容: 我需要做一个实现EMA函数的VBA程序。在金字塔中做个自定义函数。 请问哪位高手指教一下。 下面是网上找的,但好像有点问题:EMA需要2个参数,但2个参数中没有收盘价呀? 最近有用到EMA函数便自己实现了一个,EMA表示的是指数平滑移动平均,其函数的定义为,Y = [2 * X + (N - 1) * LY] / (N + 1),LY 上一个周期的Y值,其定义比较难以理解,不少人是用递归去实现的,把一个简单的问题搞的忒复杂了,其实根本不需要使用递归。下面给出偶的实现方式: 一 分析家接口实现 这个是使用分析家接口实现系统EMA函数的功能 __declspec(dllexport) int WINAPI EMA(CALCINFO* pData) { float f; const float* pValue; int nPeriod,nFirst; if(NULL != pData && pData->m_pfParam1 && pData->m_pfParam2 //参数1,2有效 && pData->m_nParam1Start>=0 //参数1为序列数 && pData->m_pfParam3==NULL) //有2个参数 { pValue = pData->m_pfParam1; //参数1 nFirst = pData->m_nParam1Start; //有效值 f = *pData->m_pfParam2; nPeriod = (int)f; //参数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); 参数和系统自带的EMA函数一样 二 纯C++实现 这个是EMA算法实现,供在后台调用股票价格数据计算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; }

     

  • 金字塔客服:

    已经安排工作人员制作EMA自定义函数范例,请耐心等待

     

  • 用户回复:

    CYC是表示取第周期的值, N是EMA函数里的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

     

    如果创建一个自定义函数EMA2

    Function EMA2(Formula,N)

        EMA2 = EMA3(formula,formula.indexdata,n)

    End Function

     

    公式里这些调用测试

    aa:ema(close,30);

    bb:ema2(30);

     

    与系统EMA结果完全一致

     

     

     

    论坛上的,我试过是一样的;

    <!--EndFragment-->

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容