以下是我目前的编程方式:
VOL,VOLUMESTICK;
MV1:SMA(VOL,20,1);
MID:MA(CLOSE,26);
TMP2:=STD(CLOSE,26);
TOP:MID+2*TMP2;
BOTTOM:MID-2*TMP2;
DRAWICON(TOP-BOTTOM<200,H,'ICO6');
DRAWICON(CROSS(TOP-BOTTOM,200),H,'ICO1');
DRAWICON(CROSS(TOP-BOTTOM,200),H,'ICO1');
CON:COUNTSIG(BK,4)+COUNTSIG(SK,4);
WZ:REFSIG_PLACE(BK,1);
ZZ:REFSIG_PLACE(SK,1);
(CON=0||WZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),4)&&EXIST(H>TOP,4)&&REF(C>MID,1)&&VOL>MV1&&O>TOP&&L<=TOP,BK(3);
(CON=0||WZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),4)&&EXIST(H>TOP,4)&&REF(C>MID,1)&&VOL>MV1&&O>MID&&O<TOP,BK(3);
//我使用的是exist函数,因为当布林线缩口超过设定值后,布林线上下轨不一定会在当天或者第二天形成突破,交易量也不一定在当天或者接下来的第二天达到标准,所以我给了它们4天的空间,
不使用收盘价模型的原因是:也许当布林线缩口超过设定值的当天,价格成功突破布林线上下轨,交易量也足够大,这时可以立即帮我开到仓。
并且这么写的话当行情出现上涨后盘整再上涨,只要我没有被止损就可以在程序满足要求的情况下重复开仓。
还有这里用到了你推荐过给我的WZ和ZZ,因为我复盘时遇到过信号三天都满足要求结果连续三天开仓的情况,用了你推荐的函数后这个问题就解决了。
(CON=0||ZZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),DURATION)&&EXIST(L<BOTTOM,DURATION)&&REF(C<MID,1)&&VOL>MV1&&O<BOTTOM&&H>=BOTTOM,SK(3);
(CON=0||ZZ>=4)&&EXIST(CROSS(TOP-BOTTOM,GAP),DURATION)&&EXIST(L<BOTTOM,DURATION)&&REF(C<MID,1)&&VOL>MV1&&O<MID&&O>BOTTOM,SK(3);
C>REF(TOP-MID,BARSBK)*4+BKPRICE,SP(BKVOL/3);
C<=MID,SP(BKVOL);
C<-REF(TOP-MID,BARSSK)*4+SKPRICE,BP(SKVOL/3);
C>=MID,BP(SKVOL);
CHECKSIG_MIN(BK,'A',0,'C',0);
CHECKSIG_MIN(SP,'A',0,'C',0);
TRADE_AGAIN(10);
//当盈利达到4倍于这个止损数值的时候,自动平掉3分之1仓位。
我的几个问题是:
1. 请问你觉得这么编写是最能贴合于我的逻辑的方法吗?可以请你帮我再改进一下吗?
2. 这个平仓方式,以做多为例,我只希望当收盘价低于中轨时再帮我平仓,在复盘的时候我遇到一楼的那个截图问题,
A. 成功开多仓之后,第一个绿色箭头显示,我成功的在盈利达到三倍止损时平掉了3分之1仓位,那它之后那几个箭头是啥意思啊?按道理来说盈利达到三倍的时候就只有那第一次,之后这几个箭头为啥显示它也满足模型要求了?在这个例子里我开仓时用的是三手,所以之后这些箭头并没有成功平掉剩下那两手仓位,但是如果我使用的是9手,它们就会不断继续平仓。
B. 这个例子里的最终平仓价格是另一个问题,我本来以为平仓价格会是当天的收盘价(因为只有当收盘价低于布林线中轨时才会成交的啊),但是在这个例子里我的最终平仓价是白色粗横线那个位置,请问这是为啥啊?
C. 这个例子里平仓那天的走势是我最不希望发生的,因为价格曾经跌到过中轨以下800个价位,如果我最终平仓的价格真的是收盘价的话损失实在太惨了,我希望能加一个限定方式进去,当价格低于中轨多少多少的时候帮我平仓,请问如果我想用ATR的话应该怎么编写这个平仓模型呢?例如当价格达到中轨以下1个atr的时候;达到中轨以下2分之1个atr的时候?