Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共2 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:请问如果盘中触发分步止盈减仓如何做到只执行一次减仓?忽略多次触发的减仓信号

1楼
赌与博 发表于:2021/5/10 18:36:23
老师,您好。

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

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

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

2楼
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
共2 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.02300 s, 3 queries.