平仓改成全平 (文华财经)

投资者咨询:平仓改成全平 (文华财经)
来源:文华财经  日期:2020-10-20 19:25
 老师请帮改一下,把这个加减仓给改成固定手数下单,开仓多少手,就平仓多少手。

VARIABLE:MYCLOSE:=0,J:=0,AVGMYCLOSE:=0;
VARIABLE:UPTREND:=0,DNTREND:=0,SIGNALFLAG:=0,BUYSETUP:=0,SELLSETUP:=0;
VARIABLE:LOWERBAND:=0,EXITBAND_K:=0,UPPERBAND:=0,EXITBAND_D:=0;
VARIABLE:HIGHERAFTERENTRY:=0,LOWERAFTERENTRY:=0;
VARIABLE:DLIQPOINT:0,KLIQPOINT:0,LIQKA:=0;

FASTMA:=22;       //MACD短周期值
LENGTH:=20; //日线周期均线计算范围; 
EATRPCNT:=13;   //入场通道波动率过滤数值
XATRPCNT:=13;   //出场通道波动率过滤数值
TRS:=2800; //移动止损止盈幅度
FUND:=30000; //单品种投入资金

//跨周期定义
IF DATE<>REF(DATE,1) THEN BEGIN
MYCLOSE:=MYCLOSE+REF(C,1);//每天第一根K线获取上一根的收盘价保存及累加;
J:=J+1;//计数保存了多少日;
END

IF  J=LENGTH THEN BEGIN
AVGMYCLOSE:=MYCLOSE/LENGTH;//计算跨周期的均线值
MYCLOSE:=0;//计算完毕后归零;
J:=0;//计算完毕后归零;
END
TR : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值

LOTS:=MAX(1,INTPART(FUND/(OPEN*UNIT*0.1)));//计算开仓手数

MACDLINE:= EMA( CLOSE, FASTMA ) - EMA( CLOSE, FASTMA*2 ) ; //计算MACD快线
SIGNALLINE:= EMA( MACDLINE, FASTMA*4 );            //计算MACD慢线               
AATR:=MA(TR,FASTMA*2);                      //计算ATR波动率                  
ZEROLINE:=0;                      //零轴                                 

CON1:= CROSS(SIGNALLINE,ZEROLINE);              //慢线上穿零轴                 
 
IF  CON1  THEN BEGIN //当慢线上穿零轴时候,定义为多头趋势
UPTREND:=1;
DNTREND:=0;
SIGNALFLAG:=0;
SELLSETUP:=0;
END

CON2:= CROSS(ZEROLINE,SIGNALLINE);                                 //慢线下穿零轴
IF CON2  THEN BEGIN     //当慢线下穿零轴时候,定义为空头趋势
DNTREND:=1;
SIGNALFLAG:=0;
UPTREND:=0;
BUYSETUP:=0;
END 
IF DNTREND = 1 THEN BEGIN 
IF SIGNALFLAG = 0 THEN BEGIN         //空头趋势时记录当前最低价以及设置入场条件
SELLSETUP:= 1;
END
END 
IF UPTREND = 1 THEN BEGIN //多头趋势时记录当前最低价以及设置入场条件
IF SIGNALFLAG = 0 THEN BEGIN
BUYSETUP:= 1;
END
END

