实例介绍
【实例截图】
【核心代码】
// ------------------------------------------------------------------
//| 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);
}
}
// ------------------------------------------------------------------
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论