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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请高手帮我优化一段代码。

   

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


  共有4864人关注过本帖平板打印复制链接

主题:请高手帮我优化一段代码。

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


加好友 发短信
等级:论坛游侠 帖子:464 积分:932 威望:0 精华:0 注册:2011/8/22 15:37:13
请高手帮我优化一段代码。  发帖心情 Post By:2011/9/6 11:22:23    Post IP:59.63.145.196[只看该作者]

//这是根据自己的想法编写的一段代码,因为刚接触本系统,代码效率非常低,CPU占用很高。请高手指点。谢谢!

 

//如果无法优化,提高硬件配置,是否可以解决问题?

//目前双核的 AMD为 AMD Athlon II x2 250 Processor 3.00Ghz,2.00GB的内存。

//内存占用不大,但2个核的使用都到了50%。


DIFF := EMA(CLOSE,S) - EMA(CLOSE,long);
DEA  := EMA(DIFF,M);
MACD:=DIFF-DEA;

M1_0:=MACD;
M1_1:=REF(MACD,1);
M1_2:=REF(MACD,2);
M1_3:=REF(MACD,3);
M1_4:=REF(MACD,4);
M1_5:=REF(MACD,5);

macd_min5_0:="macd#min5";
macd_min5_1:="macd##min5";
macd_min5_2:="macd###min5";
macd_min5_3:="macd####min5";
macd_min5_4:="macd#####min5";

 

macd_min15_0:="macd#min15";
macd_min15_1:="macd##min15";
macd_min15_2:="macd###min15";
macd_min15_3:="macd####min15";
macd_min15_4:="macd#####min15";

 

macd_min30_0:="macd#min30";
macd_min30_1:="macd##min30";
macd_min30_2:="macd###min30";
macd_min30_3:="macd####min30";
macd_min30_4:="macd#####min30";

macd_min30_5:="macd######min30";
macd_min30_6:="macd#######min30";
macd_min30_7:="macd########min30";
macd_min30_8:="macd#########min30";


macd_day_0:="macd#day";
macd_day_1:="macd##day";
macd_day_2:="macd###day";
macd_day_3:="macd####day";
macd_day_4:="macd#####day";

macd_day_5:="macd######day";
macd_day_6:="macd#######day";
macd_day_7:="macd########day";
macd_day_8:="macd#########day";

 

 

//以上是调不同周期的MACD值。
 

 

TJdt:= M1_0>M1_1 and M1_1<M1_2    and M1_1<M1_3   and M1_1<M1_4    and M1_1<M1_5  
        AND  (         (  macd_min5_0>macd_min5_1 AND macd_min5_1<macd_min5_2  AND macd_min5_1<macd_min5_3  AND macd_min5_1<macd_min5_4   )
                   OR (   macd_min5_0>macd_min5_2 AND macd_min5_1>macd_min5_2  AND macd_min5_2<macd_min5_3  AND macd_min5_2<macd_min5_4    )
                   OR (   macd_min5_0>macd_min5_3 AND macd_min5_1>macd_min5_3  AND macd_min5_2>macd_min5_3  AND macd_min5_3<macd_min5_4    )
                   OR (   macd_min5_0>macd_min5_4 AND macd_min5_1>macd_min5_4  AND macd_min5_2>macd_min5_4  AND macd_min5_3>macd_min5_4   )                  
             ) ; //这条是对 5分钟的MACD 进行大小的比较得出一个逻辑结果。

 

 


DKD_DAYX1:=If( macd_day_1<macd_day_0,50,0);                                           
DKD_DAYX2:=If( macd_day_2>macd_day_1 AND macd_day_1<macd_day_0,60,0);
DKD_DAYX3:=If( macd_day_3>macd_day_2 AND macd_day_2>macd_day_1 AND macd_day_1<macd_day_0,70,0);
DKD_DAYX4:=If( macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2>macd_day_1 AND macd_day_1<macd_day_0,80,0);
DKD_DAYX5:=If( macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2>macd_day_1 AND macd_day_1<macd_day_0,90,0);


DKD_DAYX6:=If( macd_day_6>macd_day_5 AND macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2>macd_day_1 AND macd_day_1<macd_day_0,100,0);


DKD_DAYX7:=If( macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,40,0);
DKD_DAYX8:=If(  macd_day_3>macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,50,0);
DKD_DAYX9:=If( macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,60,0);
DKD_DAYX10:=If(  macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,70,0);


DKD_DAYX11:=If(  macd_day_6>macd_day_5 AND macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,80,0);


DKD_DAYX12:=If(macd_day_7>macd_day_6 AND macd_day_6>macd_day_5 AND macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3>macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,90,0);

 

DKD_DAYX13:=If( macd_day_3<macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,30,0);
DKD_DAYX14:=If(  macd_day_4>macd_day_3 AND macd_day_3<macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,40,0);
DKD_DAYX15:=If( macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3<macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,50,0);


DKD_DAYX16:=If( macd_day_6>macd_day_5 AND macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3<macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,60,0);


DKD_DAYX17:=If(  macd_day_7>macd_day_6 AND macd_day_6>macd_day_5 AND macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3<macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,70,0);


DKD_DAYX18:=If( macd_day_8>macd_day_7 AND macd_day_7>macd_day_6 AND macd_day_6>macd_day_5 AND macd_day_5>macd_day_4 AND macd_day_4>macd_day_3 AND macd_day_3<macd_day_2 AND macd_day_2<macd_day_1 AND macd_day_1<macd_day_0,80,0);

 

//以上的18条,是根据日线的8根MACD线的值,比较相互的大小,给DKD_DAYX??变量赋一定大小的量值,并在下面的一条语句里计算最大的值。这个量值为以后的买入或者卖出提供参考条件。

 

DKD_DAYX:=MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(MAX(DKD_DAYX1,DKD_DAYX2),DKD_DAYX3),DKD_DAYX4),DKD_DAYX5),DKD_DAYX6),DKD_DAYX7),DKD_DAYX8),DKD_DAYX9),DKD_DAYX10),DKD_DAYX11),DKD_DAYX12),DKD_DAYX13),DKD_DAYX14),DKD_DAYX15),DKD_DAYX16),DKD_DAYX17),DKD_DAYX18);

 

//这条是为了计算18个变量的最大值。
 

[此贴子已经被作者于2011-9-6 11:44:59编辑过]

 回到顶部