欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请帮忙看看为什么在走完K线的情况下还会有信号闪烁的情况

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4573人关注过本帖树形打印复制链接

主题:请帮忙看看为什么在走完K线的情况下还会有信号闪烁的情况

帅哥哟,离线,有人找我吗?
大灰狼
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:168 积分:521 威望:0 精华:0 注册:2010/12/22 15:29:42
请帮忙看看为什么在走完K线的情况下还会有信号闪烁的情况  发帖心情 Post By:2012/2/16 19:30:10    Post IP:58.246.57.26[只看该作者]

variable:zs=c,hl=c;
hi20:=ref(hhv(h,20),1);
lo20:=ref(llv(l,20),1);
if holding>0 and l<zs then sell(1,1,limitr,min(o,zs)-mindiff);//止损
if holding<0 and h>zs then sellshort(1,1,limitr,max(o,zs)+mindiff);//止损
if holding>0 and l<lo20 then sell(1,1,limitr,min(o,lo20)-mindiff);//离场
if holding<0 and h>hi20 then sellshort(1,1,limitr,max(o,hi20)+mindiff);//离场
if holding=0 and h>hi20 then begin//开多
 buy(1,1,limitr,max(o,hi20)+mindiff);
 hl:=h;//记录开仓后的最高点
 zs:=enterprice-50*mindiff;//初始止损50个跳动点
end
if holding=0 and l<lo20 then begin//开空
 buyshort(1,1,limitr,min(o,lo20)-mindiff);
 hl:=l;//记录开仓后的最低点
 zs:=enterprice+50*mindiff;//初始止损50个跳动点
end
if holding>0 and h>hl then begin//上移最高点
 hl:=h;
 if hl>enterprice+80*mindiff then zs:=hl-20*mindiff;//满80个点,回落20点为止损位
 else if hl>enterprice+50*mindiff then zs:=hl-30*mindiff;//满50个点,回落30点为止损位
end
if holding<0 and l<hl then begin
 hl:=l;
 if hl<enterprice-80*mindiff then zs:=hl+20*mindiff;//满80个点,反弹20点为止损位
 else if hl<enterprice-50*mindiff then zs:=hl+30*mindiff;//满50个点,反弹30点为止损位
end

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/2/16 20:20:23    Post IP:121.204.186.31[只看该作者]

呵呵,这是我的风格啊

结构清晰,赏心悦目

 

该方法是运用在固定轮询或者高频的。

(K线走完,信号不会闪烁。但下单是按指定价下单,可能过大或者过小)

此外有几个问题,跟楼主探讨一下:

1,离场问题。比如多平, zs 和 lo20 谁先触碰到,要有个判断。如果是先触碰到lo20,却用zs评测,不科学。

2,开多条件和开空条件可能会同时成立,要稍微处理一下

3,别用enterprice, 用全局变量自己记录,速度更快

4,加1个mindiff,太小了。至少要3个才合理啊(评测要求)

5,开仓当根可能就达到50个点的利润。所以,开多时要用“h>=hl ”

完整如下:

variable:zs=0,hl=0,kcj=0;
hi20:=ref(hhv(h,20),1);
lo20:=ref(llv(l,20),1);
if holding>0 and l<max(zs,lo20) then sell(1,1,limitr,min(o,max(zs,lo20))-mindiff);//止损
if holding<0 and h>min(zs,hi20) then sellshort(1,1,limitr,max(o,min(zs,hi20))+mindiff);//止损

if holding=0 and h>hi20 and ref(c,1)>ref(c,20) then begin//开多
 buy(1,1,limitr,max(o,hi20)+mindiff);
 hl:=h;//记录开仓后的最高点
 kcj:=max(o,hi20)+mindiff;
 zs:=kcj-50*mindiff;//初始止损50个跳动点
end
if holding=0 and l<lo20 and ref(c,1)<ref(c,20) then begin//开空
 buyshort(1,1,limitr,min(o,lo20)-mindiff);
 hl:=l;//记录开仓后的最低点
 kcj:=min(o,lo20)-mindiff;
 zs:=kcj+50*mindiff;//初始止损50个跳动点
end
if holding>0 and h>=hl then begin//上移最高点
 hl:=h;
 if hl>kcj+80*mindiff then zs:=hl-20*mindiff;//满80个点,回落20点为止损位
 else if hl>kcj+50*mindiff then zs:=hl-30*mindiff;//满50个点,回落30点为止损位
end
if holding<0 and l<=hl then begin
 hl:=l;
 if hl<kcj-80*mindiff then zs:=hl+20*mindiff;//满80个点,反弹20点为止损位
 else if hl<kcj-50*mindiff then zs:=hl+30*mindiff;//满50个点,反弹30点为止损位
end

 

[此贴子已经被作者于2012-2-16 20:24:16编辑过]

 回到顶部