人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現在的位置:程序化交易>> 期貨公式>> 金字塔等>> 其他期貨軟件知識>>正文內容

利用金字塔的VBA與C++的混合編程來實現復雜的二次開發及交易功能 [金字塔]

  • 咨詢內容:

         金字塔的除了提供基礎的PEL語言外,基于VBA和C++二次開發功能無疑是所有程序化交易軟件中最強的一個了,VBA金字塔完全兼容OFFICE的VBA開發習慣,C++也是很多專業用戶的開發語言,能將這2點融合成一體,無疑是金字塔用戶的最高境界了。

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

         金字塔暴露給VBA主要有下面幾個對象

     

    Application 對象

    代表 金字塔證券分析系統 應用程序。整個應用程序運行過程中,只有一個Application對象存在。利用該對象可以對整個金字塔程序進行控制。

     

    ReportData 對象

    證券行情數據對象,該對象用于表示該證券最新行情數據。

    MarketData 對象

    該對象描述了市場行情數據。可以通過這個對象來訪問指定的品種的各種數據,也可以維護接收數據的設置。

     

    Frame 對象

    表示一個“框架”對像。每個框架都有一個這樣的對象與之相對應。

    你可以橫向或者縱向切分一個窗格,還可以在當前窗格位置處添加一個窗格,此時兩個窗格將會自動分頁顯示。

     

    Order 對象

    Order 對象負責定單管理和查詢等操作,接收委托服務器發送來的各種帳戶持倉信息。該Order對象還支持多帳戶的下單模式,用戶可以在閃電下單時截獲該事件,并處理成自己的操作方式以達到可以實現比如贏損下單的目的。除此之外,該對象還支持多帳戶操作。

     

    事件處理

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

     

    使用VISUAL C++開發ACTIVEX自動化接口,與VBA進行通信

      我們要寫一個能與VBA通信的接口程序,通過ACTIVEX無疑是最好的方案,使用VISUAL C++開發ACTIVEX是件非常簡單的事情,本教程就以此為范例制作一個可以與VBA交互使用的ACTIVEX,步驟如下:

     

      我們以VC6.0為例。

      第一步我們需要用VISUAL C++創建一個DLL工程,工程名稱為MyActiveXDemo

     


    此主題相關圖片如下:qq截圖未命名1.jpg
    按此在新窗口瀏覽圖片

     

      第二步我們需要選擇是MFC標準DLL程序,并要勾選“Automation” 也就是ACTIVEX自動化的接口選項。

     

     
    此主題相關圖片如下:qq截圖未命名2.jpg
    按此在新窗口瀏覽圖片


     

      然后我們點“Finish” 按鈕后完成項目的初建

     

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

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

     


    此主題相關圖片如下:qq截圖未命名3.jpg
    按此在新窗口瀏覽圖片
    我們將接口類起名為VBSAddin,并指定基類是CCmdTarget,并在下方選擇類接口的創建方式為 type id 方式

     

    接口類創建好了后,剩下的就是我們通過 Class Wizard類添加屬性和方法了

     

    比如我們創建一個方法函數,名稱為“MyTest”,返回值可以根據項目的要求來任意指定,參數我們輸入一個數值參數,并且在ActiveX中通過MSG打印出來

     


    此主題相關圖片如下:qq截圖未命名5.jpg
    按此在新窗口瀏覽圖片

     

    項目創建完畢后,系統會自動為我們添加代碼,加上我們的打印輸出后代碼如下:

     

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

     return 0.0f;
    }

     

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

     

    最后,我們在VBA中來調用我們剛才所建立的ActiveX控件

    例如我們在Test宏中輸入如下代碼

     

    Sub Test()
    Dim MyAddin '創建一個變量

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

    End Sub

     

    注意MyActiveXDemo.VBSAddin是我們在剛才創建時所指定的標識符,通過這個標識符系統才能找到我們所建立的Activex

    指定宏后,看看效果吧。

     
     附帶C++演示示例工程

     下載信息  [文件大小:   下載次數: ]點擊瀏覽該文件:myactivexdemo.rar
    [此貼子已經被作者于2012-5-6 23:08:36編輯過]

     

  • 金字塔客服:

     最后說明一點,金字塔的進程是不允許被調試加載的,這對C++開發者來說增加調試難度,但是可以通過附加進程調試的方法來解決問題,比如VS2008等都有很好的這種支持,詳情請GOOGLE搜索。

    [此貼子已經被作者于2012-5-13 9:28:11編輯過]

     

  • 用戶回復: 占位

     

  • 網友回復:

    完全贊同樓主的意見,這是金字塔區別于其他交易軟件的最強大的武器。

     

     

  • 網友回復: 哈哈,我就是這樣做的。

 

如果以上指標公式不適用于您常用的行情軟件

或者您想改編成選股公式,以便快速選出某種形態個股的話,

可以聯系我們相關技術人員 QQ: 262069696  點擊在線交流進行 有償 改編!

 


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 999热成人精品国产免 | 日韩久久久精品首页 | 国产丝袜制服 | 97人洗澡人人澡人人爽人人 | 茄子视频黄 | 94在线成人免费视频 | 色综久久天天综合绕视看 | 在线天堂资源www中文在线 | xyx性爽欧美视频 | 色天使色婷婷丁香久久综合 | jizzjizz丝袜老师| 欧美一区二区三区高清不卡tv | 国产欧美亚洲精品 | 国产成人刺激视频在线观看 | 亚洲综合在线观看一区www | 91精选视频在线观看 | 久草欧美 | 国产午夜剧场 | 亚洲国产影视 | 亚洲网站在线观看 | 成人激情文学 | 久久91久久91精品免费观看 | 成人十八影院在线观看 | 国产一区二区视频在线观看 | 五月天婷婷缴情五月免费观看 | 亚洲欧美高清视频 | 久久久久国产精品免费免费 | 美国一级做a一级爱视频 | 亚洲欧美精品一区 | 国产香港日本三级在线观看 | 2020年精品国产午夜福利在线 | 看全色黄大色黄大片女图片 | 日韩a一级欧美一级 | 性欧美激情在线观看 | 性夜影院午夜看片 | 国产在线欧美精品中文一区 | 最新日韩伦理片免费 | 成年人在线视频观看 | 99re热在线视频 | 午夜视频在线观看按摩女 | 日韩一区二区三区在线观看 |