IF REF(SELLSETUP,1) = 1 AND REF(SELLSETUP,2) = 0 THEN BEGIN // 满足入场条件设定入场价格以及出场价格
LOWERBAND:= REF(L,1) - (EATRPCNT * REF(AATR,1));
EXITBAND_K:= REF(H,1) + (XATRPCNT * REF(AATR,1));
END
IF REF(BUYSETUP,1) = 1 AND REF(BUYSETUP,2) = 0 THEN BEGIN     // 满足入场条件设定入场价格以及出场价格
UPPERBAND:= REF(H,1) + (EATRPCNT * REF(AATR,1)) ;                
EXITBAND_D:= REF(L,1) - (XATRPCNT * REF(AATR,1)) ;
END
//??????
IF  REF(SELLSETUP,1) = 1 AND SKVOL = 0 AND REF(C,1)<AVGMYCLOSE THEN BEGIN //做空
IF  LOW <= LOWERBAND THEN BEGIN 
1,SK(LOTS);
SELLSETUP:=0;
SIGNALFLAG:=1;
HIGHERAFTERENTRY:=C;
END
END
//??????
IF  REF(BUYSETUP,1) = 1 AND BKVOL = 0 AND REF(C,1)>AVGMYCLOSE THEN BEGIN                           //做多
      IF HIGH >= UPPERBAND THEN BEGIN
1,BK(LOTS);
BUYSETUP:=0;                                        
SIGNALFLAG:=1;
LOWERAFTERENTRY:=C;
END
END


IF SKVOL>0 AND BARSSK > 0 THEN BEGIN   //持有空单时不再满足入场条件
IF HIGH>= EXITBAND_K THEN BEGIN
1,BP(LOTS);
END
END


IF BKVOL>0 AND BARSBK > 0 THEN BEGIN                          //持有多单时不再满足入场条件
IF LOW<= EXITBAND_D THEN BEGIN
1,SP(LOTS);
   
END
END


//------------------------------------------------------------------------------------------------
//记录入场后的最高价和最低价
//------------------------------------------------------------------------------------------------

CLOSELP:=REF(CLOSE,1); 
    IF SKVOL = 1 AND  BKVOL=0 THEN BEGIN
HIGHERAFTERENTRY:=MIN(HIGHERAFTERENTRY,H);
END
IF SKVOL = 1 AND  BKVOL=0 THEN BEGIN
LOWERAFTERENTRY:=LOWERAFTERENTRY;
    END
IF BKVOL =1 AND  SKVOL = 0 THEN BEGIN 
LOWERAFTERENTRY:=MAX(LOWERAFTERENTRY,L);
END 
IF BKVOL =1 AND  SKVOL = 0 THEN BEGIN
HIGHERAFTERENTRY:=HIGHERAFTERENTRY;
END
IF BKVOL > 0 OR SKVOL>0 AND BARPOS>0 THEN BEGIN
HIGHERAFTERENTRY:=MIN(HIGHERAFTERENTRY,REF(HIGH,1));
LOWERAFTERENTRY:=MAX(LOWERAFTERENTRY, REF(L,1));
END
 
  IF  SKVOL=0 AND BKVOL=0 THEN BEGIN  // 自适应参数默认值;
LIQKA:= 1;
END
IF (SKVOL>0 OR BKVOL>0) THEN BEGIN //当有持仓的情况下,LIQKA会随着持仓时间的增加而逐渐减小,即止损止盈幅度乘数的减少。
LIQKA:=LIQKA - 0.1; 
LIQKA:=MAX(LIQKA,0.5);
END

IF BKVOL>0 THEN BEGIN 
 
DLIQPOINT:= LOWERAFTERENTRY - (OPEN*TRS/1000)*LIQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
END

IF SKVOL>0 THEN BEGIN

KLIQPOINT:= HIGHERAFTERENTRY + (OPEN*TRS/1000)*LIQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;

END
//------------------------------------------------------------------------------------------------
//跟踪止损
//------------------------------------------------------------------------------------------------
// 持有多单时 价格下破自适应出场线,平多单
  IF BKVOL >0 AND BARSBK >0   AND C <= DLIQPOINT AND REF(C,1) >= REF(DLIQPOINT,1) AND DLIQPOINT>0 THEN BEGIN
1,SP(BKVOL);
END
// 持有空单时 价格上破自适应出场线,平空单
IF SKVOL >0 AND BARSSK >0  AND C >= KLIQPOINT AND REF(C,1) <= REF(KLIQPOINT,1) AND KLIQPOINT>0 THEN BEGIN
1,BP(SKVOL);
END
TRADE_OTHER('AUTO');
 
