您現(xiàn)在的位置:程序化交易>> 期貨公式>> 金字塔等>> 金字塔知識(shí)>>正文內(nèi)容

利用金字塔的VBA與C++的混合編程來(lái)實(shí)現(xiàn)復(fù)雜的二次開(kāi)發(fā)及交易功能 [金字塔]

  • 咨詢內(nèi)容:

         金字塔的除了提供基礎(chǔ)的PEL語(yǔ)言外,基于VBA和C++二次開(kāi)發(fā)功能無(wú)疑是所有程序化交易軟件中最強(qiáng)的一個(gè)了,VBA金字塔完全兼容OFFICE的VBA開(kāi)發(fā)習(xí)慣,C++也是很多專業(yè)用戶的開(kāi)發(fā)語(yǔ)言,能將這2點(diǎn)融合成一體,無(wú)疑是金字塔用戶的最高境界了。

         金字塔幾乎將所有內(nèi)部的對(duì)象接口都暴露給了VBA對(duì)象,包括數(shù)據(jù),界面操作,下單管理等,用戶可以用VBA做大部分的事情,但是VBA也有其不完美的一面,包括不能向C++那樣使用指針,金字塔VBA對(duì)網(wǎng)絡(luò)的操作支持力度有限,及VBA是解析性的語(yǔ)言腳本系統(tǒng),對(duì)安全性沒(méi)有C++哪種編譯性的高等等,因此很多專業(yè)的程序化大都會(huì)選擇C++語(yǔ)言做為編寫(xiě)對(duì)象,但是C++除了給我們的編程便利性帶來(lái)好處外,也帶來(lái)了學(xué)習(xí)困難,編寫(xiě)專業(yè)要求程度高等缺點(diǎn),由于金字塔未能將所有內(nèi)部操作接口對(duì)象完全暴露給C++接口,因此做為用戶來(lái)說(shuō),使用VBA與C++進(jìn)行混合編程無(wú)疑是很好的一種解決方案。利用系統(tǒng)暴露給VBA的接口進(jìn)行通訊,VBA再將其參數(shù)傳遞給C++接口,內(nèi)部的復(fù)雜運(yùn)算通過(guò)C++來(lái)實(shí)現(xiàn),最后將計(jì)算結(jié)果返回給VBA進(jìn)行界面上的處理。

         金字塔暴露給VBA主要有下面幾個(gè)對(duì)象

     

    Application 對(duì)象

    代表 金字塔證券分析系統(tǒng) 應(yīng)用程序。整個(gè)應(yīng)用程序運(yùn)行過(guò)程中,只有一個(gè)Application對(duì)象存在。利用該對(duì)象可以對(duì)整個(gè)金字塔程序進(jìn)行控制。

     

    ReportData 對(duì)象

    證券行情數(shù)據(jù)對(duì)象,該對(duì)象用于表示該證券最新行情數(shù)據(jù)。

    MarketData 對(duì)象

    該對(duì)象描述了市場(chǎng)行情數(shù)據(jù)??梢酝ㄟ^(guò)這個(gè)對(duì)象來(lái)訪問(wèn)指定的品種的各種數(shù)據(jù),也可以維護(hù)接收數(shù)據(jù)的設(shè)置。

     

    Frame 對(duì)象

    表示一個(gè)“框架”對(duì)像。每個(gè)框架都有一個(gè)這樣的對(duì)象與之相對(duì)應(yīng)。

    你可以橫向或者縱向切分一個(gè)窗格,還可以在當(dāng)前窗格位置處添加一個(gè)窗格,此時(shí)兩個(gè)窗格將會(huì)自動(dòng)分頁(yè)顯示。

     

    Order 對(duì)象

    Order 對(duì)象負(fù)責(zé)定單管理和查詢等操作,接收委托服務(wù)器發(fā)送來(lái)的各種帳戶持倉(cāng)信息。該Order對(duì)象還支持多帳戶的下單模式,用戶可以在閃電下單時(shí)截獲該事件,并處理成自己的操作方式以達(dá)到可以實(shí)現(xiàn)比如贏損下單的目的。除此之外,該對(duì)象還支持多帳戶操作。

     

    事件處理

    上述對(duì)象除了可以直接控制金字塔軟件外,還可以被動(dòng)的接收來(lái)自軟件的各種事件,比如用戶下單后,Order 對(duì)象 就可以接收來(lái)自這個(gè)對(duì)象的事件,有了事件功能后,用戶可以就可以不用總是去不斷查詢是否有最新行情數(shù)據(jù)過(guò)來(lái),是否下單了等等,完全可以在程序中設(shè)立條件來(lái)主動(dòng)接收事件,提高了軟件的運(yùn)行效率。

     

    使用VISUAL C++開(kāi)發(fā)ACTIVEX自動(dòng)化接口,與VBA進(jìn)行通信

      我們要寫(xiě)一個(gè)能與VBA通信的接口程序,通過(guò)ACTIVEX無(wú)疑是最好的方案,使用VISUAL C++開(kāi)發(fā)ACTIVEX是件非常簡(jiǎn)單的事情,本教程就以此為范例制作一個(gè)可以與VBA交互使用的ACTIVEX,步驟如下:

     

      我們以VC6.0為例。

      第一步我們需要用VISUAL C++創(chuàng)建一個(gè)DLL工程,工程名稱為MyActiveXDemo

     


    此主題相關(guān)圖片如下:qq截圖未命名1.jpg

     

      第二步我們需要選擇是MFC標(biāo)準(zhǔn)DLL程序,并要勾選“Automation” 也就是ACTIVEX自動(dòng)化的接口選項(xiàng)。

     

     
    此主題相關(guān)圖片如下:qq截圖未命名2.jpg


     

      然后我們點(diǎn)“Finish” 按鈕后完成項(xiàng)目的初建

     

     項(xiàng)目框架創(chuàng)建完畢后,我們就要建立一個(gè)可以與VBA通信的ACTIVEX接口,步驟如下:

     Inster -> New Class 彈出新建類窗口,我們選擇MFC接口

     


    此主題相關(guān)圖片如下:qq截圖未命名3.jpg

    我們將接口類起名為VBSAddin,并指定基類是CCmdTarget,并在下方選擇類接口的創(chuàng)建方式為 type id 方式

     

    接口類創(chuàng)建好了后,剩下的就是我們通過(guò) Class Wizard類添加屬性和方法了

     

    比如我們創(chuàng)建一個(gè)方法函數(shù),名稱為“MyTest”,返回值可以根據(jù)項(xiàng)目的要求來(lái)任意指定,參數(shù)我們輸入一個(gè)數(shù)值參數(shù),并且在ActiveX中通過(guò)MSG打印出來(lái)

     


    此主題相關(guān)圖片如下:qq截圖未命名5.jpg

     

    項(xiàng)目創(chuàng)建完畢后,系統(tǒng)會(huì)自動(dòng)為我們添加代碼,加上我們的打印輸出后代碼如下:

     

    float VBSAddin::MyTest(double Value)
    {
     CString strValue;
     strValue.Format("%f",Value);
     AfxMessageBox(strValue);

     return 0.0f;
    }

     

    最后編譯我們的ActiveX,編譯完畢后一定注意需要注冊(cè)這個(gè)ActiveX我們才能在本地電腦中使用,比如我們將其拷貝到C盤(pán)根目錄后,通過(guò)命令行做如下注冊(cè)即可: regsvr32 c:\MyActiveXDemo.dll

     

    最后,我們?cè)赩BA中來(lái)調(diào)用我們剛才所建立的ActiveX控件

    例如我們?cè)赥est宏中輸入如下代碼

     

    Sub Test()
    Dim MyAddin '創(chuàng)建一個(gè)變量

    Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")
    MyAddin.MyTest(400)

    End Sub

     

    注意MyActiveXDemo.VBSAddin是我們?cè)趧偛艅?chuàng)建時(shí)所指定的標(biāo)識(shí)符,通過(guò)這個(gè)標(biāo)識(shí)符系統(tǒng)才能找到我們所建立的Activex

    指定宏后,看看效果吧。

     
     附帶C++演示示例工程

     下載信息  [文件大?。?nbsp;  下載次數(shù): ]點(diǎn)擊瀏覽該文件:myactivexdemo.rar
    [此貼子已經(jīng)被作者于2012-5-6 23:08:36編輯過(guò)]

     

  • 金字塔客服:

     最后說(shuō)明一點(diǎn),金字塔的進(jìn)程是不允許被調(diào)試加載的,這對(duì)C++開(kāi)發(fā)者來(lái)說(shuō)增加調(diào)試難度,但是可以通過(guò)附加進(jìn)程調(diào)試的方法來(lái)解決問(wèn)題,比如VS2008等都有很好的這種支持,詳情請(qǐng)GOOGLE搜索。

    [此貼子已經(jīng)被作者于2012-5-13 9:28:11編輯過(guò)]

     

  • 用戶回復(fù): 占位

     

  • 網(wǎng)友回復(fù):

    完全贊同樓主的意見(jiàn),這是金字塔區(qū)別于其他交易軟件的最強(qiáng)大的武器。

     

     

  • 網(wǎng)友回復(fù): 哈哈,我就是這樣做的。

 

