久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    最標準最簡潔的通達信DLL股票插件開發流程

     imelee 2015-04-29
    [簡介]
    常用網名: 豬頭三
    出生日期: 1981.XX.XX
    個人網站: http://www.
    Email:    pliceman_110@163.com
    QQ交流: 643439947
    編程生涯: 2001年~至今[14年]
    職業生涯: 12年
    開發語言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
    開發工具: Visual Studio、Delphi、XCode、Eclipse
    技能種類: 逆向 驅動 磁盤 文件
    研發領域: Windows應用軟件安全/Windows系統內核安全/Windows系統磁盤數據安全
    項目經歷: 磁盤性能優化/文件系統數據恢復/文件信息采集/敏感文件監測跟蹤/網絡安全檢測

    [序言]
    2015年開始, 中國股市大漲, 號稱突破10000點, 我也信了. 通信達股票軟件去年開始支持加載外部DLL文件并執行. 這個是一個非常好的開放. 也給廣大技術指標股民帶來的便利. 作為09年的股民, 不跟上這種技術潮流, 是不行的. 因此這幾天索性折騰一番, 發現網絡上公布的文章, 要么是技術漏洞百出, 要么是排版非常混亂, 為了改變這種現狀, 我有必寫出一篇干凈整潔的版本.

    [閱讀群體]
    只合適具有C/C++編程經驗的技術指標股民閱讀, 如果你看不懂大部分的內容, 請補習一下Windows相關編程理論.

    [工具準備]
    1> 安裝一款由通達信定制的股票軟件: 比如我的是: 國海證券理財服務終端
    2> 安裝開發工具: Microsoft Visual Studio 2010版本以上.

    [開始開發支持通達信調用的DLL文件]
    1> 首先從http://help./book.asp下載“通達信DLL函數編程規范.rar”并解壓提取PluginTCalcFunc.h頭文件出來. 這個文件包含跟通達信股票軟件交互的關鍵代碼.
    2> 啟動Microsoft Visual Studio 2010開發工具從菜單選擇 “新建”->“項目”->"Visual C++"->"MFC"->"MFC DLL"并輸入項目名稱:TDXPlugin 然后在彈出的"MFC DLL向導"對話框中選擇DLL類型為"使用共享MFC DLL的規則DLL".
    3> 配置剛剛創建好的TDXPlugin項目屬性(從菜單選擇 "項目"->"TDXPlugin屬性"->"常規")
       3.1 輸出目錄: C:\zd_ghzq\T0002\dlls   備注: 這個是通達信股票軟件的安裝目錄, 視你的當前環境來填寫. 當你進入安裝目錄的時候, 發現沒有dlls這個文件夾時, 你可以自己創建.
       3.2 MFC的使用: 在靜態庫中使用MFC
    4> 在剛剛創建好的TDXPlugin項目中添加之前提取出來的PluginTCalcFunc.h頭文件.

    [根據通達信的規范編寫代碼]
    1> 在TDXPlugin.cpp文件添加如下代碼(注意: TDXPlugin.cpp原有的代碼不要刪除):
    1. // TDXPlugin1函數是你自己編寫的函數, 是跟通信達股票軟件交互的函數.  
    2. // 通信達股票軟件會調用你這個函數并傳遞你想要的股票數據給你.(備注: 如何調用這個函數, 后面我會講解)  
    3. void TDXPlugin1(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)  
    4. {  
    5.     AFX_MANAGE_STATE(AfxGetStaticModuleState());  
    6.       
    7.     // 這里添加你自己的股票分析代碼(后面會有詳細講解)  
    8. }  
    9.   
    10. // g_CalcFuncSets全局結構, 存儲你自己編寫好的函數, 比如TDXPlugin1函數  
    11. PluginTCalcFuncInfo g_CalcFuncSets[] =  
    12. {  
    13.     { 1, (pPluginFUNC)&TDXPlugin1 },  
    14.     { 0, NULL },  
    15. };  
    16.   
    17. // 該函數為導出函數,給通信達股票軟件調用并初始化  
    18. BOOL RegisterTdxFunc(PluginTCalcFuncInfo** pFun)  
    19. {  
    20.     AFX_MANAGE_STATE(AfxGetStaticModuleState());  
    21.   
    22.     if (*pFun == NULL)  
    23.     {  
    24.         (*pFun) = g_CalcFuncSets;  
    25.         return TRUE;  
    26.     }  
    27.     return FALSE;  
    28. }  
    2> 在TXDPlugin.def文件設置函數RegisterTdxFunc為導出函數.
    1. TXDPlugin.def : 聲明 DLL 的模塊參數。  
    2. LIBRARY  
    3. EXPORTS  
    4.     ; 此處可以是顯式導出  
    5.     RegisterTdxFunc @1  
    3> 開始編譯, 如果你完全按照我的步驟處理的話, 不會有任何問題, 然后會在C:\zd_ghzq\T0002\dlls的目錄(備注: 這個是通達信股票軟件的安裝目錄, 視你的當前環境來填寫. 當你進入安裝目錄的時候, 發現沒有dlls這個文件夾時, 你可以自己創建)下生成TDXPlugin.dll

    [通達信股票軟件如何加載TDXPlugin.dll并調用寫好的TDXPlugin1函數呢?]
    1> 啟動你的通達信股票軟件, 按CTRL+F激活"公式管理器", 單擊"DLL函數"
    2> 在"綁定DLL函數"對話框中, 單擊"打開綁定", 并選擇之前生成好的TDXPlugin.dll文件. 特別注意的是: 默認是選擇TDXDLL1, 當你有多個不同的DLL時, 可以下拉選擇更多的TDXDLL1~10來綁定不同的DLL文件

    3> 成功綁定之后, 你就可以在通達信股票軟件自帶的公式編輯器, 寫下如下代碼:
        TDXDLL1(1, HIGH, CLOSE, LOW) ;

    代碼含義: TDXDLL1: 表示使用的是TDXDLL1來綁定TDXPlugin.dll
              HIGH: 最高價
              CLOSE: 收盤價
              LOW: 最低價
              1: 表示 調用TDXPlugin1這個函數, 當然如果你有多個函數時, 那么你必須修改g_CalcFuncSets結構.
    1. PluginTCalcFuncInfo g_CalcFuncSets[] =  
    2. {  
    3.     { 1, (pPluginFUNC)&TDXPlugin1 },  
    4.     { 2, (pPluginFUNC)&TDXPlugin2 },  
    5.     { 3, (pPluginFUNC)&TDXPlugin3 },  
    6.     { 0, NULL },  
    7. };  
    上面的結構表示你有3個函數可以讓通達信股票軟件調用. 比如讓通達信股票軟件調用TDXPlugin2時,代碼需要寫成:
    TDXDLL1(2, HIGH, CLOSE, LOW) ;
    特此聲明: 通達信股票軟件自帶的公式編輯器 已經不屬于C/C++編程規范了, 因此我這里不再詳細介紹如何使用公式編輯器. 作為一個合格的技術指標股民, 你應該自己研究一下.

    [詳解TDXDLL1與TDXPlugin1函數的關系]

    當通信達股票軟件的公式代碼調用了TDXDLL1(1, HIGH, CLOSE, LOW)時, 就會把跟HIGH, CLOSE, LOW這3個參數有關的數據傳遞給TDXPlugin1函數. 比如下面的參數解釋
    1. // int DataLen: 表示 接受到多少天的數據, 有時是742, 有時1800 等等不同的  
    2. // float* pfINa: 表示 float類型的數組, 比如當 DataLen是742時, 那么就意味你接收到742天的HIGH(最高價)  
    3. // float* pfINb: 表示 float類型的數組, 比如當 DataLen是742時, 那么就意味你接收到742天的CLOSE(收盤價)  
    4. // float* pfINa: 表示 float類型的數組, 比如當 DataLen是742時, 那么就意味你接收到742天的LOW(最低價)  
    5. void TDXPlugin1(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)  
    6. {  
    7.     AFX_MANAGE_STATE(AfxGetStaticModuleState());  
    8.       
    9.     // 連續打印N天的數據  
    10.     WCHAR wchar_pintf[1024];  
    11.     for (int int_Index = 0; int_Index < DataLen; int_Index++)  
    12.     {  
    13.         swprintf(wchar_pintf, L"DataLen: %d HIGH: %f  CLOSE: %f  LOW: %f", int_Index, pfINa[int_Index], pfINb[int_Index], pfINc[int_Index]);  
    14.         OutputDebugString(wchar_pintf);  
    15.     }  
    16. }  
    備注: OutputDebugString是一個打印函數, 你需要通過DebugView工具查看.

    [自定義的DLL函數返回數據并畫圖]
    這個功能, 我使用的是收費模式, 不會免費對外公布. 價格可以私聊QQ:643439947.

    [總結]
    一般來說, 只要你有豐富的開發經驗, 你可以擴展出很多強大的功能. 比如你可以在DLL文件封裝一個對話框程序, 那么你在啟動通達信股票軟件的時候, 也會彈出你自己的對話框程序. 請大家發揮自己的想象力吧......


      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 成人免费无遮挡在线播放| 青青青爽在线视频观看| 亚洲高清国产拍精品青青草原| 日韩有码中文在线观看| 国产迷姦播放在线观看| 亚洲国产成人AV在线电影播放| 办公室强奷漂亮少妇视频| 久久99精品久久久久久动态图| 中文字幕少妇人妻精品| 国产成人免费高清激情视频| 国产在线中文字幕精品| 欧美国产日韩在线三区| 久草热8精品视频在线观看| 国产乱人伦AV在线麻豆A | 最新国产精品好看的精品| 亚洲精品高清国产一久久| 国产成人高清精品亚洲| 乱子真实露脸刺激对白| 日本一道一区二区视频| 日本公妇被公侵犯中文字幕| 国产亚洲精AA在线观看SEE| 日本一高清二区视频久二区 | 午夜精品久久久久成人| 精品视频在线观看免费观看| 波多野结衣乳巨码无在线观看| 久久96热在精品国产高清| 久久精品国产亚洲av麻豆软件| 国产做无码视频在线观看| 免费AV片在线观看网址| 精品久久人妻AV中文字幕| 久久综合九色综合97婷婷| 日日碰狠狠添天天爽五月婷| 无码人妻久久一区二区三区APP| 综合色一色综合久久网| 亚洲中文字幕国产综合| 亚洲 校园 欧美 国产 另类| 日本一区二区三区免费播放视频站| 亚洲日韩欧洲无码AV夜夜摸| 嫩草院一区二区乱码| 成人午夜电影福利免费| 一区二区中文字幕久久|