技术人员回复
日期:2020-10-20 19:28
参考


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看文件名:新建文本文档.txt


投资者咨询:平仓改成全平 (文华财经)
来源:文华财经  日期:2020-10-20 19:25
  请再帮把下面这个也改成开多少就全平多少,谢谢!
 LENGTH:=300;
MATR:=50;
FUND:=15000;

VAR1 : =MAX(2,INTPART(FUND/(O*UNIT*0.1)));

TR :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,LENGTH);

HH:=HHV(MA(HIGH,LENGTH),LENGTH*2);
LL:=LLV(MA(LOW,LENGTH),LENGTH*2);

BUYPK:=C > REF(HH,1);
SELLPK:=C < REF(LL,1);
SELLS:=C<REF((HH+LL)*0.5,BARSBK);
BUYS:=C>REF((HH+LL)*0.5,BARSSK);
SELLPJ:=C<=HH AND C>BKPRICE+MATR*ATR;
BUYPJ:=C>=LL AND C<SKPRICE-MATR*ATR;

IF BARPOS >LENGTH THEN 
BEGIN
BKVOL=0 AND BUYPK,BPK(VAR1);
SKVOL=0 AND SELLPK,SPK(VAR1);
END

IF BKVOL>0  THEN 
BEGIN
VOLSPJ:=MAX(1,INTPART(BKVOL*0.5));
SELLS,SP(BKVOL);
SELLPJ,SP(VOLSPJ);
END

IF SKVOL>0 THEN 
BEGIN
VOLBPJ:=MAX(1,INTPART(SKVOL*0.5));
BUYS,BP(SKVOL);
BUYPJ,BP(VOLBPJ);
END

DRAWCOLORKLINE(BKVOL=0 AND SKVOL=0,COLORWHITE,0);
DRAWCOLORKLINE(SKVOL>0,COLORGREEN,0);
DRAWCOLORKLINE(BKVOL>0,COLORRED,0);
累计盈亏..MONEYREAL,COLORWHITE,BOLD;
TRADE_OTHER('AUTO');
技术人员回复
日期:2020-10-20 19:53
 参考


 LENGTH:=300;
MATR:=50;
FUND:=15000;

VAR1 : =MAX(2,INTPART(FUND/(O*UNIT*0.1)));

TR :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR:=MA(TR,LENGTH);

HH:=HHV(MA(HIGH,LENGTH),LENGTH*2);
LL:=LLV(MA(LOW,LENGTH),LENGTH*2);

BUYPK:=C > REF(HH,1);
SELLPK:=C < REF(LL,1);
SELLS:=C<REF((HH+LL)*0.5,BARSBK);
BUYS:=C>REF((HH+LL)*0.5,BARSSK);
SELLPJ:=C<=HH AND C>BKPRICE+MATR*ATR;
BUYPJ:=C>=LL AND C<SKPRICE-MATR*ATR;

IF BARPOS >LENGTH THEN 
BEGIN

BKVOL=0 AND BUYPK,BPK(VAR1);

SKVOL=0 AND SELLPK,SPK(VAR1);
END

IF BKVOL>0  THEN 
BEGIN

VOLSPJ:=MAX(1,INTPART(BKVOL*0.5));

SELLS,SP(BKVOL);

SELLPJ,SP(BKVOL);
END

IF SKVOL>0 THEN 
BEGIN

VOLBPJ:=MAX(1,INTPART(SKVOL*0.5));

BUYS,BP(SKVOL);

BUYPJ,BP(SKVOL);
END

DRAWCOLORKLINE(BKVOL=0 AND SKVOL=0,COLORWHITE,0);
DRAWCOLORKLINE(SKVOL>0,COLORGREEN,0);
DRAWCOLORKLINE(BKVOL>0,COLORRED,0);
累计盈亏..MONEYREAL,COLORWHITE,BOLD;
TRADE_OTHER('AUTO');