老师,请帮忙把下面的程序编成MQ语言的,谢谢!
参数:n=10;nn=20;mm=15;p=24;m=20
DIRECTION:=CLOSE-REF(CLOSE,N);
VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);
ER:=ABS(DIRECTION/VOLATILITY);
FASTSC:=2/(2+1);
SLOWSC:=2/(30+1);
SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;
CONSTANT:=SSC*SSC;
AMA:=EMA(DMA(CLOSE,CONSTANT),2),COLORGREEN;
DIRECTION2:=CLOSE-REF(CLOSE,NN);
VOLATILITY2:=SUM(ABS((CLOSE-REF(CLOSE,1))),NN);
ER2:=ABS(DIRECTION2/VOLATILITY2);
FASTSC2:=2/(2+1);
SLOWSC2:=2/(30+1);
SSC2:=ER2*(FASTSC2-SLOWSC2)+SLOWSC2;
CONSTANT2:=SSC2*SSC2;
AMA2:=EMA(DMA(CLOSE,CONSTANT2),2),COLORGREEN;
AMAUP:=REF(AMA2+REF(ABS(((HHV(AMA2,MM)-LLV(AMA2,MM))*0.3)),1),1),COLORMAGENTA;
AMADOWN:=REF(AMA2-REF(ABS(((HHV(AMA2,MM)-LLV(AMA2,MM))*0.3)),1),1),COLORBLUE;
ROC:=EMA(ABS((CLOSE-REF(CLOSE,P))/REF(CLOSE,P)),20);
变化率:=(ROC-REF(ROC,2))*10;
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,M);
UP:=EMA(AMA+3.5*(1-变化率)*ATR,10);
DOWN:=EMA(AMA-3.5*(1-变化率)*ATR,10);
反弹价格高点:=((1-ER)*ATR*ABS(2-ROC))+AMA;
回调价格低点:=AMA-((1-ER)*ATR*ABS(2-ROC));
空头变盘点:EMA(((1-ER)*ATR*ABS(6-ROC))+AMA,10);
多头变盘点:EMA(AMA-((1-ER)*ATR*ABS(6-ROC)),10);
带宽:空头变盘点-多头变盘点,NODRAW;
带宽变化值:=REF((LLV(带宽,120)+LLV(带宽,90)+LLV(带宽,60)+LLV(带宽,30))/4,1);
有效信号分界限:REF(MAX(350,带宽变化值),1);
带宽2:=STD(空头变盘点-多头变盘点,20);
带宽2变化值:=REF((LLV(带宽2,120)+LLV(带宽2,90)+LLV(带宽2,60)+LLV(带宽2,30))/4,1);
带宽2有效信号:=REF(MAX(40,带宽2变化值),1);
MA1:=EMA(CLOSE,3);
MA2:=EMA(CLOSE,5);
MA3:=EMA(CLOSE,8);
MA4:=EMA(CLOSE,10);
MA5:=EMA(CLOSE,12);
MA6:=EMA(CLOSE,15);
MA7:=EMA(CLOSE,30);
MA8:=EMA(CLOSE,35);
MA9:=EMA(CLOSE,40);
MA10:=EMA(CLOSE,45);
MA11:=EMA(CLOSE,50);
MA12:=EMA(CLOSE,60);
贪婪恐惧线:(MA1-MA2)+(MA2-MA3)+(MA3-MA4)+(MA4-MA5)+(MA5-MA6)+(MA6-MA7)+(MA7-MA8)+(MA8-MA9)+(MA9-MA10)+(MA10-MA11)+(MA11-MA12),NODRAW;
扩张收缩分界线:=0;
多头泡沫:=185;
空头泡沫:=-185;
多头止损:=REF(LLV(L,3),1);
空头止损:=REF(HHV(H,3),1);
止损线:REF(MA(C,25),2);
带宽<有效信号分界限&&CROSSUP(C,空头变盘点)||带宽2<带宽2有效信号&&贪婪恐惧线>0&&贪婪恐惧线<多头泡沫&&CROSSUP(AMA2,AMAUP),BK;
H>=BKPRICE1*1.2||CROSSDOWN(C,止损线),SP;
带宽<有效信号分界限&&CROSSDOWN(C,多头变盘点)||带宽2<带宽2有效信号&&贪婪恐惧线<0&&贪婪恐惧线>空头泡沫&&CROSSDOWN(AMA2,AMADOWN),SK;
L<=SKPRICE1*0.8||CROSSUP(C,止损线),BP;
SETSIGPRICETYPE(BK,NEW_ORDER);
SETSIGPRICETYPE(SK,NEW_ORDER);
SETSIGPRICETYPE(SP,NEW_ORDER);
SETSIGPRICETYPE(BP,NEW_ORDER);
AUTOFILTER;
1楼模型在wh8上直接使用就可以实现,没必要用MQ的 您为什么要改写成MQ的编写语言呢? ―――――――――――――――――――――――――――― 给您普及下: wh8和MQ定位不同,应用的编写语言业不同,适用的交易群体也不同的 wh8是麦语言,主要针对个人程序化交易者;MQ是宽语言,逻辑思路等与麦语言都不同,主要针对的是资金量多的机构交易者 如果您没有特别的需求,而且对wh8麦语言比较熟悉的话,您使用wh8就可以的,如果重新学习wh9的宽语言,学习成本是比较高的 |
参考:
Params
Numeric n(10);
Numeric nn(20);
Numeric mm(15);
Numeric p(24);
Numeric m(20);
Vars
NumericSeries DIRECTION;
NumericSeries VOLATILITY;
NumericSeries ER;
NumericSeries FASTSC;
NumericSeries SLOWSC;
NumericSeries SSC;
NumericSeries CONSTANT;
NumericSeries AMA;
NumericSeries DIRECTION2;
NumericSeries VOLATILITY2;
NumericSeries ER2;
NumericSeries FASTSC2;
NumericSeries SLOWSC2;
NumericSeries SSC2;
NumericSeries CONSTANT2;
NumericSeries AMA2;
NumericSeries AMAUP;
NumericSeries AMADOWN;
NumericSeries ROC;
NumericSeries 变化率;
NumericSeries TR;
NumericSeries ATR;
NumericSeries UP;
NumericSeries DOWN;
NumericSeries 反弹价格高点;
NumericSeries 回调价格低点;
NumericSeries 空头变盘点;
NumericSeries 多头变盘点;
NumericSeries 带宽;
NumericSeries 带宽变化值;
NumericSeries 有效信号分界限;
NumericSeries 带宽2;
NumericSeries 带宽2变化值;
NumericSeries 带宽2有效信号;
NumericSeries MA1;
NumericSeries MA2;
NumericSeries MA3;
NumericSeries MA4;
NumericSeries MA5;
NumericSeries MA6;
NumericSeries MA7;
NumericSeries MA8;
NumericSeries MA9;
NumericSeries MA10;
NumericSeries MA11;
NumericSeries MA12;
NumericSeries 贪婪恐惧线;
NumericSeries 扩张收缩分界线;
NumericSeries 多头泡沫;
NumericSeries 空头泡沫;
NumericSeries 多头止损;
NumericSeries 空头止损;
NumericSeries 止损线;
Begin
DIRECTION=CLOSE-REF(CLOSE,N);
VOLATILITY=SUM(ABS((CLOSE-REF(CLOSE,1))),N);
ER=ABS(DIRECTION/VOLATILITY);
FASTSC=2/(2+1);
SLOWSC=2/(30+1);
SSC=ER*(FASTSC-SLOWSC)+SLOWSC;
CONSTANT=SSC*SSC;
AMA=EMA(DMA(CLOSE,CONSTANT),2);
DIRECTION2=CLOSE-REF(CLOSE,NN);
VOLATILITY2=SUM(ABS((CLOSE-REF(CLOSE,1))),NN);
ER2=ABS(DIRECTION2/VOLATILITY2);
FASTSC2=2/(2+1);
SLOWSC2=2/(30+1);
SSC2=ER2*(FASTSC2-SLOWSC2)+SLOWSC2;
CONSTANT2=SSC2*SSC2;
AMA2=EMA(DMA(CLOSE,CONSTANT2),2);
AMAUP=REF(AMA2+REF(ABS(((HHV(AMA2,MM)-LLV(AMA2,MM))*0.3)),1),1);
AMADOWN=REF(AMA2-REF(ABS(((HHV(AMA2,MM)-LLV(AMA2,MM))*0.3)),1),1);
ROC=EMA(ABS((CLOSE-REF(CLOSE,P))/REF(CLOSE,P)),20);
变化率=(ROC-REF(ROC,2))*10;
TR=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR=MA(TR,M);
UP=EMA(AMA+3.5*(1-变化率)*ATR,10);
DOWN=EMA(AMA-3.5*(1-变化率)*ATR,10);
反弹价格高点=((1-ER)*ATR*ABS(2-ROC))+AMA;
回调价格低点=AMA-((1-ER)*ATR*ABS(2-ROC));
空头变盘点=EMA(((1-ER)*ATR*ABS(6-ROC))+AMA,10);
多头变盘点=EMA(AMA-((1-ER)*ATR*ABS(6-ROC)),10);
带宽=空头变盘点-多头变盘点;
带宽变化值=REF((LLV(带宽,120)+LLV(带宽,90)+LLV(带宽,60)+LLV(带宽,30))/4,1);
有效信号分界限=REF(MAX(350,带宽变化值),1);
带宽2=STD(空头变盘点-多头变盘点,20);
带宽2变化值=REF((LLV(带宽2,120)+LLV(带宽2,90)+LLV(带宽2,60)+LLV(带宽2,30))/4,1);
带宽2有效信号=REF(MAX(40,带宽2变化值),1);
MA1=EMA(CLOSE,3);
MA2=EMA(CLOSE,5);
MA3=EMA(CLOSE,8);
MA4=EMA(CLOSE,10);
MA5=EMA(CLOSE,12);
MA6=EMA(CLOSE,15);
MA7=EMA(CLOSE,30);
MA8=EMA(CLOSE,35);
MA9=EMA(CLOSE,40);
MA10=EMA(CLOSE,45);
MA11=EMA(CLOSE,50);
MA12=EMA(CLOSE,60);
贪婪恐惧线=(MA1-MA2)+(MA2-MA3)+(MA3-MA4)+(MA4-MA5)+(MA5-MA6)+(MA6-MA7)+(MA7-MA8)+(MA8-MA9)+(MA9-MA10)+(MA10-MA11)+(MA11-MA12);
扩张收缩分界线=0;
多头泡沫=185;
空头泡沫=-185;
多头止损=REF(LLV(Low,3),1);
空头止损=REF(HHV(High,3),1);
止损线=REF(MA(Close,25),2);
If(带宽<有效信号分界限&&CROSSUP(Close,空头变盘点)||带宽2<带宽2有效信号&&贪婪恐惧线>0&&贪婪恐惧线<多头泡沫&&CROSSUP(AMA2,AMAUP))
{
Buy;
}
IF(带宽<有效信号分界限&&CROSSDOWN(Close,多头变盘点)||带宽2<带宽2有效信号&&贪婪恐惧线<0&&贪婪恐惧线>空头泡沫&&CROSSDOWN(AMA2,AMADOWN))
{
SellShort;
}
IF(High>=BKPRICE1*1.2||CROSSDOWN(Close,止损线))
{
BuyToCover;
}
If(Low<=SKPRICE1*0.8||CROSSUP(Close,止损线))
{
Sell;
}
End
如果回测参数,本地数据量完全一致信号也是完全一致的
此外,您对比主连链回测与单合约加载也是没有意义的
如果需要使用MQ以MQ的回测结果为准就可以,您了解一下