以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  [求助]金字塔编写dll函数无输出  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=79227)

--  作者:东方居士
--  发布时间:2015/6/1 10:04:57
--  [求助]金字塔编写dll函数无输出

新手请教各路大侠,刚刚开始用c学习编写dll函数,源代码如下,

函数目的:实现顶底分型输出1,底分型输出-1,其他输出0;

在公式前端调用没有任何输出,请教斑竹和论坛编程高手帮忙分析如何正确显示,不胜感激!

 

_declspec(dllexport)  int WINAPI MYDING(CALCINFO* pData)
{
       //运行在逐k线模式下,
 
   float xg,xd,yg,yd,zg,zd;//定义三根k线高低点的变量
   int i;
   bool top,bot;
  if(pData->m_pfParam1 && pData->m_pfParam2==NULL && pData->m_nParam1Start<0)//这里不加这句是否可以,因为函数不需要参数?
  
  { for ( i =0; i < pData->m_nNumData-1; i++ )
   {    if(i<2)
        pData->m_pResultBuf[i]=0;
    if(i>=2 )
    {
    xg=pData->m_pData[i-2].m_fHigh;
    xd=pData->m_pData[i-2].m_fLow;//逐k模式,每根k线,完全执行一遍程序,并且返回结果在缓冲区。


                yg=pData->m_pData[i-1].m_fHigh;
    yd=pData->m_pData[i-1].m_fLow;

    zg=pData->m_pData[i].m_fHigh;//当下行情价格
    zd=pData->m_pData[i].m_fLow;

    top= yg>xg && yd>xd && zg<yg && zd<yd;//顶分型满足的条件,中间k线是最高的

                bot= xg>yg && xd>yd && zg>yg && zd>yd;//底分型满足的条件,中间k线是最低的

    if(top)
    pData->m_pResultBuf[i]=1;
       
    if(bot)
       pData->m_pResultBuf[i]=-1;
    
    else pData->m_pResultBuf[i]=0;
    }
  }  
    
  } 
 
 return -1;  
}
是否和变量存储有关?


--  作者:a809011310
--  发布时间:2015/6/2 14:04:48
--  
你这个程序是序列模式的,不是逐K模式的。
逐K模式返回是*pData->m_pResultBuf

--  作者:东方居士
--  发布时间:2015/6/2 17:18:12
--  

好的非常感谢,对序列和逐k模式有迷惑,多谢指正!


--  作者:东方居士
--  发布时间:2015/6/2 22:32:48
--  

改完之后在最新的金字塔32位版本上,依然无函数返回值,新手请教什么原因?

_declspec(dllexport)  int WINAPI MYDING(CALCINFO* pData)
{
       //运行在逐k线模式下,
 
   float xg,xd,yg,yd,zg,zd;//定义三根k线高低点的变量
   int i;
   bool top,bot;
  for ( i =0; i < pData->m_nNumData-1; i++ )
   {    if(i<2)
        *pData->m_pResultBuf=0;
    if(i>=2 )
    {
    xg=pData->m_pData[i-2].m_fHigh;
    xd=pData->m_pData[i-2].m_fLow;//逐k模式,每根k线,完全执行一遍程序,并且返回结果在缓冲区。


                yg=pData->m_pData[i-1].m_fHigh;
    yd=pData->m_pData[i-1].m_fLow;

    zg=pData->m_pData[i].m_fHigh;//当下行情价格
    zd=pData->m_pData[i].m_fLow;

    top= yg>xg && yd>xd && zg<yg && zd<yd;//顶分型满足的条件,中间k线是最高的

                bot= xg>yg && xd>yd && zg>yg && zd>yd;//底分型满足的条件,中间k线是最低的

    if(top)
    *pData->m_pResultBuf=1;
       
    if(bot)
       *pData->m_pResultBuf=-1;
    
    else *pData->m_pResultBuf=0;//逐k模式下的返回值,是单个值存储,而不是序列模式的数组。
    }
    
    
  } 
 
 return -1;  
}