如题,假设图表程序化A运行在15分钟K线上,走完K线模式,最后一次平仓发生在13:45分K上,那么DYNAINFO(217)返回值应该就是134500,想在最后一次平仓后间隔4根K后再来判断开仓条件,请问用DYNAINFO(217)如何写?用其他方法好像容易引起信号闪烁,所以想改成用时间来过滤.
用全局变量记住K线时间,在平仓条件触发的时候进行操作。
VARIABLE:re:=0;
if 平仓条件 then
begin
//平仓语句
re:=time;
end
然后开仓条件里面加一个 当前time和re差值的计算,然后做判断。
用DYNAINFO(217)会闪烁,动态函数用在图表中都会闪烁。
我现在的程序就是用的EXITBARS, 经常闪烁.
@FireScript老师:如果是下午16:45平仓,距当天收盘不到一小时,按要求4根K线以后就到了第二天01:45了,怎么减?0145-1645肯定是不符合的,该如何改?
@FireScript老师:如果是下午16:45平仓,距当天收盘不到一小时,按要求4根K线以后就到了第二天01:45了,怎么减?0145-1645肯定是不符合的,该如何改?
用全局变量记住K线时间,在平仓条件触发的时候进行操作。
VARIABLE:re:=0;
if 平仓条件 then begin //平仓语句 re:=time; end
然后开仓条件里面加一个 当前time和re差值的计算,然后做判断。
用DYNAINFO(217)会闪烁,动态函数用在图表中都会闪烁。
|
1.这是之前用的一个范例:你先看下能否看明白,我这个代码是可以判断指定平仓位置。如果是多个开平仓语句 你得用多个全局变量区分开处理。
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);//参数设置
VARIABLE:mark:=0;
DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;
macdjc:=cross(diff,dea);//macd金叉
macdsc:=cross(dea,diff);
if macdsc and holding>0 then
begin
sell(holding>0,holding,MARKET);
mark:=1;
end
len:BARSLAST(mark=1 and ref(mark=0,1));//上次平仓距离
//平仓至少25个K之后才能开仓。
if macdjc and (len>=25 or mark=0) and holding=0 then //还必须额外处理首次开仓问题,首次开仓之前肯定没有平仓操作的。
begin
buy(holding=0,1,MARKET);
mark:=0;
end
2.EXITBARS 本身不会闪烁。除非你历史开平仓信号本身在闪烁。这个具体要看代码怎么用的了。