• 只發布交易干貨的網站
    用實戰期貨交易系統和心得助你重塑交易認知

    期貨開戶 | 手續費 + 1 分

    點擊查看最新手續費保證金一覽表

    通達信Dll指標編寫及參數傳遞應用

    曾多次看到網友提問有關通達信DLL插件接口參數傳遞問題。現結合自己實際編程應用中怎樣解決參數傳遞與大家交流,我的方法不一定好,旨在給出一些方法參考。

    上一篇介紹通達信DLL插件編程的基本框架,主要就是把通達信提供的例子中兩個頭文件合并,生成一個新的CPP文件,把舊CPP文件中接口代碼復制進去就OK。我們日常進行DLL函數編寫,實際上只要在生成的PluginTCalcFunc.cpp文件中添加新的功能函數,把新的函數名添加到自編函數g_CalcFuncSets[]數組中排序,然后編譯就可生成新的DLL。

    需要添加的功能函數模型如下:(編寫規范提供應用舊例子中,第二個函數簡化)

    void TestPlugin2(int DataLen, float* pfOUT, float* pfINa, float* pfINb, float* pfINc)

    {

    for (int i = 0; i

    {

    pfOUT[i] = i;

    通達信Dll指標編寫及參數傳遞應用

    }

    }

    編寫規范中:函數參數分別是(數據個數,輸出,輸入a,輸入b,輸入c),參數的計算是基于長度為DataLen 的float類型數組。

    對于上面函數模型,void是函數返回類型申明;TestPlugin2是自定義的函數名,可依自寫要實現的功能取便于記憶名稱(如MA、EMA、MACD等);DataLen是傳入的參數數據長度,應用中不用處理;pfOUT是輸出,根據功能要求輸出計算結果,在通達信的TN6指標中接收此輸出;pfINa/pfINb/pfINc是三個要傳遞的參數,實際編寫程序中,主要就是處理這三個數據。在通達信TN6指標公式中,用TDXDLL1(1,C,H,L)這樣的形式調用DLL,這里四個參數,括號中第一個參數1,是告知DLL調用哪個函數,C/H/L是依需要傳入的參數,實際參與計算的參數只有這三個;在實際應用中很多時候用到不只三個參數,怎樣解決這個問題?

    當把DLL編寫架構搭好后,實際上他已經具有了C語言的全部功能,遠不止就寫一個通達信函數的作用,只是要注意他的規范,過程中的算法等參照C/C++/MFC即可。

    在DLL的PluginTCalcFunc.h頭文件中定義全局變量、數組;先寫一個函數傳遞三個參數進來,如三個計算周期, 用三個全局變量保存,再寫一個計算處理的函數,同時也傳進來三個參數,這樣就同時有六個數據參與計算;用全局數組時需要注意數據長度,定義數組時長度盡量大過數據個數,可能浪費內存空間比較多,現在電腦內存大不是問題。另外可以依數據長度開辟一塊新的內存空間,在用完數據后釋放。還可以通過讀取通達信的本地歷史數據以及盤中即時數據,其中包含有COHLVAMO等數據,有了這些數據什么樣的計算處理應該都不是難事,當然需要有一定的編程功底。后慢再慢慢介紹這些數據的讀取。

    本篇就不用圖片解釋,未講清楚處歡迎交流。

    來源:生活資訊網



    本文名稱:《通達信Dll指標編寫及參數傳遞應用》
    本文鏈接:http://www.szyhbw.com/gu/55759.html
    免責聲明:投資有風險!入市需謹慎!本站內容均由用戶自發貢獻,或整編自互聯網,或AI編輯完成,因此對于內容真實性不能作任何類型的保證!請自行判斷內容真假!但是如您發現有涉嫌:抄襲侵權、違法違規、疑似詐騙、虛假不良等內容,請通過底部“聯系&建議”通道,及時與本站聯系,本站始終秉持積極配合態度處理各類問題,因此在收到郵件后,必會刪除相應內容!另外,如需做其他配合工作,如:設置相關詞匯屏蔽等,均可配合完成,以防止后續出現此類內容。生活不易,還請手下留情!由衷希望大家能多多理解,在此先謝過大家了~

    我要說說 搶沙發

    評論前必須登錄!

    立即登錄   注冊

    切換注冊

    登錄

    忘記密碼 ?

    切換登錄

    注冊

    我們將發送一封驗證郵件至你的郵箱, 請正確填寫以完成賬號注冊和激活

  • 依依影院