第四章 交易測試系統(tǒng)和程式化交易函數 無論是指標、條件選股,或者交易系統(tǒng)的編制,都是一個循序漸進的過程。這一點在交易系統(tǒng)中表現得尤為突出,從一個方案的提出,到量化,編制公式,然后在以后的不斷的檢驗--歷史數據下的靜態(tài)檢驗,當前數據下的動態(tài)檢驗,實戰(zhàn)檢驗,任何其中的一個環(huán)節(jié)如果發(fā)現有不合理的,不準確的的地方都需要我們對整個公式系統(tǒng)進行修改,使之更加完美,也許可以將之稱為“優(yōu)化”。
入場規(guī)則,入場條件設定測試時段,也即測試的時間區(qū)間,金字塔默認的區(qū)間為20000101到當前。如果默認的入場規(guī)則無法滿足您的要求,可以在模型當中編制您的入場條件。 市場模型:金字塔提供兩類市場模型供測試分析。 系統(tǒng)測評報告
系統(tǒng)信號指示和資金曲線同圖顯示 2、 交易測試系統(tǒng)函數 金字塔擁有可供引用的函數超過660個,并還在增長中。 其中交易系統(tǒng)函數46個,主要用于實現模型的測試和前臺圖表程式化交易。 交易系統(tǒng)之開多操作, 用法:BUY(COND,V,Type,P); 表示當COND條件成立時, 買入V股(手)當前品種,TYPE表示買入類型, P表示買入價格,所有參數均可以省略。 V:買入股(手)數或買入資金百分比(N%),省略表示100%; TYPE:可以是本周期收盤(THISCLOSE),次周期開盤(MARKET), 次周期限價單(LIMIT),次周期停損單(STOP)等交易方式控制符; P:對于限價單、停損單需要指定的買入價格 例如:BUY(C>O ,1000,THISCLOSE);表示收陽線則在本周期收盤價上買入1000股(手)。 BUY(C>0,50%,LIMIT,CLOSE-0.2);表示在次周期CLOSE-0.2元位置下買入限價單, 若價格達到或低于該價格則用50%資金買入。 交易系統(tǒng)之平多操作, SELL(COND,V,Type,P); 用法同上 交易系統(tǒng)之開空操作, BUYSHORT(COND,V,Type,P); 用法同上 交易系統(tǒng)之平空操作, SELLSHORT(COND,V,Type,P); 用法同上 ASSET當前資產 戶賬戶客的凈自有資產=可用現金+占用保證金-融資(現金+品種市值-融資) AVGENTERPRICE 持倉均價 當前持有品種的平均持倉成本——最近空倉以來計 BESTPERCENT 最大利潤率 當前位置之前所有交易中利潤率最大一次的利潤率,其數值在0—1之間 BESTTRADE 最大盈利額 當前位置之前所有交易中盈利最大一次的利潤額 CASH(N) 現金存量 得到當前帳戶的可用資金余額 用法:CASH(N),N表示投資方向 0多頭;1空頭 例如:CASH(0)表示取當前多頭帳戶的可用現金余額 ENTERBARS 開倉歷時 返回上次開倉到當前的周期數,若之前沒有開倉記錄返回-1 ENTERPRICE 上次開倉價 得到當前位置的上次開倉價 ENTERVOL 上次開倉量 得到當前位置的上次開倉量 EXITBARS 平倉歷時 返回上次平倉到當前的周期數,若之前沒有開倉記錄返回-1 EXITPRICE 上次平倉價 得到當前位置的上次平倉價 EXITVOL 上次平倉量 得到當前位置的上次平倉量 HOLDING 持倉量 得到當前帳戶持倉量,多倉返回正數空倉返回負數 LIMIT 限價交易 交易方式控制符:加入限價單,次周期達到限價即操作,否則放棄。 LIMITR 限價交易 交易方式控制符:加入限價單,本周期達到限價即操作,否則放棄。 Market 市價交易 交易方式控制符:按照次周期開盤價操作 例如:buy(cond ,1000,market); 該控制符僅對交易評測時有效 MAXSEQLOSS 最大連續(xù)虧損次數 當前位置之前連續(xù)虧損交易的最大次數 MAXSEQWIN 最大連續(xù)盈利次數 當前位置之前連續(xù)盈利交易的最大次數 NEXTHIGH 次周期最高價交易 交易方式控制符:按照次周期最高價操作 例如:BUY(COND ,1000,NEXTHIGH); 該控制符僅對交易評測時有效 NEXTLOW 次周期最低價交易 交易方式控制符:按照次周期最低價操作 NEXTMID 次周期中價交易 交易方式控制符:按照次周期中間價操作 NEXTOPEN 次周期開盤價交易 交易方式控制符:按照次周期開盤價操作 NUMLOSSTRADE 虧損次數 當前位置之前總共有多少次虧損的交易,注意每次賣出算一次交易,而買入不算 NUMSEQLOSS 連虧次數 當前位置之前連續(xù)有多少次虧損的交易,注意每次賣出算一次交易,而買入不算 NUMSEQWIN 連盈次數 當前位置之前連續(xù)有多少次盈利的交易,注意每次賣出算一次交易,而買入不算 NUMWINTRADE 盈利次數 當前位置之前總共有多少次盈利的交易,注意每次賣出算一次交易,而買入不算 OPENBAR 開倉歷時 上一次倉位=0以來的周期數 OPENPROFIT 浮動盈虧 當前浮動盈虧(當前持倉市值與持倉成本之差) PERCENTWIN 交易勝率 當前位置之前盈利交易占總交易次數的比例,其數值在0—1之間 SEQLOSS 連虧金額 當前位置之前連續(xù)虧損總額,注意每次賣出算一次交易,而買入不算 SEQWIN 連盈金額 當前位置之前連續(xù)盈利總額,注意每次賣出算一次交易,而買入不算 STATE 帳戶狀態(tài) 得到當前帳戶狀態(tài),無倉輸出0;有多頭倉輸出1;有空頭倉輸出-1 STOP 停損交易 交易方式控制符:加入停損單,或又稱突破交易,次周期達到設定價格即操作買入,否則放棄。 所謂停損就是交易價比設定的價格要差,具體說來對于買入或賣空就是高于設定價格, 對于賣出或買空就是低于設定價格 例如:BUY(COND ,1000,STOP,CLOSE-0.01); 該控制符僅對交易評測時有效 STOPR 停損交易 為本周期的,其它同STOP THISCLOSE 收盤價交易 交易方式控制符,按照本周期收盤價操作 例如:BUY(COND ,1000,THISCLOSE); 該控制符僅對交易評測時有效 TOTALDAYTRADE 日內交易次數 當前位置之前總共有多少次當日的交易,注意每次賣出算一次交易,而買入不算 用法: TOTALDAYTRADE TOTALTRADE 交易次數 當前位置之前總共有多少次交易,注意每次賣出算一次交易,而買入不算 TYPE(N) 上N次信號類型 得到當前位置之前上N次信號類型 輸出:0、無信號;1、開多;2、平多;3、開空;4、平空; TYPEBAR 表示上次信號, 得到當前位置之前上N次信號指定類型距當前周期 TYPEBAR(N,TYPE)N表示上次信號, TYPE表示信號類型 0、無信號;1、開多;2、平多;3、開空;4、平空; 例如:TYPEBAR(2,1)表示:倒數第2個開多信號歷時 WORSTPERCENT 最大虧損率 當前位置之前所有交易中虧損率最大一次的利潤率,其數值在0—1之間 WORSTTRADE 最大虧損額 當前位置之前所有交易中虧損最大一次的虧損額 3、 程式化交易函數 程式化交易函數共有41個,主要適于實際程式化交易,在后臺運行,而不會在圖表中顯示。 大部分是在測試交易系統(tǒng)函數后加“T”,如 程式化交易系統(tǒng)之開多操作, 用法:TBUY(COND,V,[Type,P1,P2,AC,STOCK]);表示當COND條件成立時, 買入V股(手)當前品種, TYPE表示開倉類型,LMT限價 MKT市價 STP止損 STPLMT限價止損 P1表示開倉價格,當TYPE為LMT和STP,STPLMT時為指定限價和止損價格,其他情況填0 P2為止損限價,當TYPE為STPLMT時,必須指定P2的止損限價,其他情況填0,當P1止損價觸發(fā)時按照P2價格止損操作. 當TYPE參數省略時,為市價開倉。 AC為帳戶ID,為空時為系統(tǒng)默認帳戶,否則將下單到指定帳戶中 STOCK為品種代碼,比如'SH600215',為空或者不填時為當前品種 例如:TBUY(C>O ,1000,LMT,C);表示收陽線則在本周期收盤價上買入1000股(手)。 TBUY(C>0,1000,STP,CLOSE+0.2);表示收陽線則在本周期收盤價高于0.2元下1000股(手)止損單,當盤中價格到了觸發(fā)價時按市價開倉止損. TBUY(C>0,1000,STPLMT,CLOSE+0.2,CLOSE);表示收陽線則在本周期收盤價高于0.2元下1000股(手)止損單,當盤中價格到了觸發(fā)價時按CLOSE價格開倉止損 程式化交易系統(tǒng)之平多操作, TSELL(COND,V,[Type,P1,P2,AC,STOCK]); 用法同上 程式化交易系統(tǒng)之開空操作, TBUYSHORT(COND,V,[Type,P1,P2,AC,STOCK]); 用法同上 程式化交易系統(tǒng)之平空操作, TSELLSHORT(COND,V,[Type,P1,P2,AC,STOCK]); 用法同上 注意:程式化交易系統(tǒng)的函數中交易類型Type與交易測試系統(tǒng)的差別 DEBUGOUT(STR,NUM) 調試輸出 用戶可以在程式化交易中通過輸出指定的字符串來實現調試的目的,可以借助這個功能來完成監(jiān)控程式化交易的各種細節(jié)參數,因為在后臺執(zhí)行程式化交易時,用戶在前臺的圖表上是看不到內部數據的。 用法:DEBUGOUT(STR,NUM),STR為用戶指定輸出的一個行文字,NUM為用戶指定的一個監(jiān)控數字. 例如:DEBUGOUT('當前資產為%. "% 該函數僅在做程式化交易時有效 SLEEP(D) 延時 當位于最后一個周期時,延時指定數量時間后再執(zhí)行下條語句。 用法:SLEEP(D),D為延時的設置時間,單位為毫秒(1秒鐘等于1000毫秒)。 例如:SLEEP(1000)表示等待1秒后再執(zhí)行下行語句。 TODAYHOLDING 今持倉量 得到當前帳戶的今日持倉量,多倉返回正數空倉返回負用法:TODAYHOLDING TSUBMIT(N) 委托單歷時 用法:TSUBMIT(N)仍未成交時,函數返回未成交歷時的秒數,有效值范圍為(1-1000);成交函數返回0. N為委托方向.0所有方向;1開多;2平多;3開空;4平空; 便于控制未成交交易,采取其他補救措施 TTOTALDAYTRADE 日內交易次數 當前位置之前總共有多少次當日的交易,注意每次賣出算一次交易,而買入不算 用法:TTOTALDAYTRADE 其它的程式化交易函數,類似,請自己依次查看 注意:在公式編輯中,點擊 [ << ] 可彈出函數列表,可按類查找需要的函數,如果需要可直接也雙擊改函數即可引入。公式中的藍色字段為函數名,將鼠標放在未知的藍色字段上,將看到該函數的描述和基本用法。 程式化交易執(zhí)行語句常用的其它函數: MINDIFF 最小變動價位 返回當前品種最小變動價位(可在市場管理中設置)。 若市場分類小數點為2時最小變動價位則為0.01 注意:該函數返回常數 VOLUNIT 每手單位 返回每手單位(可在市場管理中設置),注意:該函數返回常數 MULTIPLIER 乘數 當前品種的乘數或單位 用法:MULTIPLIER OPENTIME(N) 開盤時間 返回交易所的指定時段的開盤時間 用法:OPENTIME(N),N表示對應市場分類中交易所交易時間設置的節(jié)數(自上而下)1表示第一個 函數返回有效值范圍為(000000-235959),此函數返回常數,對于日線及更長周期此函數無效. CLOSETIME(N) 收盤時間 返回交易所的指定時段的收盤時間 用法:CLOSETIME(N),N表示對應市場分類中交易所交易時間設置的節(jié)數(自上而下),特設0表示最后一節(jié)的節(jié)數(即日收盤的節(jié)數) 函數返回有效值范圍為(000000-235959),此函數返回常數,對于日線及更長周期此函數無效. PLAYSOUND 播放聲音文件 播放一首指定位置的一個聲音文件,可以是MP3或者WAV等格式. 用法:PLAYSOUND(COND,PATH),當最后一個周期得COND條件成立時,播放指定位置PATH的一個聲音文件 聲音文件可以是絕對路徑,也可以只是一個聲音文件,只有一個文件名時用戶需要將它安放在DOCUMENT目錄. 例如:PLAYSOUND(CLOSE>OPEN,'D:\ONTIFY.MP3'),當最后一個周期為陽線時播放D:\ONTIFY.MP3位置的聲音文件. SENDMAIL 發(fā)送郵件 發(fā)送一封郵件到指定的郵箱. 用法:SENDMAIL(COND,MAILTO,SUB,CON),當最后一個周期得COND條件成立時,發(fā)送到MAILTO用戶,標題為SUB,內容為CON 例如:SENDMAIL(CLOSE>OPEN,'ABC@SINA.COM;XYZ@WEISTOCK.COM','警報','大陽線'), 表示當最后一個周期為陽線時,往ABC@SINA.COM和XYZ@WEISTOCK.COM這兩個郵箱發(fā)送郵件,標題是'警報',內容是'大陽線'. 用戶使用該功能之前,需要預先設置郵件發(fā)送的SMTP信息,具體操作位置在 工具->網絡->郵件發(fā)送設置里,并需要構選'允許程式化交易'選項. DYNAINFO(4) 取得最新動態(tài)行情: 今開 DYNAINFO(5) 取得最新動態(tài)行情: 最高 DYNAINFO(6) 取得最新動態(tài)行情: 最低 DYNAINFO(7) 取得最新動態(tài)行情: 最新 DYNAINFO(28) 取得最新動態(tài)行情: 買一價 DYNAINFO(34) 取得最新動態(tài)行情: 賣一價 DYNAINFO(54) 取得最新動態(tài)行情: 漲停 DYNAINFO(55) 取得最新動態(tài)行情: 跌停 4、 賬戶函數介紹 為了方便交易員編寫資金管理程序,金字塔增加了賬戶函數(43個),今后還將擴充更多頭寸管理函數。 TACCOUNT(1); 交易帳戶: 返回當前交易帳戶ID(該函數返回字符串類型數值) TACCOUNT(2); 帳戶類型: 返回當前交易帳戶類型(0 盈透;1 CTP) TACCOUNT(3); 現金余額: 返回當前交易帳戶中的現金余額 TACCOUNT(4); 浮動盈虧: 返回當前交易帳戶中的浮動盈虧 TACCOUNT(6); 平倉凈值: 返回當前交易帳戶中的平倉凈值 TACCOUNT(19); 當前可用資金: 返回當前交易帳戶中的當前可用資金 TACCOUNT(20); 當前流動資產: 返回當前交易帳戶中的當前流動資產 TACCOUNT(26); 上次結算準備金: 返回當前交易帳戶中的上次結算準備金(CTP專有) TACCOUNT(27); 結算準備金: 返回當前交易帳戶中的期貨結算準備金(CTP專有) TACCOUNT(28); 占用保證金: 返回當前交易帳戶中的占用保證金(CTP專有) TACCOUNT(29); 可取資金: 返回當前交易帳戶中的可取資金數量(CTP專有) TACCOUNT(30); 平倉盈虧: 返回當前交易帳戶中的平倉盈虧數額(CTP專有) TACCOUNT(31); 手續(xù)費: 返回當前交易帳戶中的手續(xù)費(CTP專有) TACCOUNT(32); 入金金額: 返回當前交易帳戶中的入金金額(CTP專有) TACCOUNT(33); 出金金額: 返回當前交易帳戶中的出金金額(CTP專有) TACCOUNT(34); 上次信用額度: 返回當前交易帳戶中的上次信用額度(CTP專有) TACCOUNT(35); 上次質壓: 返回當前交易帳戶中的上次質壓(CTP專有) TACCOUNT(36); 質壓金額: 返回當前交易帳戶中的質壓金額(CTP專有) TACCOUNT(36); 信用額度: 返回當前交易帳戶中的信用額度(CTP專有) 。。。 TACCOUNT(43) 其它的賬戶函數,請自己依次查看 注意:在公式編輯中,點擊 [ << ] 可彈出函數列表,可按類查找需要的函數,雙擊該函數將直接引入公式。公式中的藍色字段為函數名,將鼠標放在未知的藍色字段上,將看到該函數的描述和基本用法。 |
|