以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 同一做多信号,多头止损后不再开多单 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=180662) |
-- 作者:qq代人发帖 -- 发布时间:2020/6/18 8:44:33 -- 同一做多信号,多头止损后不再开多单 请教:同一做多信号,多头止损后不再开多单。同一做空信号,空头止损后不再开空单。怎么表达 |
-- 作者:FireScript -- 发布时间:2020/6/18 9:04:51 -- 1.你这个应该描述成多久不再开多,比如10个周期,20个周期或者限定当日日内过滤此信号。否则逻辑上是不完整的。 2.是否是多个开仓条件? [此贴子已经被作者于2020/6/18 9:06:46编辑过]
|
-- 作者:xiexian888 -- 发布时间:2020/6/18 9:19:45 -- 哦,20个周期或者限定当日日内过滤此信号,怎么表达?谢谢 |
-- 作者:xiexian888 -- 发布时间:2020/6/18 9:21:56 -- 过滤信号 20个周期或者限定当日日内过滤此信号。怎么表达?谢谢 |
-- 作者:FireScript -- 发布时间:2020/6/18 10:00:24 -- 没有直接的函数可以做到这个需求,只能用全局变量去标记然后限制。 请参考这个例子: kdj,macd金叉2个开多条件,12个点位止损条件。死叉 是正常平仓条件。 input:n(9,1,100,10),p1(3,2,40,4),p2(3,2,40,4);//参数设置 VARIABLE:mark1:=0,mark2:=0;//定义2个不同的全局变量 //KDJ RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,P1,1); D:=SMA(K,P2,1); J:=3*K-2*D,NODRAW; //MACD input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6); DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P); DEA :=EMA(DIFF,M); MACD1 :=2*(DIFF-DEA), COLORSTICK; macdjc:cross(diff,dea),NODRAW;//macd金叉 macdsc:cross(dea,diff),NODRAW; kdjjc:cross(k,d),NODRAW;//kdj金叉 kdjsc:cross(d,k),NODRAW; if macdjc and holding=0 and mark1=0 then begin kd1:buy(1,1,market); mark1:=1; //开仓时候全局变量设为1 end if kdjjc and holding=0 and mark2=0 then begin kd2:buy(1,1,market); mark2:=1; //开仓时候全局变量设为1 end if holding>0 and macdsc then begin sell(1,holding,market);//KDJ,MACD死叉平仓 mark2:=0; //正常平仓重置为0 end if holding>0 and kdjsc then begin sell(1,holding,market);//KDJ,MACD死叉平仓 mark2:=0; //正常平仓重置为0 end zscd:(ENTERPRICE-c)>=12*MINDIFF;//12个点位止损 if zscd and holding>0 then begin 止损平仓:sell(holding>0,holding,market); if mark1=1 then mark1:=-1;//止损触发的平仓,将全局变量重置为-1,以限制下次开仓 if mark2=1 then mark2:=-1; end if all(mark1=-1,20) then mark1:=0;//超过20周期后 全局变量复原为0 if all(mark2=-1,20) then mark2:=0; |