文华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 设置模型信号是否执行
如果软件自带的信号执行方式还不能满足您的需求,您可以通过自编信号执行方式实现。
不支持回测
(来源 www.cxh99.com )
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 设置模型信号是否执行
如果软件自带的信号执行方式还不能满足您的需求,您可以通过自编信号执行方式实现。
不支持回测
(来源 www.cxh99.com )
(二)模型类型
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://www.cxh99.com/2018/02/10/50055.shtml
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容