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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 有关优化策略模型的问题

   

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


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

主题:有关优化策略模型的问题

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


加好友 发短信
等级:论坛游侠 帖子:199 积分:0 威望:0 精华:0 注册:2020/11/19 12:28:26
有关优化策略模型的问题  发帖心情 Post By:2020/11/27 13:16:41    Post IP:123.159.197.51[只看该作者]

为了提高程序化运行效率,少占用电脑内存,使用金字塔的自定义数据功能来加强改善跨周期引用指标的效率。


http://www.weistock.com/bbs/dispbbs.asp?boardid=16&Id=74267


我想优化我的策略,能否帮我在策略思路不变的情况下让它最精简呢?

代码如下:
新建MM指标:
M1:MA(C,5);
M2:CLOSE;
M3:MA(C,10);
M4:MA(C,20);

--------------------------------------------------------------
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
MA20:MA(CLOSE,20);
MA30:MA(CLOSE,30);
MA60:MA(CLOSE,60);
MA120:MA(CLOSE,120)COLOR0000FF;


MA1:="MM.M1#WEEK";
MA2:="MM.M2#WEEK";
MA3:="MM.M3#WEEK";//调用周线的均线指标

MAA1:="MM.M1#DAY";
MAA2:="MM.M2#DAY";
MAA3:="MM.M3#DAY";
MAA4:="MM.M4#DAY";//调用日线的均线指标

AA:=MAA2>MAA1 AND MAA2>MAA3 AND MAA2>MAA4;
BB:=MAA2<MAA1 AND MAA2<MAA3 AND MAA2<MAA4;


A:=C>MA(C,5) AND C>MA(C,10) AND C>MA(C,20) ;
B:=C<MA(C,5) AND C<MA(C,10)  AND C<MA(C,20) ;

IF MA2>MA1  AND MA2>MA3 AND A AND AA  THEN BUY(HOLDING=0,35%,MARKET),PERTRADER;
IF  MA2<MA1  AND MA2<MA3 AND B AND BB THEN BUYSHORT(HOLDING=0,35%,MARKET),PERTRADER;

IF C<=MA(C,10)-5*MINDIFF  THEN SELL(HOLDING>0,HOLDING,MARKET);
IF C>=MA(C,10)+5*MINDIFF THEN SELLSHORT(HOLDING<0,HOLDING,MARKET);


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/27 13:31:26    Post IP:58.246.57.26[只看该作者]

 你这里其实不太用的到自定义数据的。

而且你这里采用的跨周期调用已经是比较合理的引用方式了,一般用stkindi函数效率上会低点,这个函数相当于创建了一个运行副本,所以效率低点。

唯一我觉得可以优化的地方是这里:

AA:=MAA2>MAA1 AND MAA2>MAA3 AND MAA2>MAA4;
BB:=MAA2<MAA1 AND MAA2<MAA3 AND MAA2<MAA4;

因为这几个变量(MAA1...MAA4)都是一个周期下的。这个判断完全可以放到上面被调用的那个指标里。然后你只需要调用AA,BB就行了。
MA2>MA1  AND MA2>MA3  这几个也是的。都是一个周期的,在被调用指标里面判断好结果,调用过来即可。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
yzg512999
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:199 积分:0 威望:0 精华:0 注册:2020/11/19 12:28:26
  发帖心情 Post By:2020/11/27 15:29:51    Post IP:223.104.159.235[只看该作者]

你刚才说的引用5周线时可以以用过去四周的周线价格+当前小周期价格计算,来替代直接调用大周期的五日均线。
这样思路是很好,起码回测会接近实际。

但是你看到我还有引用10周线和20日线这些数据,如果都用你说的这思路来修改,
会不会导致软件运行变得非常沉重,占用大量内存呢?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/27 15:35:07    Post IP:58.246.57.26[只看该作者]

 你这里的代码,很难占用那么多资源的。一般占用资源比较多都是 数据量太大,有循环,stkindi使用太多,以及明确有说明计算量大的函数等等。以上几个因素的一个或者多个。

而且就你这里而言,其实没有增加引用的数量。只是把直接调用大周期五日均线换成了调用大周期的四日而已。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
yzg512999
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:199 积分:0 威望:0 精华:0 注册:2020/11/19 12:28:26
  发帖心情 Post By:2020/11/27 15:43:01    Post IP:223.104.159.235[只看该作者]

好的,那那其他引用日线中的5日线,10日线和20日线也这样改变了。


代码是不是ref(c,1)呢

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/27 15:51:31    Post IP:58.246.57.26[只看该作者]

M1:MA(C,4);




MA1:="MM.M1#WEEK";
MA5:(MA1*4+C)/5;//重新计算五周均线。(4周线总和+当前小周期收盘价)/5


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
yzg512999
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:199 积分:0 威望:0 精华:0 注册:2020/11/19 12:28:26
  发帖心情 Post By:2020/11/27 16:13:00    Post IP:223.104.159.235[只看该作者]


MA1:="MM.M1#WEEK";  你这个是4周均线的价格吧,这个均线价格是最近四周(包括本周的收盘价)的收盘价想加除以4得来的。这样还是会把最近那周的收盘价算进去,这样不行吧。


要用(ref(c,4)+ref(c,3)+ref(c,2)+ref(c,1)+小周期的c)/5来得到实时变动的5周线吧??

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/27 16:31:12    Post IP:58.246.57.26[只看该作者]

 不用那么麻烦。

M1:ref(MA(C,4),1);

这里这样就行了。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
yzg512999
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:199 积分:0 威望:0 精华:0 注册:2020/11/19 12:28:26
  发帖心情 Post By:2020/11/27 16:58:34    Post IP:223.104.159.235[只看该作者]

AA:=MAA2>MAA1 AND MAA2>MAA3 AND MAA2>MAA4;
BB:=MAA2<MAA1 AND MAA2<MAA3 AND MAA2<MAA4;

如果把这两个AA和BB当但MM指标里,

那在主策略编辑部里引用他们要怎么写的

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/27 17:02:39    Post IP:58.246.57.26[只看该作者]

 AA:MAA2>MAA1 AND MAA2>MAA3 AND MAA2>MAA4;
BB:MAA2<MAA1 AND MAA2<MAA3 AND MAA2<MAA4;


当前周期下调用:
 AA:="MM. AA#DAY";


命数如织,当如磐石。
 回到顶部
总数 12 1 2 下一页