交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 9882|回复: 34
打印 上一主题 下一主题

[其他] 全周期MACD+kdj,各位合用的拿去用!

[复制链接]

21

主题

1778

积分

1

精华

初级操盘手

金钱
1778 美元
权重
23
跳转到指定楼层
楼主
发表于 2014-4-6 12:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

上图说话
多周期macd代码:

  1. //+------------------------------------------------------------------+
  2. //|                                                     All macd.mq4 |
  3. //|                                                 made by : mladen |
  4. //+------------------------------------------------------------------+
  5. #property copyright   "this is public domain software"
  6. #define indicatorName "All Stochastic"
  7. #property indicator_separate_window
  8. #property  indicator_buffers 4
  9. #property  indicator_color1  DarkGray
  10. #property  indicator_color2  Red
  11. #property  indicator_color3  Green
  12. #property  indicator_color4  Yellow
  13. #property indicator_level1  0
  14. #property indicator_levelcolor DimGray
  15. extern int FastEMA=12;
  16. extern int SlowEMA=26;
  17. extern int SignalSMA=9;
  18. extern string timeFrames           = "M1;M5;M15;M30;H1;H4;D1;W1;MN";
  19. extern int    barsPerTimeFrame     = 50;
  20. extern bool   shiftRight           = False;
  21. extern bool   currentFirst         = False;
  22. extern color  txtColor             = Silver;
  23. extern color  separatorColor       = Red;
  24. int multiple[9]={128,128,64,32,16,8,4,2,1};
  25. double     MacdBuffer0[];
  26. double     MacdBuffer1[];
  27. double     MacdBuffer2[];
  28. double     SignalBuffer[];
  29. string shortName;
  30. string labels[];
  31. int    periods[];
  32. int    Shift;
  33. int init()
  34. {
  35.    if (shiftRight) Shift = 1;      else Shift = 0;
  36.    barsPerTimeFrame= MathMax(barsPerTimeFrame,15);
  37.    shortName = "MACD2线3色("+FastEMA+","+SlowEMA+","+SignalSMA+")";
  38.    IndicatorShortName(shortName);
  39.    SetIndexBuffer(0,MacdBuffer0);
  40.    SetIndexBuffer(1,MacdBuffer1);
  41.    SetIndexBuffer(2,MacdBuffer2);
  42.    SetIndexBuffer(3,SignalBuffer);
  43.    SetIndexStyle(0,DRAW_LINE);
  44.    SetIndexStyle(1,DRAW_HISTOGRAM);
  45.    SetIndexStyle(2,DRAW_HISTOGRAM);
  46.    SetIndexStyle(3,DRAW_LINE);
  47.    SetIndexDrawBegin(3,SignalSMA);
  48.    IndicatorDigits(Digits+1);
  49.    SetIndexShift(0,Shift*(barsPerTimeFrame+1));
  50.    SetIndexShift(1,Shift*(barsPerTimeFrame+1));
  51.    SetIndexShift(2,Shift*(barsPerTimeFrame+1));
  52.    SetIndexShift(3,Shift*(barsPerTimeFrame+1));
  53.    SetIndexLabel(0,"MACD");
  54.    SetIndexLabel(1,"MACD");
  55.    SetIndexLabel(2,"MACD");  
  56.    SetIndexLabel(3,"Signal");
  57.       timeFrames = StringUpperCase(StringTrimLeft(StringTrimRight(timeFrames)));
  58.       if (StringSubstr(timeFrames,StringLen(timeFrames),1) != ";") timeFrames = StringConcatenate(timeFrames,";");
  59.       int s = 0;
  60.       int i = StringFind(timeFrames,";",s);
  61.       int time;
  62.       string current;
  63.       while (i > 0)
  64.         {
  65.            current = StringSubstr(timeFrames,s,i-s);
  66.            time    = stringToTimeFrame(current);
  67.            if (time > 0) {
  68.                  ArrayResize(labels ,ArraySize(labels)+1);
  69.                  ArrayResize(periods,ArraySize(periods)+1);
  70.                  labels[ArraySize(labels)-1] = current;
  71.                  periods[ArraySize(periods)-1] = time; }
  72.            s = i + 1;
  73.            i = StringFind(timeFrames,";",s);
  74.         }
  75.       if(currentFirst)
  76.          for (i=1;i<ArraySize(periods);i++)
  77.          if (Period()==periods[i])
  78.            {
  79.              string tmpLbl = labels[i];
  80.              int    tmpPer = periods[i];
  81.              for (int k=i ;k>0; k--)
  82.                 {
  83.                    labels[k]  = labels[k-1];
  84.                    periods[k] = periods[k-1];
  85.                 }                    
  86.              labels[0]  = tmpLbl;
  87.              periods[0] = tmpPer;
  88.            }
  89.    return(0);
  90. }
  91. int deinit()
  92. {
  93.    for(int l=0;l<ArraySize(periods);l++) {
  94.          ObjectDelete(indicatorName+l);
  95.          ObjectDelete(indicatorName+l+"label");
  96.       }        
  97.    return(0);
  98. }
  99. int start()
  100. {
  101.      string separator;
  102.      int    window=WindowFind(shortName);
  103.      int    k=0;
  104.      for(int p=0; p<ArraySize(periods);p++)
  105.           {
  106.             for(int i=0; i<barsPerTimeFrame;i++,k++)
  107.                 {
  108.                  MacdBuffer0[k] = iMACD(NULL,periods[p],FastEMA,SlowEMA,SignalSMA,0,0,i)*multiple[p];
  109.                  SignalBuffer[k]= iMACD(NULL,periods[p],FastEMA,SlowEMA,SignalSMA,0,1,i)*multiple[p];
  110.                  double temp=(MacdBuffer0[k]-SignalBuffer[k])*1.3;
  111.                  if(temp>=0)  {MacdBuffer1[k]=temp;MacdBuffer2[k]=EMPTY_VALUE;} else {MacdBuffer2[k]=temp;MacdBuffer1[k]=EMPTY_VALUE;}
  112.                 }
  113.             MacdBuffer0[k]  = EMPTY_VALUE;
  114.             SignalBuffer[k] = EMPTY_VALUE;
  115.             MacdBuffer1[k]  = EMPTY_VALUE;
  116.             MacdBuffer2[k]  = EMPTY_VALUE;
  117.             k += 1;
  118.             separator = indicatorName+p;
  119.             if(ObjectFind(separator)==-1)   ObjectCreate(separator,OBJ_TREND,window,0,0);
  120.             ObjectSet(separator,OBJPROP_TIME1,barTime(k-Shift*(barsPerTimeFrame+1)-1));
  121.             ObjectSet(separator,OBJPROP_TIME2,barTime(k-Shift*(barsPerTimeFrame+1)-1));
  122.             ObjectSet(separator,OBJPROP_PRICE1,-0.1);
  123.             ObjectSet(separator,OBJPROP_PRICE2,0.1);
  124.             ObjectSet(separator,OBJPROP_COLOR ,separatorColor);
  125.             ObjectSet(separator,OBJPROP_WIDTH ,2);
  126.             separator = indicatorName+p+"label";
  127.             if(ObjectFind(separator)==-1)   ObjectCreate(separator,OBJ_TEXT,window,0,0);
  128.             ObjectSet(separator,OBJPROP_TIME1,barTime(k-Shift*(barsPerTimeFrame+1)-5));
  129.             ObjectSet(separator,OBJPROP_PRICE1,0);           
  130.             ObjectSetText(separator,labels[p],9,"Arial",txtColor);
  131.          }
  132.      SetIndexDrawBegin(0,Bars-k);
  133.      SetIndexDrawBegin(1,Bars-k);            
  134.      return(0);
  135. }
  136. int barTime(int a)
  137. {
  138.    if(a<0) return(Time[0]+Period()*60*MathAbs(a));
  139.    else  return(Time[a]);  
  140. }
  141. int stringToTimeFrame(string TimeFrame)
  142. {
  143.       int TimeFrameInt=0;
  144.       if (TimeFrame=="M1")  TimeFrameInt=PERIOD_M1;
  145.       if (TimeFrame=="M5")  TimeFrameInt=PERIOD_M5;
  146.       if (TimeFrame=="M15") TimeFrameInt=PERIOD_M15;
  147.       if (TimeFrame=="M30") TimeFrameInt=PERIOD_M30;
  148.       if (TimeFrame=="H1")  TimeFrameInt=PERIOD_H1;
  149.       if (TimeFrame=="H4")  TimeFrameInt=PERIOD_H4;
  150.       if (TimeFrame=="D1")  TimeFrameInt=PERIOD_D1;
  151.       if (TimeFrame=="W1")  TimeFrameInt=PERIOD_W1;
  152.       if (TimeFrame=="MN")  TimeFrameInt=PERIOD_MN1;
  153.       return(TimeFrameInt);
  154. }
  155. string StringUpperCase(string str)
  156. {
  157.    string   s = str;
  158.    int      lenght = StringLen(str) - 1;
  159.    int      char;
  160.    while(lenght >= 0)
  161.    {
  162.          char = StringGetChar(s, lenght);
  163.          if((char > 96 && char < 123) || (char > 223 && char < 256))   s = StringSetChar(s, lenght, char - 32);
  164.          else  if(char > -33 && char < 0)    s = StringSetChar(s, lenght, char + 224);
  165.          lenght--;
  166.    }
  167.    return(s);
  168. }