有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友

可聯(lián)系技術(shù)人員 QQ: 262069696  點(diǎn)擊在線交流進(jìn)行 有償 編寫(xiě)!不貴!點(diǎn)擊查看價(jià)格!


【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒(méi)有相關(guān)內(nèi)容
主站蜘蛛池模板: 久久久久久久性| 不卡高清av手机在线观看| 特级淫片国产免费高清视频| 国产在线观看网站萌白酱视频| 99视频精品全部在线播放| 无码国产精品一区二区免费式芒果| 亚洲国产第一区| 男女啪啪漫画无遮挡全彩| 国产中文在线观看| 亚洲天堂水蜜桃| 在线观看免费人成视频| 中文字幕www| 脱裙打光屁股打红动态图| 韩国19禁无遮挡啪啪无码网站| 高清欧美性猛交xxxx黑人猛交| 成人禁在线观看| 青草资源视频在线高清观看| 黑人巨茎大战俄罗斯美女| 黄a大片av永久免费| 老张和老李互相换女| 理论片在线观看韩影库| 欧美视频久久久| 日韩欧美一二三| 成人欧美一区二区三区在线观看 | 色噜噜狠狠成人中文综合| 色多多视频网站| 粗大的内捧猛烈进出在线视频 | 三级网址在线播放| 中文字幕在线看| www夜插内射视频网站| 久久久99精品免费观看| 久久婷婷人人澡人人爱91| 久久er99热精品一区二区| bt天堂资源在线种子| 蜜桃视频无码区在线观看| 欧美三级在线观看视频| 国产又大又长又粗又硬的免费视频 | 99久久99久久精品| 思思久久99热只有频精品66| 久久久久久人妻一区精品| 曰批视频免费30分钟成人|