使用一开一平的交易,每次开一手。就是说如果已经有持仓了就不再开新仓。
只做日内5分钟周期。
买开:从当天的第二根K线开始,如果价格大于前一根K线的最高价并且距收盘时间大于5分钟即时开多。
卖平:价格低于前一根K线的最低价或者距收盘时间小于1分种即时平仓。
kccd:TODAYBAR>=2 and c>ref(h,1) and time<CLOSETIME(0);
pccd:TODAYBAR>=2 and (c<ref(l,1) or time=CLOSETIME(0));//收盘K上直接触发平仓信号,如果要更精细到收盘前1分钟,你可以直接在论坛搜提前N秒下单的帖子。有现成代码,但是那个只能是固定轮询下使用。
buy(kccd and holding=0,1,market);
sell(pccd and holding>0,holding,market);
提前下单:
http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=9006
算了。你直接用下面整合好的代码吧。
多头为例子,空头得话你改下下单语句就行了。
N:=1;//提前的分钟数
abb:=timetot0(CLOSETIME(0))-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时
abb3:=timetot0(CLOSETIME(0))-timetot0(dynainfo(207)),NODRAW;//当前时间距离收盘K时间
tcd:abb<N*60 and abb>=0 and (not(ISLASTBAR)) or (ISLASTBAR and abb3>=0 and abb3<N*60);
kccd:TODAYBAR>=2 and c>ref(h,1) and time<CLOSETIME(0);
pccd:TODAYBAR>=2 and (c<ref(l,1) or tcd);
buy(kccd and holding=0,1,market);
sell(pccd and holding>0,holding,market);
//以上代码必须固定轮询下运行才能保证收盘前一分钟平仓奏效
我用了上面的代码,在实盘模拟中发现价格在上一个K线的最高价上下摆动时候会反复开多,最多的开了5手仓。有没有文华里的那个指令
AUTOFILTER;感觉模型中加了这个指令就是标准的一开一平。
正常不会这样的啊。而且加载在图表上也的确是一开一平。
你说的反复开仓 是不是指开仓的信号反复闪烁啊?

此主题相关图片如下:11.jpg

附件里是我截图的加载模型后的自动交易记录,您看下,连续开仓。
[此贴子已经被作者于2021/3/23 13:46:58编辑过]
按照你前面文字描述的开平逻辑,你这个条件开平条件的确是很容易满足的啊。出现那么多信号 也是正常的。亦或者 你是要日内只交易一次还是说有次数限制的交易?
我发现原因了,价格大于前一个最高价的时候模型会开仓,但是当前K线最周收盘没有收在前一根的最高价上,如果下一根K线又超过前一根的最高价了,系统会再开一仓。就是说出了信号就开仓,信号消失后再次出现信号还会开仓。不管你有没有持仓。