变色均线

| 发表于 2020-8-2 18:45:00 | 显示全部楼层 |复制链接
  1. extern int       MAPeriod=14;
  2. extern int       MAType=1;
  3. //---- buffers
  4. double ExtMapBuffer1[];
  5. double ExtMapBuffer2[];
  6. double ExtMapBuffer3[];
  7. //---- variables
  8. int    MAMode;
  9. string strMAType;
  10. //+------------------------------------------------------------------+
  11. //| Custom indicator initialization function                         |
  12. //+------------------------------------------------------------------+
  13. int init()
  14.   {
  15.    IndicatorBuffers(3);
  16. //---- drawing settings
  17.    SetIndexBuffer(2,ExtMapBuffer1);
  18.    SetIndexBuffer(1,ExtMapBuffer2);
  19.    SetIndexBuffer(0,ExtMapBuffer3);
  20.    SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
  21.    SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
  22.    SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
  23.    switch(MAType)
  24.      {
  25.       case 1: strMAType="EMA"; MAMode=MODE_EMA; break;
  26.       case 2: strMAType="SMMA"; MAMode=MODE_SMMA; break;
  27.       case 3: strMAType="LWMA"; MAMode=MODE_LWMA; break;
  28.       case 4: strMAType="LSMA"; break;
  29.       default: strMAType="SMA"; MAMode=MODE_SMA; break;
  30.      }
  31.    IndicatorShortName( strMAType+ " (" +string(MAPeriod) + ") ");
  32. //---- initialization done
  33.    return(0);
  34.   }
  35. //+------------------------------------------------------------------+
  36. //|                                                                  |
  37. //+------------------------------------------------------------------+
  38. double LSMA(int Rperiod, int shift)
  39.   {
  40.    int i;
  41.    double sum;
  42.    int length;
  43.    double lengthvar;
  44.    double tmp;
  45.    double wt;
  46. //----
  47.    length=Rperiod;
  48. //----
  49.    sum=0;
  50.    for(i=length; i>=1 ;i--)
  51.      {
  52.       lengthvar=length + 1;
  53.       lengthvar/=3;
  54.       tmp=0;
  55.       tmp =(i - lengthvar)*Close[length-i+shift];
  56.       sum+=tmp;
  57.      }
  58.    wt=sum*6/(length*(length+1));
  59. //----
  60.    return(wt);
  61.   }
  62. //+------------------------------------------------------------------+
  63. //|                                                                  |
  64. //+------------------------------------------------------------------+
  65. int start()
  66.   {
  67.    double MA_Cur, MA_Prev;
  68.   
  69.    int counted_bars = IndicatorCounted();
  70.    if(counted_bars < 0)  return(-1);
  71.    if(counted_bars > 0)   counted_bars--;
  72.    int limit = Bars - counted_bars;
  73.    if(counted_bars==0) limit-=1+MAPeriod;
  74.       
  75. //----
  76.    for(int i=limit; i>=0; i--)
  77.      {
  78.       if (MAType==4)
  79.         {
  80.          MA_Cur=LSMA(MAPeriod,i);
  81.          MA_Prev=LSMA(MAPeriod,i+1);
  82.         }
  83.       else
  84.         {
  85.          MA_Cur=iMA(NULL,0,MAPeriod,0,MAMode,PRICE_CLOSE,i);
  86.          MA_Prev=iMA(NULL,0,MAPeriod,0,MAMode,PRICE_CLOSE,i+1);
  87.         }
  88. //---- COLOR CODING
  89.       ExtMapBuffer3[i]=MA_Cur; //red
  90.       ExtMapBuffer2[i]=MA_Cur; //green
  91.       ExtMapBuffer1[i]=MA_Cur; //yellow
  92. //----
  93.       if (MA_Prev > MA_Cur)
  94.         {
  95.          ExtMapBuffer2[i]=EMPTY_VALUE;
  96.         }
  97.       else if (MA_Prev < MA_Cur)
  98.            {
  99.             ExtMapBuffer1[i]=EMPTY_VALUE; //-1 red/greem tight
  100.            }
  101.          else
  102.            {
  103.             ExtMapBuffer1[i]=EMPTY_VALUE;//EMPTY_VALUE;
  104.             ExtMapBuffer2[i]=EMPTY_VALUE;//EMPTY_VALUE;
  105.            }
  106.      }
  107.    return(0);
  108.   }
复制代码
举报

评论 使用道具

精彩评论5

EAHub User Avatar
DDD
| 发表于 2020-8-3 00:43:25 来自手机 | 显示全部楼层
麻烦您把怎么用写出可以吗?我是小白,不知道要那里。谢谢!
举报

点赞 评论 使用道具

EAHub User Avatar
DDD
| 发表于 2020-8-5 18:20:50 | 显示全部楼层
这个出来的图是怎么样的?
举报

点赞 评论 使用道具

EAHub User Avatar
D
| 发表于 2020-8-6 11:08:07 | 显示全部楼层
学习分享
举报

点赞 评论 使用道具

EAHub User Avatar
DDD
 楼主 | 发表于 2020-8-6 11:25:01 | 显示全部楼层
ysgb1688 发表于 2020-8-3 00:43
麻烦您把怎么用写出可以吗?我是小白,不知道要那里。谢谢!

建议你自学点最基础的东西,ABC的问题没法回答
举报

点赞 评论 使用道具

EAHub User Avatar
DDD
| 发表于 2020-9-8 07:06:15 | 显示全部楼层
LSMA的算法上不太明白,能否在详细说明下,
盘面上显示的均线没有变色,不知道说明原因,
@鸿运当归
举报

点赞 评论 使用道具

发新帖
您需要登录后才可以评论 登录 | 立即注册