分享

[转载]MT4多周期指标写法

 影子蓝蓝天空 2011-11-16

[转载]MT4多周期指标写法

 
定义参数
复制代码
  1. extern int TimeFrame=0;


int init()加入    
复制代码
  1. switch(TimeFrame)
  2.    {
  3.       case 1 : string TimeFrameStr="eriod_M1"; break;
  4.       case 5 : TimeFrameStr="eriod_M5"; break;
  5.       case 15 : TimeFrameStr="eriod_M15"; break;
  6.       case 30 : TimeFrameStr="eriod_M30"; break;
  7.       case 60 : TimeFrameStr="eriod_H1"; break;
  8.       case 240 : TimeFrameStr="eriod_H4"; break;
  9.       case 1440 : TimeFrameStr="eriod_D1"; break;
  10.       case 10080 : TimeFrameStr="eriod_W1"; break;
  11.       case 43200 : TimeFrameStr="eriod_MN1"; break;
  12.       default : TimeFrameStr="Current Timeframe";
  13.    }

主函数加入
复制代码
  1. datetime TimeArray[];
  2. int i,shift,limit,y,counted_bars=IndicatorCounted();
  3. // Plot defined timeframe on to current timeframe
  4. ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
  5. limit=Bars-counted_bars;
  6. for(i=0,y=0;i<limit;i++)
  7. {
  8. if (Time<TimeArray[y]) y++;
  9. //此处加入绘图缓冲,变量y
  10. }

下面是一个例子,多周期MACD指标,回复一下帖子看哈[转载]MT4多周期指标写法

本部分设定了隐藏,您已回复过了,以下是隐藏的内容
复制代码
  1. //+------------------------------------------------------------------+
  2. //| macddzq.mq4 |
  3. //| Air |
  4. //| WWW.CMBRO.COM |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Air"
  7. #property link "WWW.CMBRO.COM"
  8. #property indicator_separate_window
  9. #property indicator_buffers 2
  10. #property indicator_color1 LightSeaGreen
  11. #property indicator_color2 Red
  12. #property indicator_level1 80
  13. #property indicator_level2 20
  14. extern int TimeFrame=0;
  15. extern int FastEMA=12;
  16. extern int SlowEMA=26;
  17. extern int SignalSMA=9;
  18. //---- indicator buffers
  19. double MacdBuffer[];
  20. double SignalBuffer[];
  21. //+------------------------------------------------------------------+
  22. //| Custom indicator initialization function |
  23. //+------------------------------------------------------------------+
  24. int init()
  25. {
  26. //---- indicator line
  27. //---- drawing settings
  28. SetIndexStyle(0,DRAW_HISTOGRAM);
  29. SetIndexStyle(1,DRAW_LINE);
  30. SetIndexDrawBegin(1,SignalSMA);
  31. IndicatorDigits(Digits+1);
  32. //---- indicator buffers mapping
  33. SetIndexBuffer(0,MacdBuffer);
  34. SetIndexBuffer(1,SignalBuffer);
  35. //---- name for DataWindow and indicator subwindow label
  36. switch(TimeFrame)
  37. {
  38. case 1 : string TimeFrameStr="eriod_M1"; break;
  39. case 5 : TimeFrameStr="eriod_M5"; break;
  40. case 15 : TimeFrameStr="eriod_M15"; break;
  41. case 30 : TimeFrameStr="eriod_M30"; break;
  42. case 60 : TimeFrameStr="eriod_H1"; break;
  43. case 240 : TimeFrameStr="eriod_H4"; break;
  44. case 1440 : TimeFrameStr="eriod_D1"; break;
  45. case 10080 : TimeFrameStr="eriod_W1"; break;
  46. case 43200 : TimeFrameStr="eriod_MN1"; break;
  47. default : TimeFrameStr="Current Timeframe";
  48. }
  49. IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+") "+TimeFrameStr);
  50. }
  51. return(0);
  52. int start()
  53. {
  54. datetime TimeArray[];
  55. int i,shift,limit,y,counted_bars=IndicatorCounted();
  56. // Plot defined timeframe on to current timeframe
  57. ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);
  58. limit=Bars-counted_bars;
  59. for(i=0,y=0;i<limit;i++)
  60. {
  61. if (Time<TimeArray[y]) y++;
  62. MacdBuffer=iMACD(NULL,TimeFrame,12,26,9,PRICE_CLOSE,MODE_MAIN,y);
  63. SignalBuffer=iMACD(NULL,TimeFrame,12,26,9,PRICE_CLOSE,MODE_SIGNAL,y);
  64. }
  65. //
  66. return(0);
  67. }
  68. //+------------------------------------------------------------------+


调整参数timeframe即可查看其他周期。例如 timeframe 240 ,就是h4周期

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多