[PEL] 复制代码 INPUT:dif(10,1,100,1);
VARIABLE:ZS:=0,lastzs:=0;
//每盈利10个点 调整一次止损价位,按照上次盈利10点的位置作为止损价位。比如盈利12点,回撤到10点止损,同理一直盈利到22点,回撤到20点止损
ma10:=ma(c,10);
ma130:=ma(c,130);
//开仓条件 是majc
//平仓条件是masc
majc:=cross(ma10,ma130);
masc:=cross(ma130,ma10);
//减仓条件
减仓条件:all(c>ref(c,1),4);
if majc and holding=0 then
begin
buy(1,3,market);
end
//浮动盈亏的价差
fdyk:if(AVGENTERPRICE<>0,(c-AVGENTERPRICE),0);
dw:=INTPART(fdyk/dif);//表示盈利了几个区间
//仅当盈利大于dif个最小变动价位时候才触发止损初始化
if dw>ref(dw,1) and dw<>0 then
begin
zs:=zs+dif*MINDIFF;//浮动盈亏突破一个区间 zs上移一个档位
end
//减仓
if 减仓条件 and holding>0 then
begin
多减仓:sell(1,1,market);
//减仓对zs位置的改动和浮动盈利对止损位的改动是独立运行的,我减仓后价格上涨,盈利增加,止损位还是会按照逻辑上升
zs:=max(0,zs-dif*MINDIFF);
end
//平仓
if masc and holding>0 then
begin
sell(1,holding,market);
zs:=0;
end
//止损
if c<zs+AVGENTERPRICE and zs<>0 and AVGENTERPRICE<>0 and holding>0 then
begin
多止损:sell(1,holding,market);
zs:=0;
end
止损线:if(zs<>0 and AVGENTERPRICE<>0,zs+AVGENTERPRICE,DRAWNULL);
参考范例,是按照盈利10个点位一个区间,价格跌破区间止损。减仓时候会调整止损线位置。
我这个只是提供一个类似的范例,仅供思路上的参考。 |