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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [原创]“序列模式下,平仓信号未出现,却出现另一方向的开仓信号”的解决方法

   

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


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

主题:[原创]“序列模式下,平仓信号未出现,却出现另一方向的开仓信号”的解决方法

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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
[原创]“序列模式下,平仓信号未出现,却出现另一方向的开仓信号”的解决方法  发帖心情 Post By:2011/5/20 22:42:09    Post IP:121.204.186.136[显示全部帖子]

类似的问题之前论坛上好几个人提过,当时只是给你建议,没有具体解决

今天一客户刚好碰到类似情况,故在此给一个解决的示例

 

某投资者的策略:

做多: 仓位为0时,macd  金叉开多,死叉平多(需穿越)

做空:仓位为0时, 慢速KD死叉开空,金叉平空(需穿越)

 

当然,如果是标准版用户,使用逐K线模式,此模型很容易便可实现,但在序列模式下如何实现呢?

如果采用以下代码,则会出现“平仓信号未出现,却出现另一方向的开仓信号”:

diff:=ema(c,12)-ema(c,26);
dea:=ema(diff,9);
RSV:= (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
FASTK:=SMA(RSV,3,1);
K:=SMA(FASTK,3,1);
D:=SMA(K,5,1);

bk:=cross(diff,dea);sp:=cross(dea,diff);
sk:=cross(d,k);bp:=cross(k,d);

enterlong:bk,tfilter;

exitlong:sp,tfilter;

entershort:sk,tfilter;

exitshort:bp,tfilter;

如下图:

图片点击可在新窗口打开查看

 

 

问题出现的原因是 平仓条件成立之前,另一方向的开仓信号就成立了。所以,这里要过滤一下。

方法有多种,可以采用如下思路,这种思路比较有通用性:

diff:=ema(c,12)-ema(c,26);
dea:=ema(diff,9);
RSV:= (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
FASTK:=SMA(RSV,3,1);
K:=SMA(FASTK,3,1);
D:=SMA(K,5,1);

bk:=cross(diff,dea);
sp:=cross(dea,diff);
sk:=cross(d,k);
bp:=cross(k,d);

flagd1:=if(barpos=1,0,if(bk,1,if(sp,0,0)));
flagd:=valuewhen(barpos=1 or bk or sp,flagd1);

flagk1:=if(barpos=1,0,if(sk,-1,if(bp,0,0)));
flagk:=valuewhen(barpos=1 or sk or bp,flagk1);

enterlong:bk and flagk=0,tfilter;//flagk过滤

exitlong:sp,tfilter;

entershort:sk and flagd=0,tfilter;//flagd过滤

exitshort:bp,tfilter;
结果图如下:

图片点击可在新窗口打开查看

[此贴子已经被作者于2011-5-22 21:58:05编辑过]

[本帖被加为精华]
 回到顶部