复制代码

多周期kdj代码:

  1. //+------------------------------------------------------------------+
  2. //|                                               All Stochastic.mq4 |
  3. //|                                                 made by : mladen |
  4. //+------------------------------------------------------------------+
  5. #property copyright   "this is public domain software"
  6. #define indicatorName "All Stochastic"
  7. //
  8. //
  9. //
  10. //
  11. //
  12. #property indicator_separate_window
  13. #property indicator_minimum 0
  14. #property indicator_maximum 100
  15. #property indicator_buffers 2
  16. #property indicator_color1  Gold
  17. #property indicator_color2  Red
  18. #property indicator_style2  STYLE_DOT
  19. #property indicator_level1  20
  20. #property indicator_level3  80
  21. #property indicator_levelcolor DimGray
  22. //---- input parameters
  23. //
  24. //
  25. //
  26. //
  27. //
  28. extern int    Kperiod              = 5;
  29. extern int    Dperiod              = 3;
  30. extern int    Slowing              = 3;
  31. extern int    MAMethod             = 0;
  32. extern int    PriceField           = 0;
  33. extern string __                   = "Chose timeframes (as in periodicity bar)";
  34. extern string timeFrames           = "M1;M5;M15;M30;H1;H4;D1;W1;MN";
  35. extern int    barsPerTimeFrame     = 35;
  36. extern bool   shiftRight           = False;
  37. extern bool   currentFirst         = False;
  38. extern color  txtColor             = Silver;
  39. extern color  separatorColor       = DimGray;
  40. //---- buffers
  41. //
  42. //
  43. //
  44. //
  45. //
  46. double ExtMapBuffer1[];
  47. double ExtMapBuffer2[];
  48. //
  49. //
  50. //
  51. //
  52. //
  53. string shortName;
  54. string labels[];
  55. int    periods[];
  56. int    Shift;
  57. //+------------------------------------------------------------------+
  58. //| Custom indicator initialization function                         |
  59. //+------------------------------------------------------------------+
  60. int init()
  61. {
  62.       if (shiftRight) Shift = 1;
  63.       else            Shift = 0;
  64.             barsPerTimeFrame= MathMax(barsPerTimeFrame,15);     
  65.             shortName = indicatorName+" ("+Kperiod+","+Dperiod+","+Slowing+")";
  66.                         IndicatorShortName(shortName);
  67.       //
  68.       //
  69.       //
  70.       //
  71.       //
  72.          SetIndexBuffer(0,ExtMapBuffer1);
  73.          SetIndexBuffer(1,ExtMapBuffer2);
  74.          SetIndexShift(0,Shift*(barsPerTimeFrame+1));
  75.          SetIndexShift(1,Shift*(barsPerTimeFrame+1));
  76.          SetIndexLabel(0,"Stochastic");
  77.          SetIndexLabel(1,"Signal");     
  78.       //
  79.       //
  80.       //
  81.       //
  82.       //
  83.      
  84.       timeFrames = StringUpperCase(StringTrimLeft(StringTrimRight(timeFrames)));
  85.       if (StringSubstr(timeFrames,StringLen(timeFrames),1) != ";")
  86.                        timeFrames = StringConcatenate(timeFrames,";");
  87.          //
  88.          //
  89.          //
  90.          //
  91.          //                                 
  92.            
  93.          int s = 0;
  94.          int i = StringFind(timeFrames,";",s);
  95.          int time;
  96.          string current;
  97.             while (i > 0)
  98.             {
  99.                current = StringSubstr(timeFrames,s,i-s);
  100.                time    = stringToTimeFrame(current);
  101.                if (time > 0) {
  102.                      ArrayResize(labels ,ArraySize(labels)+1);
  103.                      ArrayResize(periods,ArraySize(periods)+1);
  104.                                  labels[ArraySize(labels)-1] = current;
  105.                                  periods[ArraySize(periods)-1] = time; }
  106.                                  s = i + 1;
  107.                                      i = StringFind(timeFrames,";",s);
  108.             }
  109.      
  110.       //
  111.       //
  112.       //
  113.       //
  114.       //
  115.       if(currentFirst)
  116.          for (i=1;i<ArraySize(periods);i++)
  117.          if (Period()==periods[i])
  118.             {
  119.                string tmpLbl = labels[i];
  120.                int    tmpPer = periods[i];
  121.               
  122.                //
  123.                //
  124.                //
  125.                //
  126.                //
  127.               
  128.                for (int k=i ;k>0; k--) {
  129.                      labels[k]  = labels[k-1];
  130.                      periods[k] = periods[k-1];
  131.                   }                    
  132.                labels[0]  = tmpLbl;
  133.                periods[0] = tmpPer;
  134.             }
  135.    return(0);
  136. }
  137. //+------------------------------------------------------------------+
  138. //| Custom indicator deinitialization function                       |
  139. //+------------------------------------------------------------------+
  140. int deinit()
  141. {
  142.    for(int l=0;l<ArraySize(periods);l++) {
  143.          ObjectDelete(indicatorName+l);
  144.          ObjectDelete(indicatorName+l+"label");
  145.       }        
  146.    return(0);
  147. }
  148. //+------------------------------------------------------------------+
  149. //| Custom indicator iteration function                              |
  150. //+------------------------------------------------------------------+
  151. int start()
  152. {
  153.      string separator;
  154.      int    window=WindowFind(shortName);
  155.      int    k=0;
  156.      //
  157.      //
  158.      //
  159.      //
  160.      //
  161.             
  162.             for(int p=0; p<ArraySize(periods);p++)
  163.                   {
  164.                      for(int i=0; i<barsPerTimeFrame;i++,k++)
  165.                            {
  166.                               ExtMapBuffer1[k] = iStochastic(NULL,periods[p],Kperiod,Dperiod,Slowing,MAMethod,PriceField,0,i);
  167.                               ExtMapBuffer2[k] = iStochastic(NULL,periods[p],Kperiod,Dperiod,Slowing,MAMethod,PriceField,1,i);
  168.                            }
  169.                            ExtMapBuffer1[k] =EMPTY_VALUE;
  170.                            ExtMapBuffer2[k] =EMPTY_VALUE;
  171.                            k += 1;
  172.                           
  173.                            //
  174.                            //
  175.                            //
  176.                            //
  177.                            //
  178.                           
  179.                            separator = indicatorName+p;
  180.                            if(ObjectFind(separator)==-1)
  181.                               ObjectCreate(separator,OBJ_TREND,window,0,0);
  182.                               ObjectSet(separator,OBJPROP_TIME1,barTime(k-Shift*(barsPerTimeFrame+1)-1));
  183.                               ObjectSet(separator,OBJPROP_TIME2,barTime(k-Shift*(barsPerTimeFrame+1)-1));
  184.                               ObjectSet(separator,OBJPROP_PRICE1,  0);
  185.                               ObjectSet(separator,OBJPROP_PRICE2,100);
  186.                               ObjectSet(separator,OBJPROP_COLOR ,separatorColor);
  187.                               ObjectSet(separator,OBJPROP_WIDTH ,2);
  188.                            separator = indicatorName+p+"label";
  189.                            if(ObjectFind(separator)==-1)
  190.                               ObjectCreate(separator,OBJ_TEXT,window,0,0);
  191.                               ObjectSet(separator,OBJPROP_TIME1,barTime(k-Shift*(barsPerTimeFrame+1)-5));
  192.                               ObjectSet(separator,OBJPROP_PRICE1,100);           
  193.                               ObjectSetText(separator,labels[p],9,"Arial",txtColor);
  194.                   }
  195.       //
  196.       //
  197.       //
  198.       //
  199.       //
  200.      
  201.       SetIndexDrawBegin(0,Bars-k);
  202.       SetIndexDrawBegin(1,Bars-k);            
  203.    return(0);
  204. }
  205. //+------------------------------------------------------------------+
  206. //+ Custom functions and procedures                                  +
  207. //+------------------------------------------------------------------+
  208. int barTime(int a)
  209. {
  210.    if(a<0)
  211.          return(Time[0]+Period()*60*MathAbs(a));
  212.    else  return(Time[a]);  
  213. }
  214. //+------------------------------------------------------------------+
  215. //+                                                                  +
  216. //+------------------------------------------------------------------+
  217. //
  218. //
  219. //
  220. //
  221. //
  222. int stringToTimeFrame(string TimeFrame)
  223. {
  224.    int TimeFrameInt=0;
  225.       if (TimeFrame=="M1")  TimeFrameInt=PERIOD_M1;
  226.       if (TimeFrame=="M5")  TimeFrameInt=PERIOD_M5;
  227.       if (TimeFrame=="M15") TimeFrameInt=PERIOD_M15;
  228.       if (TimeFrame=="M30") TimeFrameInt=PERIOD_M30;
  229.       if (TimeFrame=="H1")  TimeFrameInt=PERIOD_H1;
  230.       if (TimeFrame=="H4")  TimeFrameInt=PERIOD_H4;
  231.       if (TimeFrame=="D1")  TimeFrameInt=PERIOD_D1;
  232.       if (TimeFrame=="W1")  TimeFrameInt=PERIOD_W1;
  233.       if (TimeFrame=="MN")  TimeFrameInt=PERIOD_MN1;
  234.    return(TimeFrameInt);
  235. }
  236. //
  237. //
  238. //
  239. //
  240. //
  241. string StringUpperCase(string str)
  242. {
  243.    string   s = str;
  244.    int      lenght = StringLen(str) - 1;
  245.    int      char;
  246.   
  247.    while(lenght >= 0)
  248.       {
  249.          char = StringGetChar(s, lenght);
  250.         
  251.          //
  252.          //
  253.          //
  254.          //
  255.          //
  256.         
  257.          if((char > 96 && char < 123) || (char > 223 && char < 256))
  258.                   s = StringSetChar(s, lenght, char - 32);
  259.           else
  260.               if(char > -33 && char < 0)
  261.                   s = StringSetChar(s, lenght, char + 224);
  262.                  
  263.          //
  264.          //
  265.          //
  266.          //
  267.          //
  268.                                 
  269.          lenght--;
  270.    }
  271.   
  272.    //
  273.    //
  274.    //
  275.    //
  276.    //
  277.   
  278.    return(s);
  279. }
