文華MQ股票池程序化的信號執行方式和模型類型[文華財經公式]
二、期貨模型的機制
模型默認信號執行方式為指令價(出信號立即下單),也支持編寫多樣的信號執行方式
模型默認為一根K線一個信號的模型,也支持編寫一根K線多個信號的模型
模型默認為一次建倉模型,也支持編寫連續建倉模型
(一)信號執行方式
一根K線的第一個信號有效;
出信號立即下單,下單后到k線走完的的后續信號不再執行,K線走完時按照那個時刻的信號做持倉同步;
回測不考慮信號消失成本。
避免信號消失的編寫要點:
(1)K線走完確認信號下單,使用REF判斷信號條件
(2)K線盤中執行,使用High/Low判斷信號條件
例子:編寫模型陽線買入開倉,陰線賣出平倉
①
Begin
If(Ref(IsUp,1)) //前一根K線確認為陽線,買入開倉
buy;
If(Ref(IsDown,1))//前一根K線確認為陰線,賣出平倉
Sell;
End
②
Begin
If(High>Open)//當根K線盤中為陽線時,買入開倉
buy;
If(Low<Open)//當根K線盤中為陰線時,賣出平倉
Sell;
End
2、通過環境設置函數設定多樣化的信號執行方式
(1)啟用信號消失計算
寫入FinalSigging
一根K線的每一個信號都有效;
出信號立即下單,后續出現的信號依舊執行下單,K線走完時按照那個時刻的信號做持倉同步;
回測方式為逐筆或逐分鐘回測,統計信號消失成本,回測與實盤運行結果一致
例:
Setting
FinalSigging:2,0;//根據逐步回測的方式執行出信號立即下單,K線走完持倉同步
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy;
if(MA1<MA2)
Sell;
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
(2)設置一根k線多信號的指令價方式
寫入MultSig/MultSig_Min
出信號N秒下單,不進行信號復核;
可以設置一根K線多個信號;
回測方式為逐筆或逐分鐘回測,不存在信號消失,回測與實盤運行結果一致
例:
Setting
MultSig:0,0,0,0,2,0;//出信號立即下單,不進行復核,一根K線最多可以出現2個信號
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy;
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell;
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
(3)SignalNoTrading 設置模型信號是否執行
如果軟件自帶的信號執行方式還不能滿足您的需求,您可以通過自編信號執行方式實現。
不支持回測
(來源 m.kzuj.com.cn )
1、默認信號執行方式一根K線的第一個信號有效;
出信號立即下單,下單后到k線走完的的后續信號不再執行,K線走完時按照那個時刻的信號做持倉同步;
回測不考慮信號消失成本。
避免信號消失的編寫要點:
(1)K線走完確認信號下單,使用REF判斷信號條件
(2)K線盤中執行,使用High/Low判斷信號條件
例子:編寫模型陽線買入開倉,陰線賣出平倉
①
Begin
If(Ref(IsUp,1)) //前一根K線確認為陽線,買入開倉
buy;
If(Ref(IsDown,1))//前一根K線確認為陰線,賣出平倉
Sell;
End
②
Begin
If(High>Open)//當根K線盤中為陽線時,買入開倉
buy;
If(Low<Open)//當根K線盤中為陰線時,賣出平倉
Sell;
End
2、通過環境設置函數設定多樣化的信號執行方式
(1)啟用信號消失計算
寫入FinalSigging
一根K線的每一個信號都有效;
出信號立即下單,后續出現的信號依舊執行下單,K線走完時按照那個時刻的信號做持倉同步;
回測方式為逐筆或逐分鐘回測,統計信號消失成本,回測與實盤運行結果一致
例:
Setting
FinalSigging:2,0;//根據逐步回測的方式執行出信號立即下單,K線走完持倉同步
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy;
if(MA1<MA2)
Sell;
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
(2)設置一根k線多信號的指令價方式
寫入MultSig/MultSig_Min
出信號N秒下單,不進行信號復核;
可以設置一根K線多個信號;
回測方式為逐筆或逐分鐘回測,不存在信號消失,回測與實盤運行結果一致
例:
Setting
MultSig:0,0,0,0,2,0;//出信號立即下單,不進行復核,一根K線最多可以出現2個信號
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy;
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell;
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
(3)SignalNoTrading 設置模型信號是否執行
如果軟件自帶的信號執行方式還不能滿足您的需求,您可以通過自編信號執行方式實現。
不支持回測
(來源 m.kzuj.com.cn )
?
(二)模型類型
1、一次建倉模型
默認為一次建倉模型,不允許連續出開倉信號,可以連續出平倉信號。
只有在持倉為0時才能開新倉,一次交易只能建一次倉,有多個開倉信號都滿足條件的時候,取第一個信號作為有效信號,后面的K線上的同樣信號將被過濾掉
編寫要點:
(1)一開一平模型:開倉手數與平倉手數一致
(2)減倉模型:平倉手數小于開倉手數
例子:
①開平倉手數一致
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy;
if(CrossUp(MA1,MA2))
buy;
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell;
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
②平倉手數小于開倉手數
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy(2);
if(CrossUp(MA1,MA2))
buy(1);
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell(1);
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
模型通過寫入AddTimes控制一次交易過程中的最大建倉次數,允許連續出開倉信號和平倉信號;
達到最大連續建倉次數后,平掉連續建倉的首次建倉,才能另開新倉。
例:
Setting
AddTimes:3;
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy(2);
if(CrossUp(MA1,MA2))
buy(1);
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell(1);
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
默認為一次建倉模型,不允許連續出開倉信號,可以連續出平倉信號。
只有在持倉為0時才能開新倉,一次交易只能建一次倉,有多個開倉信號都滿足條件的時候,取第一個信號作為有效信號,后面的K線上的同樣信號將被過濾掉
編寫要點:
(1)一開一平模型:開倉手數與平倉手數一致
(2)減倉模型:平倉手數小于開倉手數
例子:
①開平倉手數一致
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy;
if(CrossUp(MA1,MA2))
buy;
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell;
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
②平倉手數小于開倉手數
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy(2);
if(CrossUp(MA1,MA2))
buy(1);
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell(1);
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
?
2、連續建倉模型模型通過寫入AddTimes控制一次交易過程中的最大建倉次數,允許連續出開倉信號和平倉信號;
達到最大連續建倉次數后,平掉連續建倉的首次建倉,才能另開新倉。
例:
Setting
AddTimes:3;
Vars
NumericSeries MA1;
NumericSeries MA2;
begin
MA1=Ma(Close,5);
MA2=Ma(Close,10);
if(CrossUp(Close,MA1))
buy(2);
if(CrossUp(MA1,MA2))
buy(1);
if(Close>BKPrice+10*MinPrice || Close<BKPrice-5*MinPrice)
Sell(1);
PlotLine("MA1",MA1,White);
PlotLine("MA2",MA2,Yellow);
End
<!--end 第二大部分--> <!--start 第三大部分-->
?
?
來源:http://m.kzuj.com.cn/2018/02/10/50055.shtml
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容