资源简介
vc编写的通达信插件选股,适用于通达信集成版和个人版中的选股器->插件选股的插件开发接口
通达信插件编程规范及实例
通达信插件编程规范及实例
代码片段和文件信息
// choice1.cpp : Defines the entry point for the DLL application.
// 插件实例
#define PLUGIN_EXPORTS
#include “stdafx.h“
#include “plugin.h“
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;
}
PDATAIOFUNC m_pfn;
void RegisterDataInterface(PDATAIOFUNC pfn)
{
m_pfn = pfn;
}
////////////////////////////////////////////////////////////////////////////////
//注册插件信息
void GetCopyRightInfo(LPPLUGIN info)
{
//填写基本信息
strcpy(info->Name“两MA线穿越“);
strcpy(info->Dy“武汉“);
strcpy(info->Author“系统“);
strcpy(info->Period“短线“);
strcpy(info->Descript“两MA线穿越“);
strcpy(info->OtherInfo“自定义天数两MA线金叉穿越“);
//填写参数信息
info->ParamNum = 2;
strcpy(info->ParamInfo[0].acParaName“MA天数1“);
info->ParamInfo[0].nMax=1;
info->ParamInfo[0].nMax=1000;
info->ParamInfo[0].nDefault=13;
strcpy(info->ParamInfo[1].acParaName“MA天数2“);
info->ParamInfo[1].nMax=1;
info->ParamInfo[1].nMax=1000;
info->ParamInfo[1].nDefault=30;
}
////////////////////////////////////////////////////////////////////////////////
const BYTE g_nAvoidMask[]={0xF80xF80xF80xF8}; // 无效数据标志(系统定义)
WORD AfxRightData(float*pDataWORD nMaxData) //获取有效数据位置
{
for(WORD nIndex=0;nIndex return(nIndex);
}
////////////////////////////////////////////////////////////////////////////////
//自定义实现细节函数(可根据选股需要添加)
void AfxCalcMa(float*pDatalong nDataWORD nParam)
{
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)
{
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);
if(nDif>0&&nDifEx>0) return(2);
return(0);
}
///////////////////////////////////////////////////////////////////////////////////
//
BOOL InputInfoThenCalc1(char * Codeshort nSetCodeint Value[4]short DataTypeshort nDataNumBYTE nTQunsigned long unused) //按最近数据计算
{
BOOL nRet = FALSE;
NTime tmpTime={0};
LPHISDAT pHisDat = new HISDAT[nDataNum]; //数据缓冲区
long readnum = m_pfn(CodenSetCodeDataT
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2007-01-27 11:28 MyPlugin
文件 4937 2007-01-27 11:15 MyPlugin\MyPlugin.cpp
文件 4325 2007-01-27 11:27 MyPlugin\MyPlugin.dsp
文件 539 2002-10-22 11:35 MyPlugin\MyPlugin.dsw
文件 9828 2007-01-27 14:22 MyPlugin\OutStruct.h
文件 1825 2002-10-22 12:03 MyPlugin\Plugin.h
文件 294 2001-01-15 16:53 MyPlugin\StdAfx.cpp
文件 802 2001-01-15 16:53 MyPlugin\StdAfx.h
文件 43008 2007-01-27 14:28 插件选股说明.doc
----------- --------- ---------- ----- ----
65558 9
- 上一篇:linux实验报告及心得体会
- 下一篇:linux简易shell C实现
评论
共有 条评论