以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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;