这个是在金字塔里的修改的 目的是实现开仓2手,满足翻转信号全平,赚5条减1手,剩下1手满足赚50跳或 信号翻转平仓,求教是否编写正确 如有错误麻烦给修改下
INPUT:P2(5,2,100,1){止盈幅度};
VARIABLE:MAXPROFIT=0,{有仓位时最大获利幅度}VMIN = 090000;{用于隔夜高开或低开时间差}
WIN1:=0;
WIN2:=0;//止盈、止损、回撤控制
VARIABLE:ss=2;
VARIABLE:ss1=-2;
////////////////////////////////////////////////////////////////////////
//账户信息:
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
可用现金:CASH(0),PRECISION0,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;
////////////////////////////////////////////////////////////////////////
//主程序
/////////////////
//信号模块:该模块主用于多空头及平仓信号的量化
{示例如下:开多:当MA10上穿MA20时,发出买入开仓交易指令; 平空:当MA10
上穿MA5时,发出卖出平仓交易指令;平多:当MA5上穿MA10时,发出买入平仓交
易指令;开空:当MA10下穿MA20时,发出开空交易指令;}
MA5: MA(CLOSE,5),PRECISION0,;
MA10:MA(CLOSE,10),PRECISION0,;
MA20:MA(CLOSE,20),PRECISION0,;
开多:=CROSS(MA10,MA20);
平多:=CROSS(MA5,MA10);
开空:=CROSS(MA20,MA10);
平空:=CROSS(MA10,MA5);
交易时间:=TIME>VMIN AND TIME<150000;
////////////////
//图表日内交易模块:
IF HOLDING=0 THEN BEGIN
//多头开仓
IF 交易时间 AND 开多 THEN BEGIN
BUY(1,ss,LIMITR,CLOSE);
MAXPROFIT:=0;
END
//空头开仓
IF 交易时间 AND 开空 THEN BEGIN
BUYSHORT(1,ss1,LIMITR,CLOSE);
MAXPROFIT:=0;
END
END
IF HOLDING=ss THEN BEGIN
//多头平仓
IF 平多 THEN
SELL(1,HOLDING,LIMITR,CLOSE);
end
IF HOLDING=ss THEN BEGIN
//多头平1手
IF (C-ENTERPRICE)>p2 THEN
SELL(1,1,LIMITR,CLOSE);
ss=ss-1;
end
IF HOLDING=ss THEN BEGIN
//多头平剩下1手
IF (C-ENTERPRICE)>50*MINDIFF or 平多 THEN
SELL(1,holding,LIMITR,CLOSE);
end
//多头收盘平仓
IF NOT(交易时间) THEN
SELL(1,HOLDING,LIMITR,CLOSE);
IF HOLDING=ss1 THEN BEGIN
//空头平仓
IF 平多 THEN
SELL(1,HOLDING,LIMITR,CLOSE);
end
IF HOLDING=ss1 THEN BEGIN
//空头平1手
IF (ENTERPRICE-c)>p2 THEN
SELL(1,1,LIMITR,CLOSE);
ss1=ss-1;
end
IF HOLDING=ss1 THEN BEGIN
//空头平剩下1手
IF (C-ENTERPRICE)>50*MINDIFF or 平多 THEN
SELL(1,holding,LIMITR,CLOSE);
end
//空头收盘平仓
IF NOT(交易时间) THEN
SELLSHORT(1,HOLDING,LIMITR,CLOSE);
老师按照你的要求 改了 还是不能按照获利5条先减仓一手执行 ,麻烦老师给看看写的对不对
INPUT:P2(5,2,100,1){止盈幅度};
VARIABLE:MAXPROFIT=0,{有仓位时最大获利幅度}VMIN = 090000;{用于隔夜高开或低开时间差}
WIN1:=0;
WIN2:=0;//止盈、止损、回撤控制
VARIABLE:ss=2;
VARIABLE:ss1=-2;
////////////////////////////////////////////////////////////////////////
//账户信息:
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
可用现金:CASH(0),PRECISION0,LINETHICK0;
胜率:PERCENTWIN,LINETHICK0;
交易次数:TOTALTRADE,LINETHICK0;
//主程序
/////////////////
//信号模块:该模块主用于多空头及平仓信号的量化
{示例如下:开多:当MA10上穿MA20时,发出买入开仓交易指令; 平空:当MA10
上穿MA5时,发出卖出平仓交易指令;平多:当MA5上穿MA10时,发出买入平仓交
易指令;开空:当MA10下穿MA20时,发出开空交易指令;}
MA5: MA(CLOSE,5),PRECISION0,;
MA10:MA(CLOSE,10),PRECISION0,;
MA20:MA(CLOSE,20),PRECISION0,;
开多:=CROSS(MA10,MA20);
平多:=CROSS(MA5,MA10);
开空:=CROSS(MA20,MA10);
平空:=CROSS(MA10,MA5);
交易时间:=TIME>VMIN AND TIME<150000;
////////////////
//图表日内交易模块:
IF HOLDING=0 THEN BEGIN
//多头开仓
IF 交易时间 AND 开多 THEN BEGIN
BUY(1,ss,LIMITR,CLOSE);
MAXPROFIT:=0;
END
//空头开仓
IF 交易时间 AND 开空 THEN BEGIN
BUYSHORT(1,ss1,LIMITR,CLOSE);
MAXPROFIT:=0;
END
END
IF HOLDING=ss THEN BEGIN
//多头平仓
IF 平多 THEN
SELL(1,HOLDING,LIMITR,CLOSE);
end
IF HOLDING=1 THEN BEGIN
//多头平1手
IF (C-ENTERPRICE)>p2 THEN
SELL(1,1,LIMITR,CLOSE);
end
IF HOLDING=1 THEN BEGIN
//多头平剩下1手
IF (C-ENTERPRICE)>50*MINDIFF THEN
SELL(1,holding,LIMITR,CLOSE);
end
//多头收盘平仓
IF NOT(交易时间) THEN
SELL(1,HOLDING,LIMITR,CLOSE);
IF HOLDING=ss1 THEN BEGIN
//空头平仓
IF 平多 THEN
SELL(1,HOLDING,LIMITR,CLOSE);
end
IF HOLDING=-1 THEN BEGIN
//空头平1手
IF (ENTERPRICE-c)>p2 THEN
SELL(1,1,LIMITR,CLOSE);
end
IF HOLDING=-1 THEN BEGIN
//空头平剩下1手
IF (C-ENTERPRICE)>50*MINDIFF or 平空 THEN
SELL(1,holding,LIMITR,CLOSE);
end
//空头收盘平仓
IF NOT(交易时间) THEN
SELLSHORT(1,HOLDING,LIMITR,CLOSE);