以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  移动止损  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=188481)

--  作者:peak9
--  发布时间:2021/5/26 15:03:54
--  移动止损

移动止损

   老师你好,后台日线周期上运行,在日线当根K线上多次开平仓,请老师帮忙编写谢谢

多头止损1:=开仓历时最高价>=tavgenterpriceex2(\'\',\'\',0)+5*mindiff and 最新价<=tavgenterpriceex2(\'\',\'\',0)-15*mindiff;
多头止损2:=开仓历时最高价>=tavgenterpriceex2(\'\',\'\',0)+10*mindiff and 最新价<=tavgenterpriceex2(\'\',\'\',0)-10*mindiff;
多头止损3:=开仓历时最高价>=tavgenterpriceex2(\'\',\'\',0)+15*mindiff and 最新价<=tavgenterpriceex2(\'\',\'\',0)-5*mindiff;
多头止损4:=开仓历时最高价>=tavgenterpriceex2(\'\',\'\',0)+20*mindiff and 最新价<=tavgenterpriceex2(\'\',\'\',0);

//
空头止损1:=开仓历时最低价<=tavgenterpriceex2(\'\',\'\',1)-5*mindiff and 最新价>=tavgenterpriceex2(\'\',\'\',1)+15*mindiff;
空头止损2:=开仓历时最低价<=tavgenterpriceex2(\'\',\'\',1)-10*mindiff and 最新价>=tavgenterpriceex2(\'\',\'\',1)+10*mindiff;
空头止损3:=开仓历时最低价<=tavgenterpriceex2(\'\',\'\',1)-15*mindiff and 最新价>=tavgenterpriceex2(\'\',\'\',1)+5*mindiff;
空头止损4:=开仓历时最低价<=tavgenterpriceex2(\'\',\'\',1)-20*mindiff and 最新价>=tavgenterpriceex2(\'\',\'\',1);


多头止损平仓:=多头止损1 or 多头止损2 or 多头止损3 or 多头止损4; 
空头止损平仓:=空头止损1 or 空头止损2 or 空头止损3 or 空头止损4;


--  作者:gxx978
--  发布时间:2021/5/26 15:21:31
--  
参考如下范例,但是一条语句在一根K线上只会触发一次,不会重复触发的。

多头止损1:=hhv(h,TENTERBARS)>=tavgenterpriceex2(\'\',\'\',0)+5*mindiff and DYNAINFO(7)<=tavgenterpriceex2(\'\',\'\',0)-15*mindiff;
多头止损2:=hhv(h,TENTERBARS)>=tavgenterpriceex2(\'\',\'\',0)+10*mindiff and DYNAINFO(7)<=tavgenterpriceex2(\'\',\'\',0)-10*mindiff;
多头止损3:=hhv(h,TENTERBARS)>=tavgenterpriceex2(\'\',\'\',0)+15*mindiff and DYNAINFO(7)<=tavgenterpriceex2(\'\',\'\',0)-5*mindiff;
多头止损4:=hhv(h,TENTERBARS)>=tavgenterpriceex2(\'\',\'\',0)+20*mindiff and DYNAINFO(7)<=tavgenterpriceex2(\'\',\'\',0);

空头止损1:=llv(l,TENTERBARS)<=tavgenterpriceex2(\'\',\'\',1)-5*mindiff and DYNAINFO(7)>=tavgenterpriceex2(\'\',\'\',1)+15*mindiff;
空头止损2:=llv(l,TENTERBARS)<=tavgenterpriceex2(\'\',\'\',1)-10*mindiff and DYNAINFO(7)>=tavgenterpriceex2(\'\',\'\',1)+10*mindiff;
空头止损3:=llv(l,TENTERBARS)<=tavgenterpriceex2(\'\',\'\',1)-15*mindiff and DYNAINFO(7)>=tavgenterpriceex2(\'\',\'\',1)+5*mindiff;
空头止损4:=llv(l,TENTERBARS)<=tavgenterpriceex2(\'\',\'\',1)-20*mindiff and DYNAINFO(7)>=tavgenterpriceex2(\'\',\'\',1);

多头止损平仓:=多头止损1 or 多头止损2 or 多头止损3 or 多头止损4; 
空头止损平仓:=空头止损1 or 空头止损2 or 空头止损3 or 空头止损4;

if 多头止损平仓 then 
   tsell(1,tbuyholding(0),mkt);
   
if 空头止损平仓 then 
   tsellshort(1,tsellholding(0),mkt);

--  作者:peak9
--  发布时间:2021/5/26 16:00:00
--  

1.如果在平仓语句中添加允许重复指令这样可以多次平仓吗    tsell(1,tbuyholding(0),mkt),allowrepeat,

 

2. 如果之前有过一次开平仓动作,上一次的最高点大于当次开仓后的最高点,那么用 hhv(h,TENTERBARS) 会有影响吗。


--  作者:FireScript
--  发布时间:2021/5/27 13:18:57
--  
 1.因为你这个是日线级别周期。你这个多个止损条件,最好每个条件写一个平仓语句。不要把条件用or合并在一起。让每个条件独立触发。
类似这样:
tsell(多头止损1,tbuyholding(0),mkt);
tsell(多头止损2,tbuyholding(0),mkt);
....

以此类推。

2.开仓历时最高价”你如果交易的周期是日线,那么这个就需要明确下 。尽管你是日线周期,但是你本意应该是要开仓之后的时间内的最高价吧?比如上午开仓后,距离现在2小时了。那就判断这个2小时内的最高级吧。 上面2楼的写法统计是在日线范围上的一个最高级,比如上次开仓信号是前天的,那么久统计前天到今天  几个日线级别上的最高级。