以文本方式查看主题

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

--  作者:曹晓东
--  发布时间:2017/1/5 16:06:50
--  交易系统编写

DIFF := EMA(CLOSE,S) - EMA(CLOSE,P),;
partline(diff>ref(diff,1),diff,COLORred),linethick2;
partline(diff<ref(diff,1),diff,colorgreen),linethick2;
DEA  := EMA(DIFF,M),linethick2;
partline(dea>ref(dea,1),dea,COLORred),linethick2;
partline(dea<ref(dea,1),dea,colorgreen),linethick2;
MACD1 : =2*(DIFF-DEA);
标红:=MACD1>=ref(MACD1,1);
标绿:=MACD1<ref(MACD1,1);

a1:=ma(c,10);
PARTLINE(a1>=ref(a1,1),a1,colorred,2);
PARTLINE(a1<ref(a1,1),a1,colorgreen,2);
a2:=ma(c,22);
PARTLINE(a2>=ref(a2,1),a2,colorred,3);
PARTLINE(a2<ref(a2,1),a2,colorgreen,3);

 


开多:macd1第一次大于零,且a1>=ref(a1,1) and a2>=ref(a2,1) and a1>a2 and (a1-a2)/a2<10%a2;开多!!
止损止盈:入场后第一次止损点为macd1第一次大于零所对应的k线的最低点,之后止盈推的时候为每一次第一次标红的k线的最低点。

开空:macd1第一次小于零,且a1<=ref(a1,1) and a2<=ref(a2,1) and a1<a2 and (a2-a1)/a2<10%a2;开空!!
止损止盈:入场后第一次止损点为macd1第一次小于零所对应的k线的最高点,之后止盈推的时候为每一次第一次标绿的k线的最高点。

 

 

按上面的条件帮忙加开多开空和止损止盈。谢谢!

[此贴子已经被作者于2017-1-5 16:08:04编辑过]

--  作者:jinzhe
--  发布时间:2017/1/5 16:12:39
--  

标红的有两条线,以哪一个为准


--  作者:曹晓东
--  发布时间:2017/1/5 16:20:37
--  

标红的是幅图指标。你把下面的这段做幅图指标看一下。就是第一次变红的柱对应的k线为止盈的。

DIFF := EMA(CLOSE,S) - EMA(CLOSE,P),;
partline(diff>ref(diff,1),diff,COLORred),linethick2;
partline(diff<ref(diff,1),diff,colorgreen),linethick2;

DEA  := EMA(DIFF,M),linethick2;
partline(dea>ref(dea,1),dea,COLORred),linethick2;
partline(dea<ref(dea,1),dea,colorgreen),linethick2;

MACD1 := 2*(DIFF-DEA);
标红:=MACD1>=ref(MACD1,1);
标绿:=MACD1<ref(MACD1,1);
STICKLINE(标红,MACD1,0,8,0),COLORred;
STICKLINE(标绿,0,MACD1,8,0),COLORgreen;


--  作者:jinzhe
--  发布时间:2017/1/5 16:28:56
--  

if cross(macd1,0) and holding=0 and a1>=ref(a1,1) and a2>=ref(a2,1) and a1>a2 and (a1-a2)/a2<a2*0.1 then buy(1,1,marketr);

if l<ref(l,enterbars) and holding>0 then sell(1,0,marketr);

if h>valuewhen(cross(MACD1>=ref(MACD1,1),0.5),l) and holding>0 then sell(1,0,marketr);

if cross(0,macd1) and holding=0 and a1<=ref(a1,1) and a2<=ref(a2,1) and a1<a2 and (a2-a1)/a2<a2*0.1 then buyshort(1,1,marketr);

if h>ref(h,enterbars) and holding<0 then sellshort(1,0,marketr);

if l<valuewhen(cross(MACD1<ref(MACD1,1),0.5),h) and holding<0 then sellshort(1,0,marketr);