思路如下:
1、如开多仓,假设已经实现1倍ATR的浮动盈利,则以3天内的最低价加上0.05倍的10日ATR,作为初始止损;
2、开仓第二天,则以3天内的最低价加上0.05*2即0.1倍的10日ATR,作为次日的止损,每持仓多一日,则递增0.05倍的ATR;比如到了第10天,止损已经变成过去3天的最低价加上0.05*10=0.5倍ATR
3、如开空单,跟多单思路相反
多谢!!
//仅供参考
input:M(10,1,300,30);
TR1 : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : MA(TR1,m);
variable:atr1=atr,date1=0;
long:all(c<o,2);
stopprice:hhv(STKINDI('' ,'atr.atr' ,0 ,6 ),3);
if long and holding=0 then
begin
buy(1,1,market);
atr1:=atr;
date1:=date;
end
if holding>0 and atr>atr1*2 then sell(1,0,limit,0.05*datediff(date1,date)*stopprice);
//仅供参考
input:M(10,1,300,30);
TR1 : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : MA(TR1,m);
variable:atr1=atr,date1=0;
long:all(c<o,2);
stopprice:hhv(STKINDI('' ,'atr.atr' ,0 ,6 ),3);
if long and holding=0 then
begin
buy(1,1,market);
atr1:=atr;
date1:=date;
end
if holding>0 and atr>atr1*2 then sell(1,0,limit,0.05*datediff(date1,date)*stopprice);
对不起,也许我表达不是很清楚,以致于不好写程序
我重新表述一遍:
1、多头开仓,硬止损可以通过软件自带的设置一个百分比(如1%),再假设同时经历若干交易日后,浮动收益达到了1倍的ATR(例如10日ATR),这时才开始设置移动止损;
2、这时参照过去3日的最低点,在最低点上加上N*0.05*10日ATR,N为开仓历时天数,主图上画出移动止损线;
3、考虑到移动止损线只能是不断向上,所以,若价格未创新高,则移动止损线走平不动,创出新高后,在上次位置,向上加N1*0.05*10日ATR,N1为上次止损线走平开始,到再创新高所历时交易日(并非开仓点算起);
4、画止损线是为了将来调整参数所用,所以请画出。
有点复杂,有点像海龟法则但不完全像,海龟法则里面也很多繁琐的加仓手法我还没看懂公式
再次多谢!!