以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  DLL中如何接收4个以上参数  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=188203)

--  作者:sacredf
--  发布时间:2021/5/10 12:00:41
--  DLL中如何接收4个以上参数
"WEISTOCK@MYFUN"(1,100,100,100,100,ncount)
请问,DLL中,像上面那样要输入4个以上参数,应该如何编写

--  作者:无为剑
--  发布时间:2021/5/10 17:16:17
--  
CALCINFO 结构中

const int m_nNumParam; // 调用参数数量
const CALCPARAM* m_pCalcParam; // 调用参数数组

使用这个新结构

范例部分代码参考 

//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数
/*
调用方法:
MA1:=MA(CLOSE,3);
MA2:=MA(CLOSE,6);
MA3:=MA(CLOSE,12);
MA4:=MA(CLOSE,24);
MYBBI: "STOCKFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
*/
上述代码都可以在范例上看到

--  作者:sacredf
--  发布时间:2021/5/10 21:20:27
--  

我现在说的是常量,假设7个常量,如何入DLL?
以下方法是不行的:
p1:=n1;p2:=n2;p3:=n3:p4:=n4;p5:=n5;p6:=n6;p7:=n7;
MYBBI: "STOCKFUNC@MYBBI"(n1,n2,n3,n4,n5,n6,n7);

--  作者:sacredf
--  发布时间:2021/5/10 21:35:40
--  
我这边已经找到方法测试通过,有需要看看吧。
1、金字塔中:
data[barpos]:=1;data[barpos-1]:=2;data[barpos-2]:=3;data[barpos-3]:=4;data[barpos-4]:=5;data[barpos-5]:=6;data[barpos-6]:=7;
MYBBI: "STOCKFUNC@MYBBI"(data);

2、DLL中:
int n1 = int(pData->m_pfParam1[pData->m_nNumData - 1]);
int n2 = int(pData->m_pfParam1[pData->m_nNumData - 2);
int n3 = int(pData->m_pfParam1[pData->m_nNumData - 3]);
int n4 = int(pData->m_pfParam1[pData->m_nNumData - 4]);
int n5 = int(pData->m_pfParam1[pData->m_nNumData - 5]);
int n6 = int(pData->m_pfParam1[pData->m_nNumData - 6]);
int n7 = int(pData->m_pfParam1[pData->m_nNumData - 7]);

[此贴子已经被作者于2021/5/10 21:36:41编辑过]