EWI9[@8D4KMHRHP.png)
自编了个图表程序:DMA-TRIX-等待-空(详细代码附后)
当DMA死叉时,若TRIX已死叉,开空
否则等TRIX死叉时开空,如果等待过程中DMA形成金叉,则退出
当TRIX金叉时,平空
现在的图表程序默认达到开空条件后,就执行开空,然后就等平空条件出现。现在的问题是,在碰到开空条件时,人为干预不开,再次达到开空条件就没有信号了(此时对应前面没有开空的平空还没有达到),看下面的图片应该会比较清楚(不知为什么不能插入自己电脑的图片,也无法复制图片),只好用表格代替了
在K线1达到开空条件,对应的平空条件在K线4,现在人为干预在1不开空,K线3也达到开空条件,现在该如何使3也发出信号。
程序代码如下
VARIABLE: FLAG1=0;
//DMA二线
DDD:=(MA(CLOSE,S)-MA(CLOSE,P));
AMA:=MA(DDD,M);
//TRIX(N1,M1)线
TR3:= EMA(EMA(EMA(CLOSE,N1),N1),N1);
TRIX3 : (TR3-REF(TR3,1))/REF(TR3,1)*100,LINETHICK0;
TRML3 : MA(TRIX3,M1),LINETHICK0;
DMA金叉 := CROSS(DDD,AMA);
DMA死叉 := CROSS(AMA,DDD);
TRIX3金叉 := CROSS(TRIX3,TRML3);
TRIX3死叉 := CROSS(TRML3,TRIX3);
IF DMA死叉=1 THEN
BEGIN
IF TRIX3<TRML3 THEN
开空1:BUYSHORT(HOLDING=0,NUM,MARKET);
IF TRIX3>TRML3 THEN
FLAG1 :=1;
END;
IF FLAG1=1 THEN
BEGIN
IF DMA金叉=0 THEN
BEGIN
IF TRIX3死叉=1 THEN
BEGIN
开空2:BUYSHORT(HOLDING=0,NUM,MARKET);
FLAG1:=0;
END;
END;
ELSE
FLAG1:=0;
END;
IF TRIX3金叉=1 THEN
平空: SELLSHORT(HOLDING<0,NUM,MARKET);
开空1:BUYSHORT(HOLDING=0,NUM,MARKET);
换成:
开空1:BUYSHORT(TRIX3<TRML3,NUM,MARKET);
开空2:BUYSHORT(HOLDING=0,NUM,MARKET);
换成:
开空2:BUYSHORT(TRIX3死叉=1,NUM,MARKET);
即把前面的条件再写一遍,这样可以吗?
也可以,或者只写数字1
buyshort(1,1,market);
这样的
[此贴子已经被作者于2016-5-27 9:56:34编辑过]