复制代码

amacd.jpg (325.44 KB, 下载次数: 15)

多周期macd

多周期macd

kdj.jpg (422.49 KB, 下载次数: 0)

多周期kdj

多周期kdj

多周期macd.rar

8.75 KB, 下载次数: 123, 下载积分: 金钱 -8

多周期kdj.rar

8.18 KB, 下载次数: 109, 下载积分: 金钱 -8

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 转播转播 分享分享 分享淘帖 支持支持1 保留保留
银币在手,下单无忧!

0

主题

20

积分

0

精华

外汇入门

金钱
20 美元
权重
0
推荐
发表于 2016-11-27 15:30 | 只看该作者
不错啊不错啊
回复 支持 0 反对 1

使用道具 举报

7

主题

258

积分

0

精华

见习操盘手

金钱
258 美元
权重
0
板凳
发表于 2014-4-6 20:32 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

不错,支持下!
万物美好,我在中央

0

主题

60

积分

0

精华

外汇入门

金钱
60 美元
权重
0
地板
发表于 2014-4-7 12:15 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

0

主题

28

积分

0

精华

外汇入门

金钱
28 美元
权重
0
5
发表于 2014-4-7 16:30 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

谢谢分享!

0

主题

28

积分

0

精华

外汇入门

金钱
28 美元
权重
0
6
发表于 2014-4-7 16:30 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

