以文本方式查看主题

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

--  作者:*253972059
--  发布时间:2019/12/17 15:42:59
--  请帮忙编写开仓条件的程序,谢谢

 

请帮忙编写开仓条件的程序,谢谢

 

条件1K线涨幅=5%    // 备注:这根K线在条件3中叫“第一根K线”。

条件2在条件1符合后,之后的20天内,再出现一根涨幅>=6%k线 //备注:这根K线在条件3中叫他“第二根K线”。

条件3第二根K线收盘价大于第一根K线最低价


以上三个条件都满足,显示开多信号

 

如下图所示:需要在第二根K线开多


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

--  作者:FireScript
--  发布时间:2019/12/17 15:55:56
--  
 zf:(c-ref(c,1))/ref(c,1);//涨幅。
cd1:zf>=0.05;
cd2:zf>=0.06 and count(cd1,20)>=1;

len:BARSLAST(cd1);
result:cd2 and c>ref(c,len);




--  作者:*253972059
--  发布时间:2019/12/17 16:18:28
--  我把您写的条件 加到我的公式里,怎么什么信号都没有呢,

我把您写的条件  加到我的公式里,怎么什么信号都没有呢,   公式如下


 zf:(c-ref(c,1))/ref(c,1);//涨幅。
cd1:zf>=0.05;
cd2:zf>=0.06 and count(cd1,20)>=1;

len:BARSLAST(cd1);
result:cd2 and c>ref(c,len);
 


m:=10;
MID:=(3*CLOSE+LOW+OPEN+HIGH)/6; 
DDD:=(20*MID+19*REF(MID,1)+18*REF(MID,2)+17*REF(MID,3)+
16*REF(MID,4)+15*REF(MID,5)+14*REF(MID,6)+
13*REF(MID,7)+12*REF(MID,8)+11*REF(MID,9)+
10*REF(MID,10)+9*REF(MID,11)+8*REF(MID,12)+
7*REF(MID,13)+6*REF(MID,14)+5*REF(MID,15)+
4*REF(MID,16)+3*REF(MID,17)+2*REF(MID,18)+REF(MID,20))/210,COLORYELLOW{NODRAW};   //NODRAW  这个代码是不限是该划线

MADDD:=MA(DDD,M),{NODRAW};  //NODRAW  这个代码是不限是该划线;
jc:=cross(DDD,MADDD);
sc:=cross(MADDD,DDD);

if  result then
begin
buy(holding=0,1,market)  ,COLORYELLOW;    //开多语句
end

if sc then
begin
sell(holding>0,holding,market) ,COLORYELLOW;  //平多语句
end


--  作者:FireScript
--  发布时间:2019/12/17 16:31:40
--  
 result 条件不满足。变量都输出在图表上的。将条件宽松点试下。而且这个zf另一个地方也说了,是昨日收盘和今日收盘计算的。哪怕你是一个超长的大阳线 也很可能不满足 zf>0.06

--  作者:*253972059
--  发布时间:2019/12/17 16:53:48
--  东方通,就是符合我们的条件啊 但是也没有开多信号
2019年.12月.9号  的东方通,就是符合我们的条件啊 但是也没有开多信号:如下图    ,你导入公式开一下,公式如下 ,股票代码:300379 
图片点击可在新窗口打开查看此主题相关图片如下:11111111111.png
图片点击可在新窗口打开查看

--  作者:FireScript
--  发布时间:2019/12/17 17:16:50
--  
如果按照 开盘,收盘价计算的涨幅 也只是达到了5%了。没有到6%


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
就算达到了6%  这里还有个条件2需要满足的。

条件2在条件1符合后,之后的20天内,再出现一根涨幅>=6%k线 //备注:这根K线在条件3中叫他“第二根K线”。


你是怎么判断它满足条件的呢?

--  作者:*253972059
--  发布时间:2019/12/17 17:26:18
--  下图圆圈处 显示涨幅已经超过6%了啊
下图圆圈处  显示涨幅已经超过6%了啊  ,已经符合条件了
图片点击可在新窗口打开查看此主题相关图片如下:88888.png
图片点击可在新窗口打开查看

--  作者:FireScript
--  发布时间:2019/12/17 17:30:58
--  
 你的条件3 。你还有个条件3. 你一楼描述的条件3 也要满足才行。你就光看那个涨幅,你不能忽略其他条件的啊。

这个位置目前是前2个都符合,但是第三个条件没能满足。如下图

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

也就是这一句 红色部分没有满足:
result:cd2 and c>ref(c,len);
 

你要不这样,先去掉第三个条件。
也就修改下代码:
result:cd2;
 

[此贴子已经被作者于2019/12/18 9:13:22编辑过]

--  作者:FireScript
--  发布时间:2019/12/18 9:14:41
--  
 现在是这样的:

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

部分开仓位置 是受限于已经有了持仓 还没平仓 没显示开仓信号。比如12月9的位置。

--  作者:FireScript
--  发布时间:2019/12/18 15:11:26
--  
 抱歉,前面理解偏差了。
只需纠正一行代码即可:

len:BARSSINCE2(cd1,20);//获取20周期内第一次 条件满足到现在的位置。

现在效果如下:

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