請教老師;我能否在文華8.2版本上實現這樣的要求;在一個模型中的多個相同的指令信號上實現不同的委托執行方式?
就是我想把模型中的一個指令的執行條件細化為兩個,如;SPK指令出現在陽線上時就按收盤價執行,出現在陰線上時就按指令價執行,如;
AAA&&ISDOWN,SPK;(收盤價委托)
AAA&&ISUP,SPK;(指令價委托)
麥語言函數里有信號執行函數,研究了半天,也沒有辦法,只好請教老師了,謝謝
CHECKSIG_SEC和CHECKSIG_MIN和CHECKSIG函數可以實現將某信號單獨設置為指令價委托的。
以其中一個為例:
CHECKSIG_SEC(SIG,MODE1,TIME1,MODE2,TIME2);SIG為信號,MODE1為信號確認方式,TIME1信號確認時間,MODE2信號復核方式,TIME2信號復核時間。
注:
1、寫了這個函數以后,模型會按照指令價方式運行。
2、該函數使用Tick逐筆函數做計算,回測精準,但是計算量大,每一天就要計算幾萬筆,速度會慢很多。
3、SIG位置為交易指令,包括BK\SK\BP\SP\BPK\SPK\CLOSEOUT所有指令。
4、MODE1位置為信號確認方式,有A和B兩種:
A:出信號N秒確認信號下單。N在TIME1位置設置,N>0為出信號N秒確認信號下單,N=0為出信號立即下單。
B:K線走完前N秒確認信號下單。N在TIME1位置設置,N>0為K線走完前N秒確認信號下單,N=0為K線走完確認信號下單
5、MODE2位置為信號復核方式,有C,D,E和F四種:
C:下單后N秒進行信號復核。N在TIME2位置設置,N>0為下單后N秒進行信號復核,N=0為不復核。
D:K線走完前N秒進行信號復核。N在TIME2位置設置,N>0為K線走完前N秒進行信號復核,N=0為K線走完復核。
E:每一個小節(包括:商品合約10:15-10:30休盤、11:30-13:30休市;股指合約11:30-13:00休市)最后一根K線提前N秒復核。N在TIME2位置設置,N>0為每一個小節最后一根K線提前N秒進行信號復核,N=0為不復核。其他非小節最后一根K線是K線走完復核。
F:每天收盤前最后一根K線提前N秒復核。N在TIME2位置設置,N>0為每天收盤前最后一根K線提前N秒進行信號復核,N=0為不復核。其他非收盤前最后一根K線是K線走完復核。
6、模型中寫入該函數,一根K線只能有一個信號。
7、CHECKSIG、MULTSIG、MULTSIG_SEC、MULTSIG_MIN、CHECKSIG_MIN和CHECKSIG_SEC函數不能同時出現在一個模型中
8、該函數只允許在模組中使用,不支持加載到盒子。
9、未使用該函數的指令,默認的信號執行方式為K線走完確認信號下單。
10、參數N非0時,該函數不支持加載到量能周期和日線以上的周期中使用。
11、如果用該函數設置了信號復核,復核時產生了信號消失,會進行信號消失處理。信號消失的處理方式:
還沒有成交時的信號消失處理-撤單
BK、SK信號消失處理-平倉
BPK、SPK信號消失處理-平倉+恢復建倉
BP、SP信號消失處理-恢復建倉
幾種典型的信號復核確認方式對應的寫法舉例:
CHECKSIG_SEC(SIG,'A',0,'D',0);//出信號立即下單,K線走完復核
CHECKSIG_SEC(SIG,'A',N,'D',0);//出信號N秒確認信號下單,K線走完復核
CHECKSIG_SEC(SIG,'A',N,'C',0);//出信號N秒確認信號下單,不進行復核
CHECKSIG_SEC(SIG,'B',N,'D',0);//K線走完前N秒確認信號下單,K線走完復核
CHECKSIG_SEC(SIG,'B',N,'C',0);//K線走完前N秒確認信號下單,不復核
CHECKSIG_SEC(SIG,'B',0,'C',N);//K線走完確認信號下單
CHECKSIG_SEC(SIG,'B',0,'D',0);//K線走完確認信號下單
CHECKSIG_SEC(SIG,'A',0,'C',0);//出信號立即下單,不復核
CHECKSIG_SEC(SIG,'A',0,'F',10);//出信號立即下單,收盤前最后一根K線提前10秒進行復核。
例:
C>O,BK;
C<O,SP;
CHECKSIG_SEC(BK,'A',5,'D',0);//設置BK信號,出信號5秒后確認下單,K線走完復核。
CHECKSIG_SEC(SP,'A',0,'C',10);//設置SP信號,出信號立即下單,下單后10秒復核。
AUTOFILTER;