谢谢分享!

0

主题

28

积分

0

精华

外汇入门

金钱
28 美元
权重
0
7
发表于 2014-4-7 16:31 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

谢谢分享!

0

主题

22

积分

0

精华

外汇入门

金钱
22 美元
权重
0
8
发表于 2014-4-8 12:36 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

好东西啊,谢谢!

0

主题

516

积分

0

精华

初级操盘手

金钱
516 美元
权重
0
9
发表于 2014-4-9 22:47 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

大力支持{:soso_e179:}

0

主题

32

积分

0

精华

外汇入门

金钱
32 美元
权重
0
10
发表于 2014-9-24 21:09 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

谢谢分享!

6

主题

1942

积分

0

精华

初级操盘手

金钱
1942 美元
权重
16
11
发表于 2014-9-27 08:35 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

谢谢分享!

1

主题

237

积分

0

精华

见习操盘手

金钱
237 美元
权重
0
12
发表于 2014-10-4 08:59 | 只看该作者
本帖最后由 wccmcd 于 2015-12-4 12:03 编辑

谢谢楼主 分享。是什么好东东啊

0

主题

20

积分

0

精华

外汇入门

金钱
20 美元
权重
0
13
发表于 2015-5-11 11:19 | 只看该作者
漂亮啊。。。

0

主题

34

积分

0

精华

外汇入门

金钱
34 美元
权重
0
14
发表于 2016-1-12 19:05 | 只看该作者
多谢分享!

0

主题

29

积分

0

精华

外汇入门

金钱
29 美元
权重
0
15
发表于 2016-2-5 19:57 | 只看该作者
谢谢楼主,好人啊

0

主题

23

积分

0

精华

外汇入门

金钱
23 美元
权重
0
16
发表于 2016-2-16 13:36 | 只看该作者
这东西我收了!谢谢楼主!

0

主题

23

积分

0

精华

外汇入门

金钱
23 美元
权重
0
17
发表于 2016-3-13 18:44 | 只看该作者
谢谢分享!

0

主题

20

积分

0

精华

外汇入门

金钱
20 美元
权重
0
18
发表于 2016-11-27 15:30 | 只看该作者
不错啊不错啊

0

主题

20

积分

0

精华

外汇入门

金钱
20 美元
权重
0
19
发表于 2016-11-27 16:33 | 只看该作者
试试应该很不错

0

主题

20

积分

0

精华

外汇入门

金钱
20 美元
权重
0
20
发表于 2016-11-27 16:34 | 只看该作者
给个赞,试试看
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
皖ICP备: 2024050410号-2

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表