日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

CTP初次接觸五:多合約多策略的DEMO

 禁忌石 2017-04-13

    作為一個(gè)退役的碼農(nóng),老是BB這些東西,真是討厭,即不專業(yè),又不有趣,可是我還是勇往直前的記錄到第5篇,臉皮之厚難以想象。
 
    這個(gè)DEMO同樣是VC++的控制臺(tái)程序,程序?qū)崿F(xiàn)了20個(gè)品種、兩個(gè)策略。
    總的數(shù)據(jù)處理在DataSniffer.h文件,總的交易處理在MyTrader.h文件,因?yàn)槭嵌嗥贩N和多策略,增加了幾個(gè)文件。每一個(gè)品種對(duì)應(yīng)一個(gè)品種的數(shù)據(jù)處理文件DataSniffer_A.h和DataSniffer_B.h;每個(gè)策略對(duì)應(yīng)一個(gè)策略文件strategy_A.h,strategy_B.h。
[轉(zhuǎn)載]CTP初次接觸五:多合約多策略的DEMO

一、在程序入口

在入口文件里,保存了我們要交易的品種

char *ppInstrumentID[] = {  "i1601", "jm1601", "j1601", "rb1601","rb1501", "TA601", "l1601","ru1601", "ru1501", "jd1601", "RM601", "m1601","y1501", "p1501","ag1506","ag1412","cu1408","cu1601","IF1601","IF1407"};//行情訂閱列表

和前面demo提到的一樣,建立連接后,OnRtnDepthMarketData函數(shù)進(jìn)行保存數(shù)據(jù)。

OnRtnDepthMarketData在文件MdSpi.cpp里,這次系統(tǒng)不但有tick數(shù)據(jù),還計(jì)算了分鐘K線的數(shù)據(jù),還計(jì)算了日線的數(shù)據(jù)。

系統(tǒng)建立了一個(gè)兩維數(shù)組tick_data[20][10],保存20個(gè)品種的連續(xù)tick的數(shù)據(jù),這個(gè)數(shù)組還記錄其它一些重要信息。系統(tǒng)對(duì)tick數(shù)據(jù)進(jìn)行了文件保存,在TickData目錄下。

系統(tǒng)還有Mn_open[]等數(shù)據(jù),保存1分鐘K線的數(shù)據(jù),共保存了60分鐘。沒(méi)有進(jìn)行文件保存。

系統(tǒng)還有Day_open[]等數(shù)據(jù),保存日K線的數(shù)據(jù)。沒(méi)有進(jìn)行文件保存。

二、接著進(jìn)行行情監(jiān)控和交易

 while(RunMode) //實(shí)盤
 {
  Sniffer();//數(shù)據(jù)
  Trading();//交易
  Sleep(050);
 }
 
三、數(shù)據(jù)處理
Sniffer函數(shù)DataSniffer.h文件里,他進(jìn)行數(shù)據(jù)的計(jì)算和給出交易信號(hào),針對(duì)每個(gè)品種,都計(jì)算了兩個(gè)策略的信號(hào)。
 for (int i = 0; i < 20; i++)//他是每個(gè)品種,都調(diào)用一下兩個(gè)策略
 {
    ......
    Sniffer_A12(i);  //針對(duì)品種i,進(jìn)行策略A的計(jì)算
    Sniffer_B12(i);  //針對(duì)品種i,進(jìn)行策略B的計(jì)算
    ......
 
策略A的計(jì)算函數(shù)Sniffer_A12在文件DataSniffer_A.h里,計(jì)算邏輯是這樣的:當(dāng)早上9:10的1分鐘K線收陽(yáng)時(shí),他將標(biāo)志為設(shè)為1,即是做多信號(hào)。Sniffer_dataA[i][0] = 1;如果收陰,則是做空信號(hào)。
 
策略B的計(jì)算函數(shù)Sniffer_B12在文件DataSniffer_B.h里,策略B是一個(gè)tick級(jí)別的信號(hào),上次DEMO里講過(guò),不展開(kāi)。
四、交易處理
Trading函數(shù)進(jìn)行交易處理,他在文件MyTrader.h里。
它針對(duì)每個(gè)品種,進(jìn)行兩個(gè)策略的交易處理。
 for (int i = 0; i < 20; i++)
 {
  StopEndTime_A(tick_data[i][2],i);//策略A的收盤前平倉(cāng)
  StopEndTime_B(tick_data[i][2],i);//策略B的收盤前平倉(cāng)
......
    StopLossA12(tick_data[i][2],i);  //策略A先進(jìn)行止贏止損
    TraderA12(tick_data[i][2],i);  //策略A進(jìn)行委托交易
......
    StopLossA12(tick_data[i][2],i);  //策略B先進(jìn)行止贏止損
    TraderA12(tick_data[i][2],i);  //策略B進(jìn)行委托交易
......
 
1、它先判斷當(dāng)前是不是快收盤了,如果快收盤了,平掉所有倉(cāng)位。StopEndTime里有,還有一個(gè)持倉(cāng)超過(guò)10分鐘,主動(dòng)平倉(cāng)的功能。
 
2、StopLossA12的邏輯是這樣:當(dāng)達(dá)到一定贏利點(diǎn)數(shù),他做止贏利。當(dāng)虧損達(dá)到一定點(diǎn)數(shù),則做止損。他是根據(jù)1分鐘的數(shù)據(jù)進(jìn)行處理的,相當(dāng)于1分鐘K線走完進(jìn)行處理。這個(gè)1分鐘K線變量Mn_open。
 
3、TraderA12的邏輯是這樣:先判斷之前是做多還是做空信號(hào),如果是做多的信號(hào)(Sniffer_dataA[i][0] = 1),有反向單則先平掉反向單,然后開(kāi)倉(cāng)(此時(shí)系統(tǒng)又增加了一些判斷和過(guò)濾條件)。
 
策略B的邏輯StopLossB12和TraderB12和上一篇中的demo是類似的。
 
 
五:幾個(gè)細(xì)節(jié)
1:系統(tǒng)記錄每次開(kāi)平時(shí)的價(jià)格,并計(jì)算了每次的贏虧情況,保存在Day_CloseProfit、Trade_CloseProfit這些變量里。如果有需要,策略回測(cè)時(shí),計(jì)算績(jī)效也可以沿用相同的計(jì)算邏輯。
2:系統(tǒng)啟動(dòng)時(shí),有讀本地配置文件,關(guān)閉時(shí)也會(huì)寫本地配置文件。這個(gè)日志,可以進(jìn)行功能拓展,幫助系統(tǒng)恢復(fù)上次關(guān)閉時(shí)的策略狀態(tài)。
 
系統(tǒng)啟動(dòng)起來(lái)是這樣
[轉(zhuǎn)載]CTP初次接觸五:多合約多策略的DEMO

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多