请教,
我使用软件自带的DLL示例,形成DLL文件,然后放入到软件下面目录的FmlDLL文件夹中,然后在软件中编辑指标,输入:D:"STOCKFUNC@MYMACLOSE"(5);主图叠加,序列计算。编译成功,双击这个指标后,主图上没有出现5日均线,怎么回事?
//DLL公式的运行模式,系统系统调用该DLL时,告知公式系统该DLL公式运行在何种模式下
//返回值: 0本DLL运行序列模式 1本DLL运行逐周期模式
__declspec(dllexport) int WINAPI RUNMODE()
{
//本DLL运行序列模式,如果运行逐K线模式将此函数返回1,此时每执行一个K线都是调用本接口一次。
// return 1;
return 0;
}
程序里return0表示用在序列模式下,你注释掉1的返回
另外确认下自己金字塔是32还是64位,你的dll编译也必须配套编译32还是64
您说到的几个问题
1、运行模式里面,return 1是注释掉的,也就是序列模式,这个示例就是这样,原封不动,都没有改
2、金字塔是32位的,编译器是mingw32-g++,是32位的
不知道是什么问题
下载信息 [文件大小: 下载次数: ] | |
![]() |
示例里面的return nPeriod-1;和 return -1;有什么特别的意义吗?
以下是示例
__declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)
{
if ( pData->m_pfParam1 && //参数1有效
pData->m_nParam1Start<0 && //参数1为常数
pData->m_pfParam2==NULL ) //仅有一个参数
{
float fParam = *pData->m_pfParam1;
int nPeriod = (int)fParam; //参数1
if(nPeriod>0)
{
float fTotal;
int i, j;
for ( i = nPeriod-1; i < pData->m_nNumData; i++ )//计算nPeriod周期的均线,数据从nPeriod-1开始有效
{
fTotal = 0.0f;
for ( j = 0; j < nPeriod; j++ ) //累加
fTotal += pData->m_pData[i-j].m_fClose;
pData->m_pResultBuf[i] = fTotal/nPeriod; //平均
}
return nPeriod-1;
}
}
return -1;
}
用dll引用函数,编译正常,运行在某些股票主图上正常,但是始终有某些股票显示错误:第N行,错误:解释错误
为了测试用了上面版主给的dll,引用函数编译正常,加载还是出现同样的如图问题,请版主帮忙确认下问题,感谢!此主题相关图片如下:dll.png
金字塔指标代码
TESE:"STOCKFUNC@MYMACLOSE"(5);
加载正常实例:
此主题相关图片如下:ok1.png
此主题相关图片如下:ok2.png
此主题相关图片如下:ok3.png
加载报错实例:此主题相关图片如下:error1.png
此主题相关图片如下:error2.png
此主题相关图片如下:error3.png