資源簡介
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實現
評論
共有 條評論