以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  图表程序的执行问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=97887)

--  作者:llcly
--  发布时间:2016/5/26 16:44:09
--  图表程序的执行问题
图片点击可在新窗口打开查看自编了个图表程序:DMA-TRIX-等待-空(详细代码附后)

                         当DMA死叉时,若TRIX已死叉,开空
              
                                               否则等TRIX死叉时开空,如果等待过程中DMA形成金叉,则退出
 
                        当TRIX金叉时,平空

现在的图表程序默认达到开空条件后,就执行开空,然后就等平空条件出现。现在的问题是,在碰到开空条件时,人为干预不开,再次达到开空条件就没有信号了(此时对应前面没有开空的平空还没有达到),看下面的图片应该会比较清楚(不知为什么不能插入自己电脑的图片,也无法复制图片),只好用表格代替了

  1    2 3   4  
数字代表K线

在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); 

图片点击可在新窗口打开查看

--  作者:jinzhe
--  发布时间:2016/5/26 16:52:56
--  
把开空语句里面的holding=0去掉
--  作者:llcly
--  发布时间:2016/5/27 9:29:53
--  
那换成什么变量?直接删除编译通不过。谢谢。
--  作者:llcly
--  发布时间:2016/5/27 9:40:43
--  
开空1:BUYSHORT(HOLDING=0,NUM,MARKET);

换成:

开空1:BUYSHORT(TRIX3<TRML3,NUM,MARKET);

开空2:BUYSHORT(HOLDING=0,NUM,MARKET);

换成:

开空2:BUYSHORT(TRIX3死叉=1,NUM,MARKET);

即把前面的条件再写一遍,这样可以吗?

--  作者:jinzhe
--  发布时间:2016/5/27 9:56:17
--  

也可以,或者只写数字1

buyshort(1,1,market);

这样的

[此贴子已经被作者于2016-5-27 9:56:34编辑过]