[MT4指标]TZ-Breaktout高低点指标
主图指标
mt4指标类型:震荡指标
是否能用在mt4手机版上:否
是否含有未来函数:无
TZ-Breaktout高低点指标 利用指标指示出当天的高低点
//+------------------------------------------------------------------+
//| TZ-Breaktout.mq4 |
//| Shimodax |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright Shimodax"
#property link "http://www.strategybuilderfx.com/forums/showthread.php?t=15439"
/*
Introduction:
Draw ranges for "Simple Combined Breakout System for EUR/USD and GBP/USD" thread
(see http://www.strategybuilderfx.com/forums/showthread.php?t=15439)
LocalTimeZone: TimeZone for which MT4 shows your local time,
e.g. 1 or 2 for Europe (GMT+1 or GMT+2 (daylight
savings time). Use zero for no adjustment.
The MetaQuotes demo server uses GMT +2.
Enjoy :-)
Markus
*/
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 LightGray
#property indicator_color4 LightGray
#property indicator_color5 Blue
//----
extern int LocalTimeZone= 2;
extern int DestTimeZone= 6;
extern int PipsForEntry= 5;
//----
double Zone1Upper;
double Zone2Upper;
double Zone1Lower;
double Zone2Lower;
double SignalsBuffer;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Zone1Upper);
SetIndexEmptyValue(0, 0.0);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,Zone1Lower);
SetIndexEmptyValue(1, 0.0);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,Zone2Upper);
SetIndexEmptyValue(2, 0.0);
SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(3,Zone2Lower);
SetIndexEmptyValue(3, 0.0);
SetIndexStyle(4,DRAW_ARROW);
SetIndexArrow(4, 156);
SetIndexBuffer(4, SignalsBuffer);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars= IndicatorCounted(),
lastbar, result;
//----
if (Bars<=100)
return(0);
if (counted_bars>0)
counted_bars--;
//----
lastbar= Bars - counted_bars;
//----
BreakoutRanges(0, lastbar, LocalTimeZone, DestTimeZone);
return(0);
}
//+------------------------------------------------------------------+
//| Compute index of first/last bar of yesterday and today |
//+------------------------------------------------------------------+
int BreakoutRanges(int offset, int lastbar, int tzlocal, int tzdest)
{
int i, j, k,
tzdiff= tzlocal - tzdest,
tzdiffsec= tzdiff*3600,
tidxstart[2]= { 0, 0},
tidxend[2]= { 0, 0 };
double thigh[2]= { 0.0, 0.0 },
tlow[2]= { 99999.9, 99999.9 };
string tfrom[3]= { "04:00", "08:00" , /*rest of day: */ "12:00"},
tto[3]= { "08:00", "12:00", /*rest of day: */ "24:00" },
tday;
bool inperiod= -1;
datetime timet;
// search back for the beginning of the day
tday= TimeToStr(Time[lastbar]-tzdiffsec, TIME_DATE);
for( ;lastbar=offset; i--)
{
timet= Time - tzdiffsec; // time of this bar
//----
string timestr= TimeToStr(timet, TIME_MINUTES), // current time HH:MM
thisday= TimeToStr(timet, TIME_DATE); // current date
// for all three periods (first period, second period, rest of day)
for(j= 0; j<3; j++)
{
if (tfrom[j]<=timestr && timestr0)
{ // now draw high/low back over the recently completed period
for(k= tidxstart[j-1]; k>=tidxend[j-1]; k--)
{
if (j-1==0)
{
Zone1Upper[k]= thigh[j-1];
Zone1Lower[k]= tlow[j-1];
}
if (j-1==1)
{
Zone2Upper[k]= thigh[j-1];
Zone2Lower[k]= tlow[j-1];
}
}
}
inperiod= j; // remember current period
}
if (inperiod==2) // inperiod==2 (end of day) is just to check completion of zone 2
break;
// for the current period find idxstart, idxend and compute high/low
if (tidxstart[j]==0)
{
tidxstart[j]= i;
tday= thisday;
}
tidxend[j]= i;
//----
thigh[j]= MathMax(thigh[j], High);
tlow[j]= MathMin(tlow[j], Low);
}
}
// carry forward the periods for which we have definite high/lows
if (inperiod>=1 && tday==thisday)
{ // first time period completed
Zone1Upper= thigh[0] + PipsForEntry*Point;
Zone1Lower= tlow[0] - PipsForEntry*Point;
//----
if (inperiod>=2)
{ // second period completed
Zone2Upper= thigh[1] + PipsForEntry*Point;
Zone2Lower= tlow[1] - PipsForEntry*Point;
}
}
else
{ // none yet to carry forward (zero to clear old values, e.g. from switching timeframe)
Zone1Upper= 0;
Zone1Lower= 0;
Zone2Upper= 0;
Zone2Lower= 0;
}
// at the beginning of a new day reset everything
if (tday!="XXX" && tday!=thisday)
{
Print("#", i, "new day ", thisday, "/", tday);
//----
tday= "XXX";
//----
inperiod= -1;
//----
for(j= 0; j<2; j++)
{
tidxstart[j]= 0;
tidxend[j]= 0;
thigh[j]= 0;
tlow[j]= 99999;
}
}
}
return(0);
}
//+------------------------------------------------------------------+Hans%20Indicator4.jpg
发表于:2017-08-09 23:44只看该作者
2楼
韬客交易社区-国内最大的外汇交易社区
韬客社区www.talkfx.co
发表于:2018-02-24 04:01只看该作者
3楼
我今天最想说
韬客社区www.talkfx.co
发表于:2018-02-26 06:44只看该作者
4楼
谢谢分享
韬客社区www.talkfx.co
发表于:2018-03-03 16:05只看该作者
5楼
是你投资的全部,交易外汇也不应
韬客社区www.talkfx.co
发表于:2018-03-18 06:26只看该作者
6楼
谢谢分享
韬客社区www.talkfx.co