以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=173675)

--  作者:jcwwy
--  发布时间:2019/12/23 14:41:23
--  求高手编简单程序

请高手帮忙编写一个简单的程序:

最高价大于20日均价*1.03,而且最低价大于等于20日均价,当根K线上没有平多信号(包括多头止损信号),开多仓;

第一次开仓后价格每上涨1%,加一次仓,最多加4次;

最低价小于20日均价,平多仓;

价格比最后一次开多仓价格回落4%多头止损;

 

最低价小于20日均价*0.97,而且最高价小于等于20日均价,当根K线上没有平空信号(包括空头止损信号),开空仓;

第一次开仓后价格每下跌1%,加一次仓,最多加4次;

最高价大于20日均价,平空仓;

价格比最后一次开空仓价格上涨4%空头止损;

 

 

 

非常感谢!

 


--  作者:jcwwy
--  发布时间:2019/12/23 14:52:55
--  
开平仓价全部为出信号就立即发出委托,全部市价委托
--  作者:FireScript
--  发布时间:2019/12/23 15:53:52
--  
 以多头为例:

ma20:ma(c,20);//20日均价


dtzs:(ENTERPRICE-c)/ENTERPRICE>=0.04;//多头止损
dtsell:cross(ma20,c);//平仓条件

止损:sell(dtzs and holding>0,holding,market);
平仓:sell(dtsell and holding>0,holding,market);


dtbuy:cross(c,ma20) and l<ma20;//开仓条件
DRAWICON(dtbuy,h,1);
dtjc:(c-ENTERPRICE)/ENTERPRICE>=0.01;//多头加仓条件

加仓:buy(dtjc and holding>0 and holding<=5 and not(TYPEBAR(1,2)=0),1,market);//多头加仓
开仓:buy(dtbuy and holding=0 and not(TYPEBAR(1,2)=0),1,market);



--  作者:jcwwy
--  发布时间:2019/12/24 10:34:16
--  
谢谢老师,但我要一根K线多信号,老师编的一根K线只有一个信号
--  作者:jcwwy
--  发布时间:2019/12/24 10:41:37
--  
我希望的是只要符合买卖开平各自定义的条件,都要即时发出信号,同一根K线都要发出
--  作者:FireScript
--  发布时间:2019/12/24 10:44:15
--  
你上面不是说平多和开多 不能在一个K嘛。

如果要开仓 加仓能在一个K。
前后顺序调整下即可。

开仓:buy(dtbuy and holding=0 and not(TYPEBAR(1,2)=0),1,market);
加仓:buy(dtjc and holding>0 and holding<=5 and not(TYPEBAR(1,2)=0),1,market);//多头加仓

--  作者:jcwwy
--  发布时间:2019/12/24 11:00:05
--  
我没有说平多开多不能在一根K线上,只是开多的条件是在开多前当根K线上没有平多信号,但开多了以后,当根K线是可以出多头加仓和平多信号的
--  作者:FireScript
--  发布时间:2019/12/24 11:01:19
--  
 意思是不能当前K 先平了又开,但是可以先开了又触发平是吗?

--  作者:jcwwy
--  发布时间:2019/12/24 11:03:45
--  

是的,谢谢老师,麻烦您再帮忙改一下


--  作者:FireScript
--  发布时间:2019/12/24 11:07:26
--  
那就再调整下位置:

ma20:ma(c,20);//20日均价


dtbuy:cross(c,ma20) and l<ma20;//开仓条件
DRAWICON(dtbuy,h,1);
dtjc:(c-ENTERPRICE)/ENTERPRICE>=0.01;//多头加仓条件

加仓:buy(dtjc and holding>0 and holding<=5 ,1,market);//多头加仓
开仓:buy(dtbuy and holding=0 ,1,market);

dtzs:(ENTERPRICE-c)/ENTERPRICE>=0.04;//多头止损
dtsell:cross(ma20,c);//平仓条件

止损:sell(dtzs and holding>0,holding,market);
平仓:sell(dtsell and holding>0,holding,market);