我用程序自带的那个图表“完整交易系统范例”测试一天都能正常,但想修改一下发现编译不能过,老显示
“MKT控制符只能在台控制中”这是为什么呀
我在后台程序中编译这个指令又能通过,这指今难道在图表中他能自动休息?
你确定另一个编译通过了??代码贴出来了
函数的参数都是有规定的,buy的函数控制符是没哟mkt的,你这么写肯定过不了
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//此策略以当前价格突破为进场条件,进场之后记录价格变动的最高、最低,并计算回撤点数,当参数设置启动了回撤止盈时,符合条件就会平仓。
//有止损设置,赚钱超过3点时,如果价格回撤,系统会保留1.2点的盈利退出,这样至少可以保住手续费。
//作者:GUOTX2010 日期:2011-03-21
//参数定义
EMA13:=EMA(C,10),COLORWHITE;
EMA21:=EMA(C,21),COLORYELLOW;
EMA34:=EMA(C,34),COLORFF00FF;
EMA60:=MA(C,55),COLORFFCC66;
X1:=(C+L+H)/3;
X2:=EMA(X1,5);
X3:=EMA(X2,4);
STICKLINE(X2>X3 AND C>EMA13,LOW,HIGH,0.1,1),COLORRED;
STICKLINE(X2>X3 AND C>EMA13,CLOSE,OPEN,3,1),COLORRED;
STICKLINE(X2<X3 AND C<EMA13,LOW,HIGH,0.1,1),COLORFFFF52;
STICKLINE(X2<X3 AND C<EMA13,CLOSE,OPEN,3,0),COLORFFFF52;
BUY1:=FILTER(X2>X3 AND C>EMA13,4);
SELL1:=FILTER(X2<X3 AND C<EMA13,4);
//使用系列模式时
//{开多} ENTERLONG:BUY1,TFILTER;
//{平多}EXITLONG:SELL1 ,TFILTER;
//
//{开空}ENTERSHORT:SELL1 ,TFILTER;
//{平空}EXITSHORT:BUY1 ,TFILTER;
//使用逐K线模式时
VARIABLE:DUOKONG=0;
TSFS:=0; {停损反手,1-反手 0-不反手}
ORDVOL:=1; {开仓手数}
ZSDS:=10; {止损点数}
//以下变量用于移动止盈,,移动止盈只能保证你尽可能稳健盈利,却不能保证盈利最大化,如果不想使用,可是将总开关设置为0
VARIABLE:YDZY=1; {移动止盈总开关,1为开,0为关}
VARIABLE:HIGHPRICE=0,LOWPRICE=0; {保存开仓后的最高价、最低价}
VARIABLE:DHCDS=3,KHCDS=3; {多、空单回撤点数}
VARIABLE:DYLDS=7,KYLDS=7; {多、空单盈利点数,当盈利点数达到这个标准后,如果回撤达到上面的参数值就平仓}
VARIABLE:Z3B1:=1; {赚3保1开关}
DUOKONG:=1;
//持有空单
IF HOLDING<0 THEN BEGIN
IF BUY1 THEN BEGIN //平空单
空平:SELLSHORT(1,0,MKT),ORDERQUEUE;
END
//止损
IF C-ENTERPRICE>=ZSDS THEN BEGIN
空损:SELLSHORT(1,0,MKT),ORDERQUEUE;
END
//移动止盈
IF YDZY=1 THEN BEGIN
//每周期判断是否创新低
IF L<LOWPRICE THEN BEGIN
LOWPRICE:=L;
END
//如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF ENTERPRICE-LOWPRICE>=KYLDS THEN BEGIN
IF L-LOWPRICE>=KHCDS THEN BEGIN //回撤超过3点
空赢:SELLSHORT(1,0,MARKET);
END
END
END
//赚3保1
IF Z3B1=1 THEN BEGIN
IF ENTERPRICE-LOWPRICE>=3 THEN BEGIN
IF ENTERPRICE-L<=1.2 THEN BEGIN
空保:SELLSHORT(1,0,MARKET);
END
END
END
END
//开多单
IF HOLDING=0 THEN BEGIN
IF DUOKONG=1 OR DUOKONG=2 THEN BEGIN
IF BUY1 THEN BEGIN
多开:BUY(1=1,ORDVOL,MKT);
HIGHPRICE:=ENTERPRICE; //将开仓价保存到最高价
END
END
END
//持有多单
IF HOLDING>0 THEN BEGIN
IF SELL1 THEN BEGIN {平多单}
多平:SELL(1,0,MKT),ORDERQUEUE;
END
//多单管理
//止损
IF ENTERPRICE-C>=ZSDS THEN BEGIN
多损:SELL(1,0,MKT),ORDERQUEUE;
END
//移动止盈
IF YDZY=1 THEN BEGIN
//每周期判断是否创新高
IF H>HIGHPRICE THEN BEGIN
HIGHPRICE:=H;
END
//如果盈利超过10点之后回撤达到3点,就平仓,保住盈利
IF HIGHPRICE-ENTERPRICE>=DYLDS THEN BEGIN
IF HIGHPRICE-H>=DHCDS THEN BEGIN //回撤超过3点
多赢:SELL(1,0,MARKET);
END
END
END
//赚3保1
IF Z3B1=1 THEN BEGIN
IF HIGHPRICE-ENTERPRICE>=3 THEN BEGIN
IF H-ENTERPRICE<=1.2 THEN BEGIN
多保:SELL(1,0,MARKET);
END
END
END
END
//开空单
IF HOLDING=0 THEN BEGIN
IF DUOKONG=1 OR DUOKONG=3 THEN BEGIN
IF SELL1 THEN BEGIN
空开:BUYSHORT(1=1,ORDVOL,MKT);
LOWPRICE:=ENTERPRICE;
END
END
END
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
*********************************************************************************上面是系统带的程序,模拟图表测试正常
如果这里不能正常编译,那我在什么样的环境下编译呢,下面是系统另一个能过过的后台程序
**************************************************************************************
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//该模型运行于后台程序化模式
ZH1:'1000';
PZ1:'IF00';
VARIABLE:A=0;
//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);
//控制日内交易次数
IF TTOTALDAYTRADE>=300 THEN EXIT;
//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
//加仓
IF TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10 THEN BEGIN
阳线加仓:TBUY(CLOSE>OPEN,2,LMT,CLOSE,ZH1,PZ1);
阴线加仓:TBUY(CLOSE<OPEN,1,LMT,CLOSE,ZH1,PZ1);
END
//固定止损止盈
IF DYNAINFO( 7)-TAVGENTERPRICEEX2(ZH1 ,PZ1 ,0 )>20*MINDIFF THEN BEGIN
TSELL(1,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
END
//止损
IF TAVGENTERPRICEEX2(ZH1 ,PZ1 ,0 )-C>10*MINDIFF THEN BEGIN
TSELL(1,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);
END
//监控未成交单
WCJ:=TREMAINQTY( 1, ZH1,PZ1);
IF WCJ<>0 THEN BEGIN
A:=WCJ;
END
//对为成交单撤单,并追单
IF WCJ>0 THEN BEGIN
TCANCELEX(1,1,ZH1,PZ1 );
TBUY(WCJ=0,A,MKT,0,ZH1,PZ1);
END
//监控持仓和资金状况
当前持仓量:=TBUYHOLDINGEX( ZH1,PZ1 ,0 );
当前可用资金:=TACCOUNT(19);
DEBUGOUT('当前持仓量%.2f',当前持仓量 );
DEBUGOUT('当前可用资金%.2f',当前可用资金 );
//收盘前强平
IF CURRENTTIME>=150000 THEN BEGIN
TSELL(1,0,MKT,0,ZH1,PZ1);
END
我知道通不过,但是我没有例程可以用,所以就找了这么个,程序自带的能通过编译,我再修改他就过不了,有个什么样类数的程序可以用也可以呀
只要有一个完善的程序就好,我看这里面的东西都不错,止损,移动止赢都有,可以提供一个吗,
这一个不太明白的是系统自带的他能运行得很好,但一修改就过不了编译,有点想不明白
“MKT控制符只能在台控制中"
你看下提示哪里错了自己改下啊。
这个就是mkt用在后台函数中,market用在图表函数中。你不要两者混起来用
你如果是图表自己代码里ctrl+h,把mkt的都换成market。
这个怎么有范例,代码都没问题就是你一个函数写粗,自己全部替换过去就行了