文華MQ股票池程序化的信號執(zhí)行方式和模型類型[文華財經(jīng)公式]
二、期貨模型的機制
模型默認信號執(zhí)行方式為指令價(出信號立即下單),也支持編寫多樣的信號執(zhí)行方式
模型默認為一根K線一個信號的模型,也支持編寫一根K線多個信號的模型
模型默認為一次建倉模型,也支持編寫連續(xù)建倉模型
(一)信號執(zhí)行方式
一根K線的第一個信號有效;
出信號立即下單,下單后到k線走完的的后續(xù)信號不再執(zhí)行,K線走完時按照那個時刻的信號做持倉同步;
回測不考慮信號消失成本。
避免信號消失的編寫要點:
(1)K線走完確認信號下單,使用REF判斷信號條件
(2)K線盤中執(zhí)行,使用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、通過環(huán)境設置函數(shù)設定多樣化的信號執(zhí)行方式
(1)啟用信號消失計算
寫入FinalSigging
一根K線的每一個信號都有效;
出信號立即下單,后續(xù)出現(xiàn)的信號依舊執(zhí)行下單,K線走完時按照那個時刻的信號做持倉同步;
回測方式為逐筆或逐分鐘回測,統(tǒng)計信號消失成本,回測與實盤運行結果一致
例:
Setting
FinalSigging:2,0;//根據(jù)逐步回測的方式執(zhí)行出信號立即下單,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線最多可以出現(xiàn)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 設置模型信號是否執(zhí)行
如果軟件自帶的信號執(zhí)行方式還不能滿足您的需求,您可以通過自編信號執(zhí)行方式實現(xiàn)。
不支持回測
(來源 www.tumamayizhan.com )
1、默認信號執(zhí)行方式一根K線的第一個信號有效;
出信號立即下單,下單后到k線走完的的后續(xù)信號不再執(zhí)行,K線走完時按照那個時刻的信號做持倉同步;
回測不考慮信號消失成本。
避免信號消失的編寫要點:
(1)K線走完確認信號下單,使用REF判斷信號條件
(2)K線盤中執(zhí)行,使用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、通過環(huán)境設置函數(shù)設定多樣化的信號執(zhí)行方式
(1)啟用信號消失計算
寫入FinalSigging
一根K線的每一個信號都有效;
出信號立即下單,后續(xù)出現(xiàn)的信號依舊執(zhí)行下單,K線走完時按照那個時刻的信號做持倉同步;
回測方式為逐筆或逐分鐘回測,統(tǒng)計信號消失成本,回測與實盤運行結果一致
例:
Setting
FinalSigging:2,0;//根據(jù)逐步回測的方式執(zhí)行出信號立即下單,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線最多可以出現(xiàn)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 設置模型信號是否執(zhí)行
如果軟件自帶的信號執(zhí)行方式還不能滿足您的需求,您可以通過自編信號執(zhí)行方式實現(xiàn)。
不支持回測
(來源 www.tumamayizhan.com )
?
(二)模型類型
1、一次建倉模型
默認為一次建倉模型,不允許連續(xù)出開倉信號,可以連續(xù)出平倉信號。
只有在持倉為0時才能開新倉,一次交易只能建一次倉,有多個開倉信號都滿足條件的時候,取第一個信號作為有效信號,后面的K線上的同樣信號將被過濾掉
編寫要點:
(1)一開一平模型:開倉手數(shù)與平倉手數(shù)一致
(2)減倉模型:平倉手數(shù)小于開倉手數(shù)
例子:
①開平倉手數(shù)一致
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
②平倉手數(shù)小于開倉手數(shù)
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控制一次交易過程中的最大建倉次數(shù),允許連續(xù)出開倉信號和平倉信號;
達到最大連續(xù)建倉次數(shù)后,平掉連續(xù)建倉的首次建倉,才能另開新倉。
例:
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
默認為一次建倉模型,不允許連續(xù)出開倉信號,可以連續(xù)出平倉信號。
只有在持倉為0時才能開新倉,一次交易只能建一次倉,有多個開倉信號都滿足條件的時候,取第一個信號作為有效信號,后面的K線上的同樣信號將被過濾掉
編寫要點:
(1)一開一平模型:開倉手數(shù)與平倉手數(shù)一致
(2)減倉模型:平倉手數(shù)小于開倉手數(shù)
例子:
①開平倉手數(shù)一致
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
②平倉手數(shù)小于開倉手數(shù)
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、連續(xù)建倉模型模型通過寫入AddTimes控制一次交易過程中的最大建倉次數(shù),允許連續(xù)出開倉信號和平倉信號;
達到最大連續(xù)建倉次數(shù)后,平掉連續(xù)建倉的首次建倉,才能另開新倉。
例:
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://www.tumamayizhan.com/2018/02/10/50055.shtml
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內(nèi)容