//开平条件***********************************
平空开多:=MFI>REF(MFI,1) AND H>REF(H,1) AND PDI>MDI AND ADX>9 AND ADX>REF(ADX,1) AND LLV(K,21)<=25;
平多开空:=MFI<REF(MFI,1) AND L<REF(L,1) AND PDI<MDI AND ADX>9 AND ADX>REF(ADX,1) AND HHV(K,21)>=75;
顺势多:=MFI>REF(MFI,1) AND H>REF(H,1) AND ZT1>REF(ZT1,1) AND KD1=1;
顺势空:=MFI<REF(MFI,1) AND L<REF(L,1) AND ZT1<REF(ZT1,1) AND KK1=1;
//调头多:=MFI>MA1 AND H>REF(H,1) AND ZT1>REF(ZT1,1) AND KD2=1;
调头空:=MFI<MA1 AND L<REF(L,1) AND ZT1<REF(ZT1,1) AND (KK2=1 OR KK3=1);
平多1:=L<(ENTERPRICE*0.99)-1;
平多2:=L<REF(DD15,1);
平空1:=H>(ENTERPRICE*1.01)+1;
平空2:=H>REF(GD15,1);
//交易系统***********************************
SELLSHORT(平空1=1 and HOLDING<0,0,MARKETR);
SELLSHORT(平空2=1 and HOLDING<0,0,MARKETR);
SELL(平多1=1 and HOLDING>0,0,MARKETR);
SELL(平多2=1 and HOLDING>0,0,MARKETR);
SELL(平多开空=1 and HOLDING>0, 0,MARKETR),ORDERQUEUE;
BUYSHORT(平多开空=1 and HOLDING=0,ss,MARKETR),ORDERQUEUE;
SELLSHORT(平空开多=1 and HOLDING<0, 0,MARKETR),ORDERQUEUE;
BUY(平空开多=1 and HOLDING=0,ss,MARKETR),ORDERQUEUE;
BUYSHORT(顺势空=1 and HOLDING=0,ss,MARKETR);
BUYSHORT(调头空=1 and HOLDING=0,ss,MARKETR);
BUY(顺势多=1 and HOLDING=0,ss,MARKETR);
我的问题是这样的:
今天系统运行应该达到了"平空1“的条件,但是系统没有任何显示,账户也没平仓,我是实盘操作的,请老师帮助看一下这代码有什么问题么?这个模型我用了挺长时间了,买卖平仓操作也应该有十几次了,以前没出过这样的问题啊。这次不知道为什么
做程序化不要凭感觉,调试输出变量结果,查看是否真的条件满足
调试方法:http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=1246&replyID=&skin=1
“ENTERPRICE”这个函数给出的注释是“上次的开仓价”,但它的实质可能是“上次开仓的那根K线的收盘价”,如果那根K线的上影线或者下影线较长的话,那么这个函数造成的误差就会很大。这个应该是我上面提出的“该平仓时不平仓”的根本原因。这是我验证了很多以往数据所得出的结论,不知道是否正确,如果错了请谅解!
绷起脸来做专家并且随意的去说教提出问题的人,比起仔细的看看代码然后反复的验证得出结论(即使是错误的结论)再去辅导提出问题的人来说,更容易露怯,你说呢?
marketr函数解释有前后两个部分
前半个部分说明了图表上的价格是本周期收盘价,后面说明了实际下单时的情况
而图表交易函数enterprice取到的就是前面的价格
所以说上开仓k线收盘价,就是marketr在图表上的价格,和实际成交价格没有任何关系,这个是由图表的特性决定的,这个的链接里面也有部分说明这个图表和后台程序之间的不同点
http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=29594
回8楼,您说的问题,enterprice这个函数是虚拟的,图表程序化策略整个是基于虚拟的交易信号和虚拟的开平仓价格,在这个前提下,会有您说的问题.
要处理的帖子比较多,技术客服的回答态度上是生硬了些,真心的希望您能谅解.
我仔细的想了想,图表程序化,确实满足不了,取到真实的开仓价
后台程序化是跟实盘紧密联系起来的,您能否考虑一下,将次类的策略转到后台程序化交易--用其序列模式.
如果转的过程中遇到困难,很乐意帮助您这样的学习能力比较强的优质客户