以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]新手,麻烦老师帮修改下简单的股票公式  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=99523)

--  作者:shineboom
--  发布时间:2016/6/24 8:23:02
--  [求助]新手,麻烦老师帮修改下简单的股票公式

策略的意图是当根K线收盘价大于前10天的最高价则开仓占总资金的10%,开仓以后价格每上涨10%加仓总资金的10%。

当根K线收盘价小于10日最低价则全部平仓。


以下是我自己编写的,但测出来每次开仓、平仓都是间隔10根K线,而且不能实现加仓。麻烦老师帮改改,谢谢



VARIABLE:bprice=0;//记录开仓价

temp:=ref(hhv(h,10),1);//

temp1:=ref(llv(l,10),1);//

if c<temp1 and holding>0 then sell(1,100%,limit,c);//收盘价小于10日最低价全平

 

con:=c>=temp and holding=0;//收盘价大于10日最高价开仓

 

if con then

 

BEGIN

buy(1,asset*0.1,limit,c);

bprice:=c;//记录开仓价

end

 

 

if holding>0 then

begin

buy(holding=1 and c>1.1*bprice,asset*0.1,limit,c);//上涨10%再开一手

buy(holding=2 and c>1.2*bprice,asset*0.1,limit,c);//上涨20%再开一手

buy(holding=3 and c>1.3*bprice,asset*0.1,limit,c);//上涨30%再开一手

buy(holding=4 and c>1.4*bprice,asset*0.1,limit,c);//上涨40%再开一手

buy(holding=5 and c>1.5*bprice,asset*0.1,limit,c);//上涨50%再开一手

buy(holding=6 and c>1.6*bprice,asset*0.1,limit,c);//上涨60%再开一手

end





--  作者:jinzhe
--  发布时间:2016/6/24 9:03:32
--  

VARIABLE:bprice=0;//记录开仓价

temp:=ref(hhv(h,10),1);//

temp1:=ref(llv(l,10),1);//

if c<temp1 and holding>0 then sell(1,100%,limitr,c),pertrader;//收盘价小于10日最低价全平


con:=c>=temp and holding=0;//收盘价大于10日最高价开仓


if con then


BEGIN

buy(1,asset*0.1,limitr,c);

bprice:=c;//记录开仓价

end



if holding>0 then

begin

buy( c>1.1*bprice,10%,limitr,c),pertrader;//上涨10%再开一手

buy(c>1.2*bprice,10%,limitr,c),pertrader;//上涨20%再开一手

buy( c>1.3*bprice,10%,limitr,c),pertrader;//上涨30%再开一手

buy(c>1.4*bprice,10%,limitr,c),pertrader;//上涨40%再开一手

buy( c>1.5*bprice,10%,limitr,c),pertrader;//上涨50%再开一手

buy(c>1.6*bprice,10%,limitr,c),pertrader;//上涨60%再开一手

end


--  作者:shineboom
--  发布时间:2016/6/24 10:20:16
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看老师测出来图片点击可在新窗口打开查看怎么一条K线上会开很多仓?而且一条K线上又是开仓,又是平仓?

--  作者:jinzhe
--  发布时间:2016/6/24 10:30:35
--  


VARIABLE:bprice=0;//记录开仓价

temp:=ref(hhv(h,10),1);//

temp1:=ref(llv(l,10),1);//

if c<temp1 and holding>0 then sell(1,100%,limitr,c),pertrader;//收盘价小于10日最低价全平

 

con:=c>=temp and holding=0;//收盘价大于10日最高价开仓

 

if con then

 

BEGIN

buy(1,10%,limitr,c),pertrader;

bprice:=c;//记录开仓价

end

 


if holding>0 then

begin

buy( c>1.1*bprice,10%,limitr,c),pertrader;//上涨10%再开一手

buy(c>1.2*bprice,10%,limitr,c),pertrader;//上涨20%再开一手

buy( c>1.3*bprice,10%,limitr,c),pertrader;//上涨30%再开一手

buy(c>1.4*bprice,10%,limitr,c),pertrader;//上涨40%再开一手

buy( c>1.5*bprice,10%,limitr,c),pertrader;//上涨50%再开一手

buy(c>1.6*bprice,10%,limitr,c),pertrader;//上涨60%再开一手

end


--  作者:jinzhe
--  发布时间:2016/6/24 10:30:55
--  
一根k线上开很多仓说明k线的close大于开仓价在20%以上
--  作者:shineboom
--  发布时间:2016/6/24 11:28:14
--  
加仓这里还是有点问题,我的本意是价格每上涨10%,加10%,现在系统测出来价格上涨到1.2的时候加了包含上涨到1.1的哪一份仓,上涨到1.3的时候,又把上涨到1.2和1.1的加仓量算进去了,所以出现一根K线上开好几份仓。这个怎么解决呢老师?
--  作者:jinzhe
--  发布时间:2016/6/24 11:29:26
--  
if holding>0 then

begin

buy( c>1.1*bprice and c<1.2*bprice,10%,limitr,c),pertrader;//上涨10%再开一手

buy(c>1.2*bprice and c<1.3*bprice,10%,limitr,c),pertrader;//上涨20%再开一手

buy( c>1.3*bprice and c<1.4*bprice,10%,limitr,c),pertrader;//上涨30%再开一手

buy(c>1.4*bprice and c<1.5*bprice,10%,limitr,c),pertrader;//上涨40%再开一手

buy( c>1.5*bprice and c<1.6*bprice, 10%,limitr,c),pertrader;//上涨50%再开一手

buy(c>1.6*bprice ,10%,limitr,c),pertrader;//上涨60%再开一手

end


--  作者:shineboom
--  发布时间:2016/6/24 13:32:28
--  
不好意思老师,还有一个问题在价格震荡上行中,从1.0到1.1,1.1到1.2,1.2到1.3,......我只加一次仓,而不是上涨回落间反复加仓。期待你的帮助,万分感谢!
--  作者:jinzhe
--  发布时间:2016/6/24 13:43:31
--  

如果直接涨到1.3呢?


--  作者:shineboom
--  发布时间:2016/6/24 13:51:58
--  
也只开一仓。
一般不会吧,一天涨停也就10% ,不会根K线就涨到1.3吧