﻿<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.hs633.com:8080/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.hs633.com:8080/index.php?action=history&amp;feed=atom&amp;title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8</id>
		<title>飞狐 DLL调用 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.hs633.com:8080/index.php?action=history&amp;feed=atom&amp;title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8"/>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;action=history"/>
		<updated>2026-04-04T09:54:03Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=2446&amp;oldid=prev</id>
		<title>Coogle: 清空页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=2446&amp;oldid=prev"/>
				<updated>2013-09-13T02:34:13Z</updated>
		
		<summary type="html">&lt;p&gt;清空页面&lt;/p&gt;
&lt;a href=&quot;http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;amp;diff=2446&amp;amp;oldid=93&quot;&gt;显示差异&lt;/a&gt;</summary>
		<author><name>Coogle</name></author>	</entry>

	<entry>
		<id>http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=93&amp;oldid=prev</id>
		<title>John: /* 示例DLL工程文件下载 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=93&amp;oldid=prev"/>
				<updated>2013-04-12T07:18:55Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;示例DLL工程文件下载&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←上一版本&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;2013年4月12日 (五) 07:18的版本&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第251行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第251行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[File:MyDll.zip]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[File:MyDll.zip]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;返回[[DLL扩展]]页&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:公式系统]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:公式系统]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>John</name></author>	</entry>

	<entry>
		<id>http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=88&amp;oldid=prev</id>
		<title>John: /* DLL接口说明 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=88&amp;oldid=prev"/>
				<updated>2013-04-12T06:06:33Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;DLL接口说明&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←上一版本&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;2013年4月12日 (五) 06:06的版本&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=DLL接口说明=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=DLL接口说明=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#扩展函数可用于实现系统公式函数不能实现的特殊算法&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#扩展函数可用于实现系统公式函数不能实现的特殊算法&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#扩展函数用windows 32位动态链接库实现,建议使用Microsoft Visual C++编程.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#扩展函数用windows 32位动态链接库实现,建议使用Microsoft Visual C++编程.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#调用时在公式编辑器中书写&amp;quot;动态库名称@函数名称&amp;quot;(参数表)即可,例如下面函数&amp;quot;FOXFUNC@MYMACLOSE&amp;quot;(5)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#调用时在公式编辑器中书写&amp;quot;动态库名称@函数名称&amp;quot;(参数表)即可,例如下面函数&amp;quot;FOXFUNC@MYMACLOSE&amp;quot;(5)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#动态链接库名称和函数名称可以自己定义&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#动态链接库名称和函数名称可以自己定义&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;使用时必须将动态库文件放置在飞狐交易师安装目录下的FmlDLL子目录下使用.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;使用时必须将动态库文件放置在软件安装目录下的FmlDLL子目录下&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=DLL函数格式=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=DLL函数格式=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>John</name></author>	</entry>

	<entry>
		<id>http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=78&amp;oldid=prev</id>
		<title>John: /* 示例DLL工程文件下载 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=78&amp;oldid=prev"/>
				<updated>2013-04-12T02:36:03Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;示例DLL工程文件下载&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←上一版本&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;2013年4月12日 (五) 02:36的版本&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第249行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第249行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=示例DLL工程文件下载=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;=示例DLL工程文件下载=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[File:MyDll.zip]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:公式系统]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>John</name></author>	</entry>

	<entry>
		<id>http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=68&amp;oldid=prev</id>
		<title>John: 以“=DLL接口说明= #扩展函数可用于实现系统公式函数不能实现的特殊算法. #扩展函数用windows 32位动态链接库实现,建议使用Microsoft...”为内容创建页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.hs633.com:8080/index.php?title=%E9%A3%9E%E7%8B%90_DLL%E8%B0%83%E7%94%A8&amp;diff=68&amp;oldid=prev"/>
				<updated>2013-04-11T12:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;以“=DLL接口说明= #扩展函数可用于实现系统公式函数不能实现的特殊算法. #扩展函数用windows 32位动态链接库实现,建议使用Microsoft...”为内容创建页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;最新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=DLL接口说明=&lt;br /&gt;
#扩展函数可用于实现系统公式函数不能实现的特殊算法.&lt;br /&gt;
#扩展函数用windows 32位动态链接库实现,建议使用Microsoft Visual C++编程.&lt;br /&gt;
#调用时在公式编辑器中书写&amp;quot;动态库名称@函数名称&amp;quot;(参数表)即可,例如下面函数&amp;quot;FOXFUNC@MYMACLOSE&amp;quot;(5)&lt;br /&gt;
#动态链接库名称和函数名称可以自己定义.&lt;br /&gt;
#使用时必须将动态库文件放置在飞狐交易师安装目录下的FmlDLL子目录下使用.&lt;br /&gt;
&lt;br /&gt;
=DLL函数格式=&lt;br /&gt;
DLL名称和函数名称可以自行定义，由于原飞狐公式不区分大小写，DLL的函数名最好使用全大写，&lt;br /&gt;
避免某些环境下无法加载，新版本的DLL则无此限制。&lt;br /&gt;
下面的例子定义了一个 MYMACLOSE 的函数，函数的实现下面具体分析。&lt;br /&gt;
 extern &amp;quot;C&amp;quot; __declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)&lt;br /&gt;
&lt;br /&gt;
=DLL函数返回值=&lt;br /&gt;
首先注意上述函数的返回值是int,这个返回值表示在pData的m_pResultBuf里面有效位置的起始位，&lt;br /&gt;
m_pResultBuf是DLL返回的数值序列的存放位置,0表示从第1位起有效，2表示从第3位起有效，&lt;br /&gt;
返回-1表示全部无效，公式将没有输出。m_pResultBuf和CALCINFO的类型下面讲述&lt;br /&gt;
&lt;br /&gt;
=DLL的参数类型=&lt;br /&gt;
DLL的参数是一个结构体CALCINFO的指针，下面是定义&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 //调用接口信息数据结构&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 typedef struct tagCALCINFO&lt;br /&gt;
 {&lt;br /&gt;
 	//结构大小&lt;br /&gt;
 	DWORD m_dwSize;&lt;br /&gt;
 	//调用软件版本(V3.00 : 0x300)&lt;br /&gt;
 	DWORD m_dwVersion;&lt;br /&gt;
 	//调用软件序列号&lt;br /&gt;
 	DWORD m_dwSerial;&lt;br /&gt;
 	//软件用户名&lt;br /&gt;
 	//char* m_strUserName;&lt;br /&gt;
 	//股票代码&lt;br /&gt;
 	char* m_strStkLabel;&lt;br /&gt;
 	//大盘&lt;br /&gt;
 	BOOL m_bIndex;&lt;br /&gt;
 	//数据数量(pData,pDataEx,pResultBuf数据数量)&lt;br /&gt;
 	int m_nNumData;&lt;br /&gt;
 	//常规数据,注意:当m_nNumData==0时可能为 NULL&lt;br /&gt;
 	STKDATA* m_pData;&lt;br /&gt;
 	//扩展数据,分笔成交买卖盘,注意:可能为 NULL&lt;br /&gt;
 	STKDATAEx* m_pDataEx;&lt;br /&gt;
 	//参数1有效位置&lt;br /&gt;
 	int m_nParam1Start;&lt;br /&gt;
 	//调用参数1&lt;br /&gt;
 	float*	 m_pfParam1;&lt;br /&gt;
 	//调用参数2&lt;br /&gt;
 	float*	 m_pfParam2;&lt;br /&gt;
 	//调用参数3&lt;br /&gt;
 	float*	 m_pfParam3;&lt;br /&gt;
 	//调用参数4&lt;br /&gt;
 	float*	 m_pfParam4;				&lt;br /&gt;
 	//结果缓冲区&lt;br /&gt;
 	float* m_pResultBuf;&lt;br /&gt;
 	//数据类型&lt;br /&gt;
 	int m_dataType;&lt;br /&gt;
 	//财务数据&lt;br /&gt;
 	float* m_pfFinData;	&lt;br /&gt;
 	//以上与分析家兼容，所以沿用其结构和名称&lt;br /&gt;
 &lt;br /&gt;
 	//以下为 FoxTrader 扩展&lt;br /&gt;
 	// function type&lt;br /&gt;
 	DWORD m_nFncType;&lt;br /&gt;
 	// 调用参数数量&lt;br /&gt;
 	int m_nNumParam;&lt;br /&gt;
 	// 调用参数数组&lt;br /&gt;
 	CALCPARAM* m_pCalcParam;&lt;br /&gt;
 	//扩展结果缓冲区&lt;br /&gt;
 	float* m_pResultBufExt[8];&lt;br /&gt;
 	//扩展结果有效位置&lt;br /&gt;
 	int m_nResultStart[8];&lt;br /&gt;
 	// 用户数据(102400字节)&lt;br /&gt;
 	void* m_pUserData;&lt;br /&gt;
 &lt;br /&gt;
 	//内部函数计算用&lt;br /&gt;
 	//参数2有效位置&lt;br /&gt;
 	int m_nParam2Start; &lt;br /&gt;
 	//参数3有效位置&lt;br /&gt;
 	int m_nParam3Start;&lt;br /&gt;
 	//参数4有效位置&lt;br /&gt;
 	int m_nParam4Start;			&lt;br /&gt;
 	//股票名称&lt;br /&gt;
 	char* m_strStkName;			&lt;br /&gt;
 	//除权数据&lt;br /&gt;
 	SPLITDATA* m_pSplitData;			&lt;br /&gt;
 	//除权次数&lt;br /&gt;
 	int m_nNumSplitData;		&lt;br /&gt;
 	//计算当前下标数据&lt;br /&gt;
 	int m_iCurIndex;			&lt;br /&gt;
 &lt;br /&gt;
 	void* m_pReserved1;&lt;br /&gt;
 	void* m_pReserved2;&lt;br /&gt;
 	void* m_pReserved3;&lt;br /&gt;
 	void* m_pReserved4;&lt;br /&gt;
 &lt;br /&gt;
 } CALCINFO;&lt;br /&gt;
注意里面的float* m_pResultBuf;就是函数返回数值序列的存放位置，序列的类型是float, &lt;br /&gt;
长度是int m_nNumData;&lt;br /&gt;
&lt;br /&gt;
=DLL参数传递=&lt;br /&gt;
传入DLL的参数是CALCINFO结构体里面的m_pfParam1，m_pfParam2，m_pfParam3，m_pfParam4;&lt;br /&gt;
最多可传4个序列。当m_pfParam1为NULL时，表示无参数；当m_pfParam1不为空而m_pfParam2为空表示有1个参数；&lt;br /&gt;
当m_pfParam1和m_pfParam2不为空但m_pfParam3为空则表示有两个参数，以此类推。&lt;br /&gt;
序列的有效起始位是m_nParam1Start，m_nParam2Start，m_nParam3Start，m_nParam4Start，&lt;br /&gt;
起始位小于0表示是单值(用 *m_pfParam1 来获取)。起始位大于等于0时，有效数据为:&lt;br /&gt;
m_pfParam1[m_nParam1Start]，m_pfParam1[m_nParam1Start+1],m_pfParam1[m_nParam1Start+2]...m_pfParam1[m_nNumData-1]&lt;br /&gt;
第2，3，4条序列也是同样的结构。&lt;br /&gt;
&lt;br /&gt;
=基本数据结构=&lt;br /&gt;
公式调用DLL时会把当前图形上的信息传入DLL，这些信息包括开高低收量额等，&lt;br /&gt;
定义在STKDATA* m_pData这个指针里，长度是m_nNumData，&lt;br /&gt;
STKDATA结构体的定义如下：&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 //基本数据&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 typedef struct tagSTKDATA	&lt;br /&gt;
 {&lt;br /&gt;
 	TimeType m_time;		//时间,UCT&lt;br /&gt;
 	float	m_fOpen;		//开盘&lt;br /&gt;
 	float	m_fHigh;		//最高&lt;br /&gt;
 	float	m_fLow;			//最低&lt;br /&gt;
 	float	m_fClose;		//收盘&lt;br /&gt;
 	float	m_fVolume;		//成交量(手)&lt;br /&gt;
 	float	m_fAmount;		//成交额(元)/持仓(未平仓合约，仅期货有效)&lt;br /&gt;
 	WORD	m_wAdvance;		//上涨家数(仅大盘有效)&lt;br /&gt;
 	WORD	m_wDecline;		//下跌家数(仅大盘有效)&lt;br /&gt;
 } STKDATA;&lt;br /&gt;
&lt;br /&gt;
=兼容时间格式=&lt;br /&gt;
注意上述结构的m_time是TimeType类型，老版本的格式是time_t，由于新版本的time_t是64位的，老飞狐是32位，&lt;br /&gt;
所有原来time_t的字段，现在都用TimeType来表示。&lt;br /&gt;
使用vc6编译dll的，如果需要用到时间的，时间字段是vc6的time_t类型即可&lt;br /&gt;
使用vc2008以上版本的，time_t就是__int64，为了兼容老版本的DLL, 需要使用额外定义下面的TimeType类型（实际上就是int,32位的）&lt;br /&gt;
 #define TimeType int&lt;br /&gt;
&lt;br /&gt;
=扩展数据格式=&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 //扩展数据,用于描述分笔成交数据的买卖盘&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 typedef union tagSTKDATAEx&lt;br /&gt;
 {&lt;br /&gt;
 	struct&lt;br /&gt;
 	{&lt;br /&gt;
 		float m_fBuyPrice[3];		//买1--买3价&lt;br /&gt;
 		float m_fBuyVol[3];			//买1--买3量&lt;br /&gt;
 		float m_fSellPrice[3];		//卖1--卖3价	&lt;br /&gt;
 		float m_fSellVol[3];		//卖1--卖3量&lt;br /&gt;
 		DWORD m_dwToken;			//成交方向&lt;br /&gt;
 	};&lt;br /&gt;
 	float m_fDataEx[13];&lt;br /&gt;
 } STKDATAEx;&lt;br /&gt;
&lt;br /&gt;
=除权数据=&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 //除权数据&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 typedef struct tagSPLITDATA	&lt;br /&gt;
 {&lt;br /&gt;
 	TimeType	m_time;			//时间,UCT&lt;br /&gt;
 	float		m_fHg;			//红股&lt;br /&gt;
 	float		m_fPg;			//配股&lt;br /&gt;
 	float		m_fPgj;			//配股价&lt;br /&gt;
 	float		m_fHl;			//红利&lt;br /&gt;
 } SPLITDATA;&lt;br /&gt;
&lt;br /&gt;
=扩展调用参数=&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 //调用参数项结构&lt;br /&gt;
 ////////////////////////////////////////////////////&lt;br /&gt;
 typedef struct tagCALCPARAM&lt;br /&gt;
 {&lt;br /&gt;
 	union &lt;br /&gt;
 	{&lt;br /&gt;
 		const float m_fParam; //数值参数&lt;br /&gt;
 		const float* m_pfParam; //序列参数，指向一个浮点型数组	&lt;br /&gt;
 		const char* m_szParam; //字符串参数&lt;br /&gt;
 	};&lt;br /&gt;
 	//序列参数有效起始位置&lt;br /&gt;
 	const int	m_nParamStart;&lt;br /&gt;
 }CALCPARAM;&lt;br /&gt;
&lt;br /&gt;
=公式调用例子=&lt;br /&gt;
公式里使用双引号来调用DLL, 例如下面的例子是调用MyDll.dll里面的MYMACLOSE函数，参数是5，&lt;br /&gt;
返回值输出成指标线k1。&lt;br /&gt;
下一节有建立DLL工程及调用公式的详细例子。&lt;br /&gt;
 k1:&amp;quot;MyDll@MYMACLOSE&amp;quot;(5);&lt;br /&gt;
&lt;br /&gt;
=开发DLL的详细例子=&lt;br /&gt;
这里例子是使用VS2012制作的，VS2010,VS2008,VC6也类似。&lt;br /&gt;
&lt;br /&gt;
1. 首先创建Win32的工程项目,项目名称是MyDll&lt;br /&gt;
&lt;br /&gt;
[[Image:Fml_dll_create_project.png]]&lt;br /&gt;
&lt;br /&gt;
2. 项目设置成DLL&lt;br /&gt;
&lt;br /&gt;
[[Image:Fml_dll_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
3. 把TimeType, STKDATA, STKDATAEx，等等上述数据结构拷贝到MyDll.cpp&lt;br /&gt;
&lt;br /&gt;
[[Image:Fml_dll_edit_src.png]]&lt;br /&gt;
&lt;br /&gt;
4. 添加用户函数MYMACLOSE, 计算 N 日均线&lt;br /&gt;
&lt;br /&gt;
 //计算收盘价的均价,一个常数参数,表示计算周期&lt;br /&gt;
 //调用方法:&lt;br /&gt;
 //	&amp;quot;FOXFUNC@MYMACLOSE&amp;quot;(5)&lt;br /&gt;
 extern &amp;quot;C&amp;quot; __declspec(dllexport) int WINAPI MYMACLOSE(CALCINFO* pData)&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 	if ( pData-&amp;gt;m_pfParam1 &amp;amp;&amp;amp;				//参数1有效&lt;br /&gt;
 		 pData-&amp;gt;m_nParam1Start&amp;lt;0 &amp;amp;&amp;amp;			//参数1为常数&lt;br /&gt;
 		 pData-&amp;gt;m_pfParam2==NULL )			//仅有一个参数&lt;br /&gt;
 	{&lt;br /&gt;
 		float fParam = *pData-&amp;gt;m_pfParam1;&lt;br /&gt;
 		int nPeriod = (int)fParam;			//参数1&lt;br /&gt;
 		if(nPeriod&amp;gt;0)&lt;br /&gt;
 		{&lt;br /&gt;
 			float fTotal;&lt;br /&gt;
 			int i, j;&lt;br /&gt;
 			for ( i = nPeriod-1; i &amp;lt; pData-&amp;gt;m_nNumData; i++ )//计算nPeriod周期的均线,数据从nPeriod-1开始有效&lt;br /&gt;
 			{&lt;br /&gt;
 				fTotal = 0.0f;&lt;br /&gt;
 				for ( j = 0; j &amp;lt; nPeriod; j++ )				//累加&lt;br /&gt;
 					fTotal += pData-&amp;gt;m_pData[i-j].m_fClose;&lt;br /&gt;
 				pData-&amp;gt;m_pResultBuf[i] = fTotal/nPeriod;	//平均&lt;br /&gt;
 			}&lt;br /&gt;
 			return nPeriod-1;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
5. 设置项目的输出路径为软件安装目录下的 FmlDll 下，输出名称为 MyDll.dll。&lt;br /&gt;
这一步可以省略，编译后手动拷贝dll到软件的FmlDll目录也可以&lt;br /&gt;
&lt;br /&gt;
[[Image:Fml_dll_linker_output.png]]&lt;br /&gt;
&lt;br /&gt;
6. 编译后，直接运行软件，或者在Debugging调试Command处添加软件的启动路径&lt;br /&gt;
&lt;br /&gt;
7. 创建公式 测试DLL，并编译&lt;br /&gt;
&lt;br /&gt;
[[Image:Fml_dll_create_fml.png‎]]&lt;br /&gt;
&lt;br /&gt;
8. 拖放到图上运行&lt;br /&gt;
&lt;br /&gt;
[[Image:Fml_dll_run_dll.png]]&lt;br /&gt;
&lt;br /&gt;
=示例DLL工程文件下载=&lt;/div&gt;</summary>
		<author><name>John</name></author>	</entry>

	</feed>