当前位置:分析家公式网 → 股票软件 → 通达信 → 一键转帖:通达信DLL插件编写大众化教程
软件名称:[B]通达信DLL插件编写大众化教程[/B]
软件类型:国产软件
运行环境:Win9X/Win2000/WinXP/Win2003/Win7/
软件语言:简体中文
授权方式:免费版
软件大小:0 Bytes
官方主页:Home Page
更新时间:2019-01-06 01:53:01
软件简介:
作者:末日琳晨
要想象编普通公式一样编DLL插件,我们必须掌握C语言里的for语句的用法,我们不用理解具体的含义,更不需要死记硬背下来,我们只要知道最基本的结构就可以了,
本来我是记不住的,现在想想就能打出代码来了
void SMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
这一行,在C语言里叫指针,在通达信里就叫输入参数的,讲得高雅一点,就是通达信的接口
除了void 后面的那三个字母要各种改以外,别的全部不要动,这个是固定的模式
我们还要记住一个英文单词
因为很多时间,我用自定义的参数,用这个英文要方便很多
fTemp 中文是什么或者怎么读,我也不会,哈哈,如果你认为我不行,可以不用看下面了
我们编公式要用到变量和参数,变量因为是计算出来的,会有小数点,所以用float在指针那一行下面申明一下
参数很多时候用的都是整数,我们就用int来申明一下;
N=9;
V1:MA(C,N);
比如说这个公式,V1就是变量,N就是参数
那么我们用fTemp代替V1
申明就这样写了
void SMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
float fTemp =0.0;
int N = 0;
申明写完了,我们要开始写一个for语句
void SMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
float fTemp =0.0;
int N = 0;
for(int i = 1;i<DataLen;i++)
这句意思就是说,申明i等于1(或者你等于零也可以,i后面要是有计算式的话,删掉,至少我删了好多都证明是可行的),第一句用分号结束,第二句,如果i小DataLen,那么i++,意思就是可以朝下进行,再加一次,进入下面的语句,如果不是小于,是大于或等于了,那么就结束了,程序就不朝下运行了,这是固定不变的,所有的for开头的语句都是这样的
一个完整的for开头的语句就是这样了
void SMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
float fTemp =0.0;
int N = 0;
for(int i = 1;i<DataLen;i++)
{
}
给一个大括句最好,如果不给,只算第一行的,下面的就不算了
再继续下面
void SMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
float fTemp =0.0;
int N = 0;
for(int i = 1;i<DataLen;i++)
{
pfOUT = pfINa//这个地方有一个大括号中间有一个i看图,论坛会漏掉
}
看截图
那么,这就是一个完整的for语句了,记住一句,所有的for开头的语句,你可以全部放在一个for语句里各种计算;
看我的这个帖子,那些五天线,十天线,还有二十天线,我们全部放在一起计算
https://www.55188.com/thread-8704941-1-1.html
我们要这样做:
比如说我们要计算一个公式,这个公式要求是五天线大于十天线,十天线大于二十天线,我们这样来处理
void SMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc)
float fTemp =0.0;
float fTemp1 =0.0;
float fTemp2 =0.0;
float fTemp3 =0.0;
float fTemp4 =0.0;
float sum = 0.0;
int N = 0;
for(int i = 1;i<DataLen;i++)
{
for (int j = 0;
j < 5; j++)
sum = sum + pfINa[i - j];
fTemp1 = sum / 5;
for (int j = 0;
j < 10; j++)
sum = sum + pfINa[i - j];
fTemp2 = sum / 10;
for (int j = 0;
j < 20; j++)
sum = sum + pfINa[i - j];
fTemp3 = sum / 20;
pfOUT = fTemp1 > fTemp2 > fTemp2;
}
提个醒,pfOUT后面有一个大括号,大括号里有一个小写的i
[url=http://www.70822.com/soft/sort012/sort018/down-132329.html]通达信DLL插件编写大众化教程[/url]