以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  求助写移动止损代码  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=185150)

--  作者:绍兴老黄
--  发布时间:2021/4/13 9:30:06
--  求助写移动止损代码
想法是这样的:如果close>REF(HHV(HIGH,N),1)  ,则把当前K线后面的那一根K线的止损价,放在当前K线前面的第二个低点的位置(价位)。如果下一个K线(当前K线后的那根)的低点高于当前K线的低点,则止损位置相应提高。如果下一个K线(当前K线后的那根)的低点等于或低于当前K线的低点,则止损位置不作变动。我就是这个移动止损代码不会写,请求老师帮帮我,十分感谢!
--  作者:fly
--  发布时间:2021/4/19 14:08:42
--  
抱歉让您久等了,请您回答以下4个问题
REF(HHV(HIGH,N),1) ; //前N根K线的最高价    

第一问:您的初始止损价原本是前N根K线的最低价吗?

一、收盘价格创历史新高,则止损价向对应向上调整?
close>REF(HHV(HIGH,N),1) ;//当前收盘价,创造前N根K线的历史新高,则下一根K线的止损价就调整

第二问:止损价如何调整呢?-----调整成当前K线前面的第二个低点的位置(价位)?
         这是指前面N根K线的最低价?还是前面N根K线里的,倒数第二个最低价格?

二、本根K线和下一根K线最低价的大小
第三问:下一个K线(当前K线后的那根)的最低价>当前K线的低点,则止损位置相应提高,如何提高,参照第二问
下一个K线(当前K线后的那根)的最低价<=当前K线的低点,止损价保持不变

依据您上面的逻辑,您止损价调整有两个依据:一、收盘价格创历史新高,则止损价向对应向上调整   二、本根K线和下一根K线最低价的大小
第四问:这两个依据的关系是什么样的?
      满足”第一个依据“的同时,也得满足”第二个依据“,的时候,我才调高止损价吗?

--  作者:绍兴老黄
--  发布时间:2021/5/2 23:38:24
--  
回老师第一问:初始止损价是离当前K线最近的第三个低点,然后,收盘价格创历史新高,低点不断上移,则止损价对应向上调整。close>REF(HHV(HIGH,N),1) ;//当前收盘价,创造前N根K线的历史新高,则下一根K线的止损价就相应往上调整。
回老师第二问:止损价调整成当前K线前面N根K线里的,当前K线往前数第三个低点价格。打个比如:郑煤近期的最低点价格为:今天780 ,昨天752 ,前天736 ,前前天 732 。当前K线为今天780,那么当前K线往前数第三低点是前前天732,前前天732价格就是当前K线(今天)的止损价位。
回老师第三问:下一个K线(当前K线后的那根)的最低价>当前K线的低点,则止损位置相应提高,如何提高: 止损位置往上提升一个低点。如果低点是提高的,那么,止损位置始终是在该K线前面的第三个低点。如果下一个K线(当前K线后面的那根)的最低价<=当前K线的低点,止损价保持不变。直至有一个K线的低点向下击穿第三个低点价位——止损离场。
回老师第四问:止损价调整的依据:在上升趋势中,不断抬高的低点是止损的位置,当前K线前面的 第三个低点是当前K线的止损价位,如果下一根K线的低点抬高,那么,止损价位也跟着抬高;如果下一根K线的低点<=当前K线的低点,那么,止损价位保持不变。
前面是价格上升,低点上升过程中的移动止损位置的设置。那么,如果价格下降,高点下降过程中的移动止损位置的设置,和前述同理,以当前K线前面的第三个高点为当前K线的止损价位,高点降低,止损也相应降低;如果下一根K线的高点>=当前K线的高点,那么,止损价位保持不变。
谢谢老师!

--  作者:FireScript
--  发布时间:2021/5/11 14:01:23
--  
还需要明确以下几个问题:
问题1:“初始止损价是离当前K线最近的第三个低点”
这里的初始止损价 是基于开仓K位置定义的吗?在没有满足close>REF(HHV(HIGH,N),1) 之前都是不变的?然后这个第三个低点是指前面三个K当中的最低价,还是单纯值前面第三个K的最低价?

问题2:2楼的以下提问:“一、收盘价格创历史新高,则止损价向对应向上调整   二、本根K线和下一根K线最低价的大小 第四问:这两个依据的关系是什么样的?
这个疑问,你这边没有直接回复啊。你提到了2个调整止损价的策略,但是你没有表述清楚这2个逻辑的关系。


--  作者:绍兴老黄
--  发布时间:2021/5/12 11:35:10
--  
对不起,老师,是我没有说清楚。
我想把顾比倒数线改成两条止损线,一条是多头止损线,一条是空头止损线。上升趋势时,多头止损线跟随上升趋势向上移动(也就是下面顾比倒数线的第三只重要蜡烛线的低点),并画出多头止损线。当上升趋势到达顶端并向下回落时,如果收盘价下穿多头止损线(即下穿第三只重要蜡烛线的低点),即多头趋势结束空头趋势开始,画出空头止损线。空头止损线即下面顾比倒数线的第三只重要蜡烛线的高点。
顾比倒数线:
DISTL:=NEWLBARS(L,1);
DISTH:=NEWHBARS(H,1);
HI20:=REF(HHV(H,20),1);
LO20:=REF(LLV(L,20),1);
GBD1:=REF(L,DISTL);
GBD2:=REF(GBD1,DISTL);
GBD:IF(GBD2>0,MAX(LLV(L,20),GBD2),LLV(L,20));//第三只重要蜡烛线的低点

GBG1:=REF(H,DISTH);
GBG2:=REF(GBG1,DISTH);
GBG:IF(GBG2>0,MIN(HHV(H,20),GBG2),HHV(H,20));//第三只重要蜡烛线的高点

谢谢老师!

--  作者:fly
--  发布时间:2021/5/20 16:08:43
--  
以下为顾比倒数线,多头止损示例。

variable:zs=c,maxhl=c;
//把以上顾比线的代码复制一下
DISTL:=NEWLBARS(L,1);
DISTH:=NEWHBARS(H,1);
HI20:=REF(HHV(H,20),1);
LO20:=REF(LLV(L,20),1);
GBD1:=REF(L,DISTL);
GBD2:=REF(GBD1,DISTL);
GBD:=IF(GBD2>0,MAX(LLV(L,20),GBD2),LLV(L,20));
GBG1:=REF(H,DISTH);
GBG2:=REF(GBG1,DISTH);
GBG:=IF(GBG2>0,MIN(HHV(H,20),GBG2),HHV(H,20));


Sar1:SAR(10,2,20),CIRCLEDOT;

DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  := EMA(DIFF,9);
MACD := 2*(DIFF-DEA);

con1:=any(ref(Sar1>high,1) and Sar1<high,3)=1,linethick0;
con2:=any(cross(diff,dea),3)=1 and diff<5,linethick0;//and abs(diff)<0.6   

//下破移动止损线后离场
if holding>0 and (c<zs) then sell(1,1,limitr,c);

if con1 and con2 and holding=0 then 
begin 
     buy(1,1,limitr,c);
     zs:=gbd;//调用顾比倒数线做为止损
     maxhl:=h;//记录当时的高点
end

if holding>0 and h>maxhl then begin //创新高后,重新定位离场位,以实现浮动止损
 zs:=gbd;
 maxhl:=h;
end

止损线:zs;
[此贴子已经被作者于2021/5/20 16:09:04编辑过]

--  作者:绍兴老黄
--  发布时间:2021/5/21 22:25:53
--  
谢谢老师!