在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → MT4 K线倒计时(K-TimeLeft.mq4)

MT4 K线倒计时(K-TimeLeft.mq4)

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:4.95KB
  • 下载次数:12
  • 浏览次数:446
  • 发布时间:2021-01-16
  • 实例类别:一般编程问题
  • 发 布 人:Enoch1937
  • 文件格式:.mq4
  • 所需积分:2
 相关标签: 倒计时 mt4 T4 MT

实例介绍

【实例简介】
【实例截图】

【核心代码】

// ------------------------------------------------------------------
//|                                                   K-TimeLeft.mq4 |
//|                                          Copyright 2014,fxMeter. |
//|                            https://www.mql5.com/en/users/fxmeter |
// ------------------------------------------------------------------
//2017-11-13 publish to MQL5.COM code base
//2014-11-15 create
#property copyright "Copyright 2014,fxMeter."
#property link      "https://www.mql5.com/en/users/fxmeter"
#property version   "1.00"
#property strict
#property indicator_chart_window
#define  OBJ_NAME "time_left_label" 
#define  FONT_NAME "Arial"
// ------------------------------------------------------------------
//|                                                                  |
// ------------------------------------------------------------------
enum ENUM_POS_TL
  {
   FOLLOW_PRICE,
   FIXED_POSITION
  };

input color  LabelColor=clrOrangeRed;
input ENUM_POS_TL LabelPosition=1;
// ------------------------------------------------------------------
//| Custom indicator initialization function                         |
// ------------------------------------------------------------------
int OnInit()
  {
//--- indicator buffers mapping  
   EventSetTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
// ------------------------------------------------------------------
//|                                                                  |
// ------------------------------------------------------------------
void OnDeinit(const int reason)
  {
   EventKillTimer();
   if(ObjectFind(0,OBJ_NAME)==0)
      ObjectDelete(0,OBJ_NAME);

  }
// ------------------------------------------------------------------
//| Custom indicator iteration function                              |
// ------------------------------------------------------------------
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[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
// ------------------------------------------------------------------
//| Timer function                                                   |
// ------------------------------------------------------------------
void OnTimer()
  {
//---
   UpdateTimeLeft();
  }
// ------------------------------------------------------------------
//|                                                                  |
// ------------------------------------------------------------------
void UpdateTimeLeft()
  {

   int seconds=0;// the left seconds of the current bar
   int h = 0; //Hour
   int m = 0; //Minute
   int s = 0; //Second  hh:mm:ss   

   datetime time  = iTime(Symbol(),PERIOD_CURRENT,0);
   double   close = iClose(Symbol(),PERIOD_CURRENT,0);

   seconds=PeriodSeconds(PERIOD_CURRENT) -(int)(TimeCurrent()-time);

   h = seconds/3600;
   m = (seconds - h*3600)/60;
   s = (seconds - h*3600 - m*60);

   string text="                        >>> "
                StringFormat("%02d",h) ":"
                StringFormat("%02d",m) ":"
                StringFormat("%02d",s);

   if(LabelPosition==FOLLOW_PRICE)
     {
      if(ObjectFind(0,OBJ_NAME)!=0)
        {
         ObjectCreate(0,OBJ_NAME,OBJ_TEXT,0,time,close _Point);
         ObjectSetString(0,OBJ_NAME,OBJPROP_TEXT,text);
         ObjectSetString(0,OBJ_NAME,OBJPROP_FONT,FONT_NAME);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_COLOR,LabelColor);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_SELECTABLE,false);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_FONTSIZE,12);

        }
      else
        {
         ObjectSetString(0,OBJ_NAME,OBJPROP_TEXT,text);
         ObjectMove(0,OBJ_NAME,0,time,close _Point);
        }
     }
   else if(LabelPosition==FIXED_POSITION)
     {
      if(ObjectFind(0,OBJ_NAME)!=0)
        {
         ObjectCreate(0,OBJ_NAME,OBJ_LABEL,0,0,0);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_CORNER,CORNER_RIGHT_UPPER);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_XDISTANCE,200);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_YDISTANCE,2);
         ObjectSetString(0,OBJ_NAME,OBJPROP_TEXT,text);
         ObjectSetString(0,OBJ_NAME,OBJPROP_FONT,FONT_NAME);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_COLOR,LabelColor);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_SELECTABLE,true);
         ObjectSetInteger(0,OBJ_NAME,OBJPROP_FONTSIZE,12);
        }
      else
         ObjectSetString(0,OBJ_NAME,OBJPROP_TEXT,text);
     }
  }
// ------------------------------------------------------------------



标签: 倒计时 mt4 T4 MT

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警