设为首页 收藏本站 切换语言

跨周期指标写法(以均线为例子)  

| 发表于 2022-5-13 05:14:11 | 显示全部楼层 |复制链接
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1

#property indicator_label1  "Ma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2


input bool               AutoMatchTF  = true;
extern ENUM_TIMEFRAMES   TimeFrame    = PERIOD_CURRENT;
input int                MaPeriods    = 12;
input ENUM_MA_METHOD     MaMethod     = MODE_EMA;
input ENUM_APPLIED_PRICE MaPrice      = PRICE_CLOSE;



double         MaBuffer[];

int OnInit()
{
//--- indicator buffers mapping
   SetIndexBuffer(0,MaBuffer);  
   for(int i=0; i<1; i++)
   {
      SetIndexEmptyValue(i,0.0);
      SetIndexDrawBegin(i,MaPeriods);
   }
  
//--- 是否自动匹配周期
   if(AutoMatchTF)
   {
      if(Period()==1)TimeFrame =30;
      else if(Period()==5)TimeFrame =240;
      else if(Period()==15||Period()==30||Period()==60)TimeFrame=PERIOD_D1;
      else if(Period()==240)TimeFrame = PERIOD_W1;
      else if(Period()>=1440)TimeFrame = PERIOD_MN1;
   }
   else
     {
      if(TimeFrame<=Period())TimeFrame=0;
     }


   string name = StringFormat("MA mtf(%s,%s,%d)",StringSubstr(EnumToString(TimeFrame),7), StringSubstr(EnumToString(MaMethod),5),MaPeriods);
   IndicatorShortName(name);
   IndicatorDigits(Digits);


   if(MaPeriods<=0)
   {
      return(INIT_FAILED);
   }


//---
   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//---
   int limit=0;
   if(rates_total<MaPeriods)return(0);
   if(prev_calculated>0) limit = rates_total - prev_calculated +1;
   else if(prev_calculated<=0)limit = rates_total;


   if(TimeFrame==0)
   {
      for(int i=0; i<limit; i++)
      {
         if(i>=rates_total-1-MaPeriods-1)continue;
         MaBuffer = iMA(NULL,0,MaPeriods,0,MaMethod,MaPrice,i);
      }
   }
   else //跨周期
   {
      if(iBars(Symbol(),TimeFrame)<MaPeriods)return(0);
      int max = iBarShift(NULL,0,iTime(NULL,TimeFrame,1));
      limit  = MathMax(limit,max);
      for(int i=0; i<limit; i++)
      {
         if(i>=rates_total-1-MaPeriods-1)continue;        
         int shift =iBarShift(NULL,TimeFrame,time);
         MaBuffer  =iMA(NULL,TimeFrame,MaPeriods,0,MaMethod,MaPrice,shift);
      }
   }


   return(rates_total);
}
//+------------------------------------------------------------------+
举报

评论 使用道具

精彩评论25

nanaliu
CC
| 发表于 2022-5-13 08:29:39 | 显示全部楼层
看看。。感谢分享。。。。
举报

点赞 评论 使用道具

紫竹青荷
CC
| 发表于 2022-5-13 12:06:35 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

不忘初心的远航
D
| 发表于 2022-5-13 13:34:51 | 显示全部楼层
感谢楼主分享,好好学习,天天向上!
举报

点赞 评论 使用道具

qwe11
CCC
| 发表于 2022-5-13 14:24:04 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

daerbushen
DD
| 发表于 2022-5-13 16:16:36 | 显示全部楼层
路过。。看看先。。
举报

点赞 评论 使用道具

davidwu
DDD
| 发表于 2022-5-13 17:12:51 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

zsf888
DD
| 发表于 2022-5-13 20:31:23 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

whl
DD
| 发表于 2022-5-13 20:40:16 | 显示全部楼层
謝謝分享
举报

点赞 评论 使用道具

luo518
C
| 发表于 2022-5-14 12:39:48 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

ssbienhild
DD
| 发表于 2022-5-14 16:28:10 | 显示全部楼层
非常好,感谢分享
举报

点赞 评论 使用道具

wangyang
DD
| 发表于 2022-5-15 21:59:35 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

JOKEEBOSS
DD
| 发表于 2022-5-15 22:06:34 | 显示全部楼层
看看。。感谢分享。。。。
举报

点赞 评论 使用道具

cdebjihong
DDD
| 发表于 2022-5-16 00:12:37 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

零度°
DDD
| 发表于 2022-5-16 15:14:36 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

宝宝
DD
| 发表于 2022-5-16 15:23:32 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

ASKARJAN
DD
| 发表于 2022-5-28 12:21:57 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

t5530407
DD
| 发表于 2022-5-28 19:15:27 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

z1286770153
D
| 发表于 2022-5-29 06:53:45 来自手机 | 显示全部楼层
好像不错的样子
举报

点赞 评论 使用道具

sylb8866
D
| 发表于 2022-5-29 07:00:39 | 显示全部楼层
多谢赐教
举报

点赞 评论 使用道具

12下一页
发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)