以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  信号先有平仓后又开仓的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=159310)

--  作者:单刀赴会
--  发布时间:2017/11/8 9:19:56
--  信号先有平仓后又开仓的问题


图片点击可在新窗口打开查看此主题相关图片如下:wqeweqw.png
图片点击可在新窗口打开查看
突破横线限价开仓 收盘跌破均线止损为什么会出现开仓BAR的开盘价平仓 代码如下:

KD:=cross(h,h1) ;          //开多条件
PD:=ref(c,1)<ref(ma1,1);          //平多条件
KK:=cross(l1,l) ;          //开空条件
PK:=ref(c,1)>ref(ma1,1);          //平空条件


平空:SELLSHORT(PK AND HOLDING<0,1,LIMITR,OPEN);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,LIMITR,h1+1*MINDIFF);          //开多信号
平多:SELL(PD AND HOLDING>0,1,LIMITR,OPEN);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,LIMITR,l1-1*MINDIFF);


--  作者:FireScript
--  发布时间:2017/11/8 9:29:48
--  
你的问题是在为什么会出现平仓信号还是这个价格? 我看你代码里平仓是OPEN限价的,如果你说的是平多的信号。 你这个信号其实在任意当前K是稳定的,因为引用的是上一个K的稳定数据,而且开仓条件和平仓条件之间没有互斥的关系。所以这样的话,开仓和平仓信号同时触发也是可能的。
--  作者:单刀赴会
--  发布时间:2017/11/8 9:35:07
--  
代码是首先有突破开多HOLIDING》0后才只能执行平多,但是却显示的是HOLIDING不大于0的时候就有平多信号了。等于就是先有平多信号才有开多信号,代码该怎么样改才能避免这错误? 还有就是我是突破限价开仓 突破的一瞬间有发单信号才发单了但是价格一回抽信号就消失了 这是那里的毛病?
--  作者:FireScript
--  发布时间:2017/11/8 10:12:50
--  

1.这个平仓条件要看当时的holding情况,如果在当前K之前你的holding已经大于0 了。这时候触发平仓是很正常的。你把holding输出下,看看前一个K的位置是不是已经是holding>0了。

 

2.你的第二个问题是信号闪烁吧。举个例子 c>ref(c,1)这种判断条件,当前时刻条件成立,下一秒或者2秒,因为c更新,又不符合了。这其实是很正常的。信号会基于最新的计算结果展示。


--  作者:单刀赴会
--  发布时间:2017/11/8 10:14:20
--  
怎么能价格突破一个价格就发单然后信号又不消失?
--  作者:FireScript
--  发布时间:2017/11/8 10:31:49
--  
以下是引用单刀赴会在2017/11/8 10:14:20的发言:
怎么能价格突破一个价格就发单然后信号又不消失?

 

除非引用稳定的数据,比如上一个K的数据这种。这样信号会稳定。

信号闪烁只能这样处理了。

 


--  作者:单刀赴会
--  发布时间:2017/11/8 10:36:49
--  
我开仓引用的就是上一个稳定的稳定高点 然后价格突破开仓,就是突破的一瞬间有信号,如果价格又下来了就消失。比如 现价大于REF(HHV(H,20),1) 就开仓,怎么写才能才能突破的一瞬间就发单 就算价格收盘又不满足了 信号也不会消失?
--  作者:FireScript
--  发布时间:2017/11/8 10:43:58
--  
c一直变动,倒是当前K的最低价和最高价会稳定很多。 比如h>REF(HHV(H,20),1)  这样,H刷新只会更高,一旦触发,当前K绝对不可能消失。同理l<REF(llV(l,20),1); 这种也是  因为最低价刷新只会刷更低的价格。
--  作者:单刀赴会
--  发布时间:2017/11/8 11:16:15
--  
你把holding输出下,看看前一个K的位置是不是已经是holding>0了。怎么输出?
--  作者:单刀赴会
--  发布时间:2017/11/8 11:24:05
--  

DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  : =EMA(DIFF,9);
MACD1 := 2*(DIFF-DEA), COLORSTICK;
jc:=diff>=dea;
sc:=diff<=dea;
jc1:=BARSLAST(jc) ;
sc1:=BARSLAST(sc);

MA1:MA(C,10);
DIFF :=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  :=EMA(DIFF,9);
MACD :=2*(DIFF-DEA);
n1:sumbars(macd>0 and ref(macd<0,1),1);
n2:sumbars(macd<0 and ref(macd>0,1),1);
l1:ref(llv(low,n2),n1);
h1:ref(hhv(HIGH,n1),n2); 

//PARTLINE(jc1,hh,COLORRED);
//PARTLINE(sc1,ll,COLORGREEN);

KD:=cross(h,h1) and jc ;          //开多条件
PD:=ref(c,1)<ref(ma1,1);          //平多条件
KK:=cross(l1,l) and sc;          //开空条件
PK:=ref(c,1)>ref(ma1,1);          //平空条件


平空:SELLSHORT(PK AND HOLDING<0,1,LIMITR,OPEN);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,LIMITR,h1+1*MINDIFF);          //开多信号
平多:SELL(PD AND HOLDING>0,1,LIMITR,OPEN);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,LIMITR,l1-1*MINDIFF);     //开空信号
你看看我的代码 还是会出现先有平仓偷价的问题

图片点击可在新窗口打开查看此主题相关图片如下:123123123123123.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/11/8 11:24:57编辑过]