以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  开仓后若止盈止损,图表无信号,平仓信号未出现前不会有开多信号的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=13769)

--  作者:lcgs005
--  发布时间:2012/8/19 10:39:13
--  开仓后若止盈止损,图表无信号,平仓信号未出现前不会有开多信号的问题

开仓后若止盈止损,图表无信号,平仓信号未出现前不会有开多信号的问题:

 

当使用buy,sell时,开平信号要配对出现的,若开多单后,其后没有平多的记录,后续的开多不会出现,

 

但现在的问题是,若我在开多后,使用止盈发出了平多信号,止盈止损产生的平多信号在图表上显示不出来,若止盈止损后发出一个开多信号,这个信号因为位于正常的平仓信号之前,在图表上不会被显示,所以也不会被执行。


--  作者:lcgs005
--  发布时间:2012/8/19 10:42:21
--  
开多后使用止盈止损图表无信号,则后续开多信号因为位于正常的平多信号之前,无法正常显示,导致无法交易

--  作者:阿火
--  发布时间:2012/8/19 10:55:27
--  

把止盈止损写进模型里不就可以了


--  作者:lcgs005
--  发布时间:2012/8/19 11:16:20
--  
以下是引用阿火在2012-8-19 10:55:27的发言:

把止盈止损写进模型里不就可以了

是写进模型里的,但因为其为未来函数,导致真正止盈止损时它会执行,但不会被显示


--  作者:阿火
--  发布时间:2012/8/19 15:07:37
--  自动连接不能下单
“会执行,不显示?” 代码发出来看看。
--  作者:lcgs005
--  发布时间:2012/8/19 18:13:49
--  
以下是引用阿火在2012-8-19 15:07:37的发言:
“会执行,不显示?” 代码发出来看看。

代码发不过来,提示字数太多,只有加了你Q了,一会你通过后发给你老人家看下


--  作者:lcgs005
--  发布时间:2012/8/19 18:21:03
--  

//发出来了,无论如何调试,始终没有多单信号,不知原因

//基础线
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26),coloryellow;
DEA:=EMA(DIFF,9),colorwhite;
MACD:=2*(DIFF-DEA);
//macd高值合并计算部份
a1:=cross(macd,0);
a11:=sumbars(a1,1);
//a12:=hhvbars(macd,a11);
a13:=macd=hhv(macd,a11);
a14:=backset(a13 ,a11);
a15:=a14=0 and ref(a14,1);
a16:=sumbars(a15,1);
a17:=sumbars(a15,2);
a2:=cross(0,macd);
a21:=sumbars(a2,1);
//a22:=llvbars(macd,a21);
a23:=macd=llv(macd,a21);
a24:=backset(a23 ,a21);
a25:=a24=0 and ref(a24,1);
a26:=sumbars(a25,1);
a27:=sumbars(a25,2);
mhbzt:=a16>a26;
//diff高值合并计算部份
c1:=cross(diff,0);
c11:=sumbars(c1,1);
c12:=hhvbars(diff,c11);
c13:=diff=hhv(diff,c11);
c14:=backset(c13 ,c11);
c15:=c14=0 and ref(c14,1);
c16:=sumbars(c15,1);
c17:=sumbars(c15,2);
c2:=cross(0,diff);
c21:=sumbars(c2,1);
c22:=llvbars(diff,c21);
c23:=diff=llv(diff,c21);
c24:=backset(c23 ,c21);
c25:=c24=0 and ref(c24,1);
c26:=sumbars(c25,1);
c27:=sumbars(c25,2);
dhbzt:=c16>c26;
//当mhbzt下穿0轴时若已盈利,则平仓,否则走完dhbzt后再平仓
ms:=cross(mhbzt,0.5);
mx:=cross(0.5,mhbzt);
ds:=cross(dhbzt,0.5);
dx:=cross(0.5,dhbzt);
//开多单
buy(ms,1,market);
//中间若有盈利则在mx时止盈
sell(mx and holding>0 and openprofit>0,0,market);
//运行到dx无论盈亏平掉多单

sell(dx,1,market);
//开空单
buyshort(mx,1,market);
//当ms时若空单有盈利则空单止盈
sellshort(ms and holding<0 and openprofit>0,0,market);
//运行到ds时无论盈亏平掉空单
sellshort(ds,0,market);

[此贴子已经被作者于2012-8-19 18:25:18编辑过]