资源简介
通达信提供了DLL插件接口和DLL指标接口标准(见“插件编程规范-通达信原版文件”),但说明晦涩,不容易理解。
经过测试,将原示例代码做了注释,并修正了原来代码的一处错误(主要见MyPlugin.cpp)。
只要明白了道理,剩下的工作就看个人发挥了!
代码片段和文件信息
// MyPlugin.cpp : 通达信行情软件插件选股代码示例,根据通达信官方模板改编。
#include “stdafx.h“
#include “Plugin.h“
#define PLUGIN_EXPORTS
//本函数DllMain供调用此DLL的应用程序使用,不可更改,必须保留。
BOOL APIENTRY DllMain( HANDLE hModule DWORD ul_reason_for_call LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
//将回调函数入口赋值给g_pFuncCallBack,自编程序中可以就可以使用g_pFuncCallBack函数调用通达信内部数据(如开盘价、收盘价、最高价、最低价、成交金额、成交量等等(具体数据结构参见OutStruct.h)。
PDATAIOFUNC g_pFuncCallBack;
void RegisterDataInterface(PDATAIOFUNC pfn)
{
g_pFuncCallBack = pfn;
}
//注: 本文件以上部分需要完整保留,不要做任何修改(除非你知道自己在做什么)
///////////////////// 注册插件信息 ///////////////////////
//注册插件信息:将公式名称,公式描述,参数数量、参数名字、参数最大最小及默认值等信息传送给通达信,并将存储区地址传递给LPPUGIN结构的指针info(具体数据结构将Plugin.h。本函数的具体参数赋值可以根据用户需要修改。
void GetCopyRightInfo(LPPLUGIN info)
{
//填写基本信息
strcpy(info->Name“插件选股1“); //此信息会显示在通达信插件选股对话框中“名称”栏
strcpy(info->Dy“上海“);
strcpy(info->Author“Julian Zhang“); //此信息会显示在通达信插件选股对话框中“设计人”栏
strcpy(info->Period“短线“); //还不清楚有什么用
strcpy(info->Descript“MA上穿选股“); //此信息会显示在通达信插件选股对话框中“选股对象”栏
strcpy(info->OtherInfo“无其它信息描述“);
//填写参数信息
info->ParamNum = 2; //定义插件参数数量,必须是[0~4]之间整数;
strcpy(info->ParamInfo[0].acParaName“MA短天数“); //第一个参数的名称
info->ParamInfo[0].nMin=1; //这部分通达信官方模板错误写成nMax,应该为nMin,参数最小值;
info->ParamInfo[0].nMax=1000; //定义参数最大值
info->ParamInfo[0].nDefault=10; //定义参数默认值
strcpy(info->ParamInfo[1].acParaName“MA长天数“); //第二个参数的名称
info->ParamInfo[1].nMin=1;
info->ParamInfo[1].nMax=1000;
info->ParamInfo[1].nDefault=20;
}
////////////////////////////////用户自定义选股公式部分/////////////////////////////////////////
//自定义选股公式实现细节函数(可根据选股需要添加)
const BYTE g_nAvoidMask[]={0xF80xF80xF80xF8}; // 无效数据标志(通达信系统定义)
WORD AfxRightData(float *pDataWORD nMaxData) //获取有效数据位置
{
for(WORD nIndex=0; nIndex return(nIndex);
}
void AfxCalcMa(float*pDatalong nDataWORD nParam) //计算简单移动平均MA通达信模板原函数未做任何修改
{
if(pData==NULL||nData==0||nParam==1) return;
long i=nData-nParam+1nMinEx=AfxRightData(pDatanData);
if(nParam==0||nParam+nMinEx>nData) nMinEx=nData;
else
{
float nDataEx=0nDataSave=0;
float *MaPtr=pData+nData-1*DataPtr=pData+nData-nParam;
for(nMinEx+=nParam-1;i for(i=nData-1;i>=nMinEx;i--MaPtr--DataPtr--)
{
nDataEx+=(*DataPtr);
nDataSave=(*MaPtr);
*MaPtr=nDataEx/nParam;
nDataEx-=nDataSave;
}
}
}
WORD AfxCross(float*psDatafloat*plDataWORD nIndexfloat&nCross) //判断穿越,返回值0:当前未发生穿越;1:上穿;2:下穿
{
if(psData==NULL||plData==NULL||nIndex==0) return(0);
float nDif=psData[nIndex-1]-plData[nIndex-1];
float nDifEx=plData[nIndex]-psData[nIndex];
float nRatio=(nDif+nDifEx)?nDif/(nDif+nDifEx):0;
nCross=psData[nIndex-1]+(psData[nIndex]-psData[nIndex-1])*nRatio;
if(nDif<0&&nDifEx<0) return(1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 241768 2015-05-07 20:58 MyPlugin\Debug\AddTxt.dll
文件 249960 2015-05-08 16:12 MyPlugin\Debug\MyPlugin.dll
文件 985 2015-05-07 21:53 MyPlugin\Debug\MyPlugin.exp
文件 372496 2015-05-08 16:12 MyPlugin\Debug\MyPlugin.ilk
文件 2660 2015-05-07 21:53 MyPlugin\Debug\MyPlugin.lib
文件 17199 2015-05-08 16:12 MyPlugin\Debug\MyPlugin.obj
I.A.... 1815408 2015-05-08 14:06 MyPlugin\Debug\MyPlugin.pch
文件 746496 2015-05-08 16:12 MyPlugin\Debug\MyPlugin.pdb
文件 5448 2015-05-07 16:03 MyPlugin\Debug\StdAfx.obj
文件 99328 2015-05-08 16:12 MyPlugin\Debug\vc60.idb
文件 61440 2015-05-08 16:12 MyPlugin\Debug\vc60.pdb
文件 6841 2015-05-08 16:12 MyPlugin\MyPlugin.cpp
文件 49152 2013-09-18 11:33 MyPlugin\MyPlugin.dll
文件 4325 2013-09-18 11:41 MyPlugin\MyPlugin.dsp
文件 539 2002-10-22 11:35 MyPlugin\MyPlugin.dsw
文件 91136 2015-05-08 16:12 MyPlugin\MyPlugin.ncb
文件 48640 2015-05-08 16:12 MyPlugin\MyPlugin.opt
文件 2350 2015-05-08 16:12 MyPlugin\MyPlugin.plg
文件 5156 2015-05-08 09:18 MyPlugin\OutStruct.h
文件 1728 2015-05-08 08:46 MyPlugin\Plugin.h
文件 294 2001-01-15 16:53 MyPlugin\StdAfx.cpp
文件 698 2015-05-08 08:13 MyPlugin\StdAfx.h
文件 4752 2013-09-18 11:16 插件编程规范-通达信原版文件\MyPlugin\MyPlugin.cpp
文件 49152 2013-09-18 11:33 插件编程规范-通达信原版文件\MyPlugin\MyPlugin.dll
文件 4325 2013-09-18 11:41 插件编程规范-通达信原版文件\MyPlugin\MyPlugin.dsp
文件 539 2002-10-22 11:35 插件编程规范-通达信原版文件\MyPlugin\MyPlugin.dsw
文件 58368 2015-05-07 15:39 插件编程规范-通达信原版文件\MyPlugin\MyPlugin.ncb
文件 48640 2015-05-07 15:39 插件编程规范-通达信原版文件\MyPlugin\MyPlugin.opt
文件 5156 2013-09-18 11:22 插件编程规范-通达信原版文件\MyPlugin\OutStruct.h
文件 1662 2013-09-18 11:27 插件编程规范-通达信原版文件\MyPlugin\Plugin.h
............此处省略24个文件信息
评论
共有 条评论