以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  老师帮我写个策略,谢谢  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=145238)

--  作者:xhbsy007
--  发布时间:2016/12/25 17:29:50
--  老师帮我写个策略,谢谢
老师:请帮我把下面2段代码结合实现图示开仓,谢谢!


//主图策略:

//中间变量
INPUT:X(300,1,1000,1);

X周期高点:ref(hhv(C,X),1),LINEDOT;
X周期低点:ref(LLV(C,X),1),LINEDOT;

手数:=1;

开多平空条件:=CROSS(H,X周期高点)   and holding<=0;
开空平多条件:=CROSS(X周期低点,L)   and holding>=0;


DXX:=IF(OPEN>=X周期高点,open,X周期高点);
KNN:=IF(OPEN<=X周期低点,open,X周期低点); 

//执行下单-------------------------

平空:sellshort(开多平空条件 and holding<0, 手数,limitr,DXX);
平多:sell(开空平多条件 and holding>0,手数,limitr,KNN);

开空:buyshort(开空平多条件 and holding=0,手数,limitr,KNN);
开多:buy(开多平空条件 and holding=0, 手数,limitr,DXX);


//附图

N:=26; N1:=55; M:=13;M1:=9; 

DMZ:=IF((H+L)<=(REF(H,1)+REF(L,1)),0,MAX(ABS(H-REF(H,1)),ABS(L-REF(L,1))));
DMF:=IF((H+L)>=(REF(H,1)+REF(L,1)),0,MAX(ABS(H-REF(H,1)),ABS(L-REF(L,1))));
DIZ:=SUM(DMZ,N)/(SUM(DMZ,N)+SUM(DMF,N));
DIF:=SUM(DMF,N)/(SUM(DMF,N)+SUM(DMZ,N));
DDI:=DIZ-DIF,COLORSTICK;
ADDI:SMA(DDI,N1,M);
AD:MA(ADDI,M1);
DDII:SMA(DDI,9,1),COLORSTICK;

DRAWICON((CROSS(ADDI,AD) AND DDII<0),AD*0.998,4);
DRAWICON((CROSS(AD,ADDI) AND DDII>0),AD*1.002,5);





--  作者:xhbsy007
--  发布时间:2016/12/25 17:36:17
--  
开仓条件见图

图片点击可在新窗口打开查看此主题相关图片如下:截图01.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2016-12-25 17:36:31编辑过]

--  作者:xhbsy007
--  发布时间:2016/12/25 17:37:32
--  
见图


图片点击可在新窗口打开查看此主题相关图片如下:截图02.jpg
图片点击可在新窗口打开查看


--  作者:jinzhe
--  发布时间:2016/12/26 9:43:10
--  
那么原来代码里面的开平仓条件,还要保留吗?
--  作者:xhbsy007
--  发布时间:2016/12/26 20:29:50
--  
老师请看图解
图片点击可在新窗口打开查看此主题相关图片如下:截图01.jpg
图片点击可在新窗口打开查看

--  作者:xhbsy007
--  发布时间:2016/12/26 20:35:51
--  
也就是说:2个图谁先发出开仓信号,另外一个图的开仓方向若一致,就开仓。,,

平仓:2图  只要有任意一个图,有平仓信号发生,就立即平仓。。(不需要2图同方向发生)

--  作者:jinzhe
--  发布时间:2016/12/27 9:14:23
--  
也就是开多开空条件只要加一个DDII大于0还是小于0的条件?
--  作者:xhbsy007
--  发布时间:2016/12/27 22:02:35
--  
老师:我整理了下,您看下:

(1)附图DDII  大于0  ==(死叉后绿色箭头出现后,一直到DDII小于零 的区域==都属于开空有效区域,这时候主图若有开空信号,立即市价开空单);
(2)附图DDII 小于0 ====(金叉红色箭头出现后,一直到DDII大于零的区域==都属于开多有效区域,这时候主图若有开多信号,立即市价开多单);

(3)主图开多信号出现,进入开多有效区域===这时候附图DDII小于零轴金叉红箭头出现,立即市价开多单;
(4)主图开空信号出现,进入开空有效区域===这时候附图DDII大于零轴死叉绿箭头出现,立即市价开空单;

--  作者:xhbsy007
--  发布时间:2016/12/27 22:05:39
--  
老师:我整理了下,您看下:

开仓:
(1)附图DDII  大于0  ==(死叉后绿色箭头出现后,一直到DDII小于零 的区域==都属于开空有效区域,这时候主图若有开空信号,立即市价开空单);
(2)附图DDII 小于0 ====(金叉红色箭头出现后,一直到DDII大于零的区域==都属于开多有效区域,这时候主图若有开多信号,立即市价开多单);

(3)主图开多信号出现,进入开多有效区域===这时候附图DDII小于零轴金叉红箭头出现,立即市价开多单;
(4)主图开空信号出现,进入开空有效区域===这时候附图DDII大于零轴死叉绿箭头出现,立即市价开空单;

平仓:
主图平仓信号出现    OR      开多单后附图出现绿箭头     OR   开空单后附图出现红箭头

--  作者:jinzhe
--  发布时间:2016/12/28 8:52:42
--  
INPUT:X(300,1,1000,1);

X周期高点:ref(hhv(C,X),1),LINEDOT;
X周期低点:ref(LLV(C,X),1),LINEDOT;

手数:=1;

开多平空条件:=CROSS(H,X周期高点)   and holding<=0;
开空平多条件:=CROSS(X周期低点,L)   and holding>=0;


DXX:=IF(OPEN>=X周期高点,open,X周期高点);
KNN:=IF(OPEN<=X周期低点,open,X周期低点); 
DDII:=stkindi(\'\',\'YY.ddii\',0,datatype);

 
//执行下单-------------------------

平空:sellshort((开多平空条件 or ddii>0 ) and holding<0, 手数,limitr,DXX);
平多:sell((开空平多条件 or ddii<0 ) and holding>0,手数,limitr,KNN);

开空:buyshort(开空平多条件 and holding=0 and ddii<0,手数,limitr,KNN);
开多:buy(开多平空条件 and holding=0 and ddii>0, 手数,limitr,DXX);

注意你的幅图策略命名为YY