返回顶部
  • 发帖数1
  • 粉丝0

此人很懒,什么也没有留下

关于MA指标中嵌套的问题

[复制链接]
a515509429Lv.1 显示全部楼层 发表于 2021-9-17 23:50:56 |阅读模式 打印 上一主题 下一主题
唐老师,目前我想写一个关于EMA的指标,大概的策略是这样的:EMA(EMA(CLOSE,6) - EMA(CLOSE,21),10),目前想使用的方法是使用
int  iMA(
   string                            symbol,            // 交易品种名称
   ENUM_TIMEFRAMES      period,            // 周期
   int                                ma_period,         // 平均周期
   int                                ma_shift,          // 平移
   ENUM_MA_METHOD       ma_method,         // 平滑类型
   ENUM_APPLIED_PRICE   applied_price      // 价格或者处理程序类型
   );
这个函数,但是applied_price只能使用ENUM_APPLIED_PRICE中的类型数据 ,怎样添加其他的数值呢,或者使用别的方法呢,初学,还请唐老师指点下,多谢!!
+10
不赞一个?
回复

使用道具 举报

精彩评论1

唐老师Lv.9 显示全部楼层 发表于 2021-9-19 11:39:44
这就涉及更复杂的计算了,可以用下面的这个函数试一下。
先计算差价,再对这个差价进行ma的处理。也就是把差价的数组加到下面函数的第一个参数里。
  1. double iMAOnArrayMQL4(double &array[],
  2.                       int total,
  3.                       int period,
  4.                       int ma_shift,
  5.                       int ma_method,
  6.                       int shift)
  7.   {
  8.    double buf[],arr[];
  9.    if(total==0) total=ArraySize(array);
  10.    if(total>0 && total<=period) return(0);
  11.    if(shift>total-period-ma_shift) return(0);
  12.    switch(ma_method)
  13.      {
  14.       case MODE_SMA :
  15.         {
  16.          total=ArrayCopy(arr,array,0,shift+ma_shift,period);
  17.          if(ArrayResize(buf,total)<0) return(0);
  18.          double sum=0;
  19.          int    i,pos=total-1;
  20.          for(i=1;i<period;i++,pos--)
  21.             sum+=arr[pos];
  22.          while(pos>=0)
  23.            {
  24.             sum+=arr[pos];
  25.             buf[pos]=sum/period;
  26.             sum-=arr[pos+period-1];
  27.             pos--;
  28.            }
  29.          return(buf[0]);
  30.         }
  31.       case MODE_EMA :
  32.         {
  33.          if(ArrayResize(buf,total)<0) return(0);
  34.          double pr=2.0/(period+1);
  35.          int    pos=total-2;
  36.          while(pos>=0)
  37.            {
  38.             if(pos==total-2) buf[pos+1]=array[pos+1];
  39.             buf[pos]=array[pos]*pr+buf[pos+1]*(1-pr);
  40.             pos--;
  41.            }
  42.          return(buf[shift+ma_shift]);
  43.         }
  44.       case MODE_SMMA :
  45.         {
  46.          if(ArrayResize(buf,total)<0) return(0);
  47.          double sum=0;
  48.          int    i,k,pos;
  49.          pos=total-period;
  50.          while(pos>=0)
  51.            {
  52.             if(pos==total-period)
  53.               {
  54.                for(i=0,k=pos;i<period;i++,k++)
  55.                  {
  56.                   sum+=array[k];
  57.                   buf[k]=0;
  58.                  }
  59.               }
  60.             else sum=buf[pos+1]*(period-1)+array[pos];
  61.             buf[pos]=sum/period;
  62.             pos--;
  63.            }
  64.          return(buf[shift+ma_shift]);
  65.         }
  66.       case MODE_LWMA :
  67.         {
  68.          if(ArrayResize(buf,total)<0) return(0);
  69.          double sum=0.0,lsum=0.0;
  70.          double price;
  71.          int    i,weight=0,pos=total-1;
  72.          for(i=1;i<=period;i++,pos--)
  73.            {
  74.             price=array[pos];
  75.             sum+=price*i;
  76.             lsum+=price;
  77.             weight+=i;
  78.            }
  79.          pos++;
  80.          i=pos+period;
  81.          while(pos>=0)
  82.            {
  83.             buf[pos]=sum/weight;
  84.             if(pos==0) break;
  85.             pos--;
  86.             i--;
  87.             price=array[pos];
  88.             sum=sum-lsum+price*period;
  89.             lsum-=array[i];
  90.             lsum+=price;
  91.            }
  92.          return(buf[shift+ma_shift]);
  93.         }
  94.       default: return(0);
  95.      }
  96.    return(0);
  97.   }
复制代码



+10
不赞一个?
要有能够持续稳定盈利的交易策略,再进行实盘交易,建议先用历史数据回测和模拟盘进行仔细验证。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

EA邦和EACTP仅为EA程序化交易软件服务供应商,使用EA工具进行交易,在使用前应该清楚的阅读和浏览软件相关的教程,使用软件是一种自发行为,所引发的一切法律后果,包括用户在使用过程中导致的任何损失均与EA软件开发者无关。
  • 微信

  • 微信公众号

  • 微信视频号

  • Powered by Discuz! X3.5 | Copyright © 2017-2024, Tencent Cloud. | EABANG.COM
  • 和仲科技有限公司| 川公网安备 51019002005489号 | 蜀ICP备17026493号