//这是根据自己的想法编写的一段代码,因为刚接触本系统,代码效率非常低,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个变量的最大值。
代码的目的是取某个周期的最近的几根(比如:8根30分钟的)MACD柱状线的值,对相邻的8根线的长短进行比较。
对第一条,进行了修改,加了一点说明。请高手指点。
如果无法优化,提高硬件配置,是否可以解决问题?
目前双核的 AMD为 AMD Athlon II x2 250 Processor 3.00Ghz,2.00GB的内存。
内存占用不大,但2个核的使用都到了50%。