參考文件:通達(dá)信DLL函數(shù)編程規(guī)范.rar
- U6)66PMXV%)RQ_Q78U0PYUM.png (98.17 KB)
- V%E5VMDF27TXKZ@B8$0F]PQ.png (53.51 KB)
- FDH(S%E68IK5$O{QJBD_T0N.png (152.63 KB)
- Z_6E~7}DZ8ISNRE}(YQ)1TA.png (25.01 KB)
- 0}_8KFWF5~[{QMG1)_{]03T.png (119.62 KB)
給項(xiàng)目一個(gè)名稱:TDXPlugin
- Y@%(L]ES[0}ZBMYVMW[K~2W.png (106.8 KB)
上圖所標(biāo)示的全部做完了,點(diǎn)確定 添加現(xiàn)有項(xiàng),,一步一步照著做 - E3N$X~905)@48UR@GLU3G)T.png (81.37 KB
- USGG_(N3ZZ(285]V477~44L.png (67.87 KB)
- JE`})4X__CJ(M87171G4YNV.png (52.02 KB)
- EHK9U}}O)%0}6}60JDK4Q5I.png (84.4 KB)
把下面的內(nèi)容復(fù)制到紅框里: 為了防止網(wǎng)絡(luò)錯(cuò)誤造成源代碼缺失,,下面的內(nèi)容也在副件里:
#ifndef __PLUGIN_TCALC_FUNC #define __PLUGIN_TCALC_FUNC #pragma pack(push,1)
//函數(shù)(數(shù)據(jù)個(gè)數(shù),輸出,輸入a,輸入b,輸入c) typedef void(*pPluginFUNC)(int,float*,float*,float*,float*);
typedef struct tagPluginTCalcFuncInfo { unsigned short nFuncMark;//函數(shù)編號(hào) pPluginFUNC pCallFunc;//函數(shù)地址 }PluginTCalcFuncInfo;
typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);
//RegisterTdxFunc函數(shù)為注冊(cè)函數(shù),用戶的函數(shù)全部都放入PluginTCalcFuncInfo結(jié)構(gòu)的全局?jǐn)?shù)組g_CalcFuncSets中,。 typedef BOOL(*pRegisterPluginFUNC)(PluginTCalcFuncInfo**);
//=======================================
extern"C" { //__cplusplus __declspec(dllexport)BOOL RegisterTdxFunc(PluginTCalcFuncInfo**pFun); }
#pragma pack(pop) #endif - TDXPlugin.txt (730 Bytes) 預(yù)覽附件
右鍵點(diǎn)標(biāo)注的地方,,點(diǎn)快速操作與重構(gòu),點(diǎn)跳出來(lái)的第一行的東東 - BQT}2T`E_@WA`83QI2@TU(5.png (102.32 KB)
- MP(0GXECJUQE4Z(VJYKVX1Q.png (99.91 KB)
- 把下面的源代碼復(fù)制到圖中標(biāo)示的紅框里:
為了防止網(wǎng)絡(luò)原因造成源代碼缺失,,盡量用附件里的源代碼
//生成的dll及相關(guān)依賴dll請(qǐng)拷貝到通達(dá)信安裝目錄的T0002/dlls/下面,再在公式管理器進(jìn)行綁定 //函數(shù):EMA(X,N)
//說(shuō)明:指數(shù)平滑移動(dòng)平均賣一價(jià)求指數(shù)平滑移動(dòng)平均,。 //用法:EMA(X,N),求X的N日指數(shù)平滑移動(dòng)平均。
//算法:若Y=EMA(X,N)則Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值,。 //例如:EMA(CLOSE, 30)表示求30日指數(shù)平滑均價(jià)
//通達(dá)信中用的時(shí)候,,第一個(gè)輸入?yún)?shù)是收盤價(jià),,第2個(gè)輸入?yún)?shù)是常量,第三個(gè)輸入?yún)?shù)為空,;
void EMA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); float fTemp = 0.0; int N = int(*pfINb); pfOUT[0] = 0.0; for (int i = 1; i<DataLen; i++) pfOUT = (2 * pfINa + (N - 1)*pfOUT[i - 1]) / (N + 1); }
//----------------------------------------------函數(shù)MA(X,N)----------------------------------- //別名:簡(jiǎn)單移動(dòng)平均
//所屬類別:引用函數(shù)參數(shù)數(shù)量:2 //求簡(jiǎn)單移動(dòng)平均,。
//用法:MA(X,N),求X的N日簡(jiǎn)單移動(dòng)平均值。 //算法:(X1+X2+X3+...+Xn)/N
//例如:MA(CLOSE,20)表示求20日均價(jià)
//通達(dá)信中用的時(shí)候,,第一個(gè)輸入?yún)?shù)是收盤價(jià),,第2個(gè)輸入?yún)?shù)是常量,第三個(gè)輸入?yún)?shù)為空,;
//A:=TDXDLL2(2,C,5,0); //B:=TDXDLL2(2,C,10,0); //A,COLORWHITE; //B,COLORYELLOW;
void MA(int DataLen, float*pfOUT, float*pfINa, float*pfINb, float*pfINc) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); int N = int(*pfINb); float sum; for (int i = N - 1; i<DataLen; i++) { sum = 0.0; for (int j = 0; j<N; j++) sum = sum + pfINa[i - j]; pfOUT = sum / N; } }
// g_CalcFuncSets全局結(jié)構(gòu), 存儲(chǔ)你自己編寫好的函數(shù), 比如TDXPlugin1函數(shù) PluginTCalcFuncInfo g_CalcFuncSets[] = { { 1, (pPluginFUNC)&EMA}, { 2, (pPluginFUNC)&MA}, { 0, NULL }, };
// 該函數(shù)為導(dǎo)出函數(shù),給通信達(dá)股票軟件調(diào)用并初始化 BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if (*pFun == NULL) { (*pFun) = g_CalcFuncSets; return TRUE; } return FALSE; } - 對(duì)照著圖排版,從最下層的最后一行開始排,可以按刪除鍵,當(dāng)刪到上一行的末尾的時(shí)候點(diǎn)確認(rèn)鍵
讓軟件黑認(rèn)排好位置,就不會(huì)出錯(cuò)了 這是上半部份
- 對(duì)照著圖排版,從最下層的最后一行開始排,可以按刪除鍵,當(dāng)刪到上一行的末尾的時(shí)候點(diǎn)確認(rèn)鍵
讓軟件黑認(rèn)排好位置,就不會(huì)出錯(cuò)了 這是下半部份
- K]P`PCM}TW)SLWUL1H[9DBK.png (110.77 KB)
把這個(gè)復(fù)制到圖中的位置:
RegisterTdxFunc @1 - X5SL~_)2VI3GVJ0]@DG[4E8.png (88.62 KB)
- 點(diǎn)生成解決方案
- 80)B9QW@DL561IMX%A`N$`L.png (123.62 KB)
- A1G]K03[AZDBPGKBU28I})X.png (112.06 KB)
- 好吧,把這個(gè)教程完成吧,上面所有的步驟我也重新一步不差的走到這里的
按照?qǐng)D中的提示做,或者您直接打開在第八樓在圖中要您設(shè)置的目錄也是可以的 - W[ID0TH9}VR6Q088X)}R2O5.png (78.39 KB)
- 打開我們所熟悉的通達(dá)信文件夾
- 2345_image_file_copy_2.jpg (88.95 KB)
- 把剛才一再?gòu)?qiáng)調(diào)要復(fù)制的那個(gè)文件復(fù)制進(jìn)dlls文件夾
- 2345_image_file_copy_4.jpg (108.75 KB)
- 點(diǎn)功能--公式系統(tǒng)--公式管理器
- 點(diǎn)DLL函數(shù)
- A:=TDXDLL2(2,C,5,0);
B:=TDXDLL2(2,C,10,0); CC:=TDXDLL2(1,C,10,0); A,COLORWHITE; B,COLORYELLOW; CC,COLORGREEN;
- 好了,成功了,請(qǐng)關(guān)注新帖,開始實(shí)戰(zhàn):
|