以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请问如果盘中触发分步止盈减仓如何做到只执行一次减仓?忽略多次触发的减仓信号  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=188211)

--  作者:赌与博
--  发布时间:2021/5/10 18:36:23
--  请问如果盘中触发分步止盈减仓如何做到只执行一次减仓?忽略多次触发的减仓信号
老师,您好。

我是用日K的的双均线系统MA10和MA50金叉做多,死叉做空。
如果做多进场后浮盈满足我的止盈条件,我都是盘中触发就止盈减仓的。请教以下三个问题:

1,做多当他回调破20日均线时候盘中第一次触发后立即止盈减仓1/3当前持仓(此时不用清仓离场),请问如何写?
2,当天可能出现几次触发减仓信号,如何才能做到只减仓一次。
3,如果第二天第三天他任然在20日均线附近来回盘整(上穿下破),可能导致多次止盈减仓信号,我又如何才能只减仓第一天的一次仓位,忽略后面的信号反复触发减仓信号。

希望老师帮我解决,非常感谢。


--  作者:FireScript
--  发布时间:2021/5/11 9:20:16
--  
1.

sell(cross(ma(c,20),c),holding/3,market);
sellshort(cross(c,ma(c,20)),holding/3,market);
至于你说的第一次触发,在日线单个K上没什么判断的意义。原因在于相同的下单语句在一个K上只能触发一次下单。

2.不用考虑那么多了。 你日线级别,当日就一个K,单个K上相同的下单语句有且只能触发一次下单。就算信号闪烁,前面只要这个语句下过单了,再触发也不会再下单了。

3.整合1的代码如下:

VARIABLE:mark:=1;//用全局变量标记。减仓后用全局变量纪录值,开仓后再重置全局变量值。

if  cross(ma(c,20),c)and holding>0 and mark then
begin
sell(1,holding/3,market);   
mark:=0;
end

if  cross(c,ma(c,20))and holding>0 and mark then
begin
sellshort(1,holding/3,market);
mark:=0;
end

if 开多条件 and holding=0 then
begin
//...这里写你的开多语句
mark:=1;   
END

if 开空条件 and holding=0 then
begin
//...这里写你的开空语句
mark:=1;   
END