Hi MrTools,
Are you able to create an indicator which shows an EMA line in Elder's Force Index?
Thanks!
Re: MT4 Indicator requests and ideas
9012Don't think would be able to combine them but can make the green baseline change color on slope change also if I remember reading somewhere the baseline >< 50 is also a good trend determination.Cazz223 wrote: Sun Apr 05, 2020 1:55 pm
Dear MrTools,
Is it possible to combine the Red and Green lines into one baseline, which changes colours upon curve changes.
Thanks
Re: MT4 Indicator requests and ideas
9013Something like a ema of Elder's force index? If so yes it should be possible.navlem wrote: Sun Apr 05, 2020 2:54 pm Hi MrTools,
Are you able to create an indicator which shows an EMA line in Elder's Force Index?
Thanks!
Re: MT4 Indicator requests and ideas
9014Great! MrTools,mrtools wrote: Sun Apr 05, 2020 4:39 pm
Don't think would be able to combine them but can make the green baseline change color on slope change also if I remember reading somewhere the baseline >< 50 is also a good trend determination.
It will be wonderful if the Baseline could change colour to reflect slope changes.
Will there be a separate setting for tweaking the Baseline, other than tweaking the value of the Volatility_Band?
Re: MT4 Indicator requests and ideas
9015
Hi,
First of all, I'd like to say thanks to this forum and the great coders mrtools and mladen who make our trading much easier. 4Sessions indi draws this rectangle with first template load, but I don't need it. Other rectangles are drawn correctly. When I load this template for the second time it fortunately disappears. Could this one be fixed and removed?
No other indicators are needed.
Thank you in advance.
First of all, I'd like to say thanks to this forum and the great coders mrtools and mladen who make our trading much easier. 4Sessions indi draws this rectangle with first template load, but I don't need it. Other rectangles are drawn correctly. When I load this template for the second time it fortunately disappears. Could this one be fixed and removed?
No other indicators are needed.
Thank you in advance.
Code: Select all
#property indicator_chart_window
#define ASIA "Asia"
#define EUROPE "Europe"
#define AMERICA "America"
#define PACIFIC "Pacific"
extern int Winter = 2;
extern int Summer = 3;
extern int Days = 5;
extern bool ShowDescription = true;
extern bool ShowPips = true;
extern bool AsBackground = true;
extern bool ShowNextSessions = true;
extern int Width = 1;
extern int Style = 0;
extern string AsiaDesc = "Asia";
extern color AsiaColor = Aqua;
extern string AsiaOpen = "00:00";
extern string AsiaClose = "09:00";
extern string EuropeDesc = "Europe";
extern color EuropeColor = DarkKhaki;
extern string EuropeOpen = "06:00";
extern string EuropeClose = "15:00";
extern string AmericaDesc = "America";
extern color AmericaColor = LightSalmon;
extern string AmericaOpen = "13:00";
extern string AmericaClose = "22:00";
extern string PacificDesc = "Pacific";
extern color PacificColor = LightSteelBlue;
extern string PacificOpen = "20:00";
extern string PacificClose = "04:00";
bool bREDRAWN=false;
int iBarsInit=0;
//+------------------------------------------------------------------+
datetime Yesterday(datetime dtDate)
{
dtDate-=dtDate%86400;
int ind1=iBarShift( NULL,0,dtDate,false )+1;
if (ind1<0) return(Time[0]);
if (ind1>Bars) return(Time[0]);
if(dtDate>=TimeCurrent())
return( Time[0] );
else
return( Time[ind1] );
}
//+------------------------------------------------------------------+
datetime Tomorrow(datetime dtDate)
{
datetime dtResult;
dtDate -= dtDate%86400;
dtDate += 86399;
int ind1=iBarShift( NULL,0,dtDate,false )-1;
if (ind1<0) return(dtDate);
if (ind1>Bars) return(dtDate);
if(dtDate>=TimeCurrent())
dtResult=dtDate+1;
else
dtResult=Time[ind1];
if(dtResult==0) dtResult=dtDate+1;
return(dtResult);
}
//+------------------------------------------------------------------+
int DST(datetime dtDate)
{
int iYear;
datetime dtLastSunday,dtMarch,dtOctober;
iYear=TimeYear(dtDate);
for(int i=24; i<=31; i++)
{
dtLastSunday=StrToTime(iYear+"."+"03."+i+" 02:00");
if(TimeDayOfWeek(dtLastSunday)==0) dtMarch=dtLastSunday;
dtLastSunday=StrToTime(iYear+"."+"10."+i+" 02:00");
if(TimeDayOfWeek(dtLastSunday)==0) dtOctober=dtLastSunday;
}
if(dtDate < dtMarch) return(Winter);
else if(dtDate >= dtMarch && dtDate < dtOctober) return(Summer);
else if(dtDate >= dtOctober) return(Winter);
return(0);
}
//+------------------------------------------------------------------+
void DrawSession(string sSessionName,
string sSessionDesc,
datetime dtDayToDraw,
string sSessionOpen,
string sSessionClose,
color clrSessionColor)
{
string sDayToDraw;
datetime dtSessionOpen,dtSessionClose;
double dHigh,dLow;
int iFirstBar,iLastBar,iHourCorrection;
sDayToDraw = TimeToStr(dtDayToDraw,TIME_DATE);
iHourCorrection = DST(dtDayToDraw);
sSessionOpen = TimeToStr( StrToTime(sSessionOpen) + iHourCorrection,TIME_MINUTES );
sSessionClose = TimeToStr( StrToTime(sSessionClose) + iHourCorrection - 1,TIME_MINUTES );
if(StrToTime(sSessionOpen)>=StrToTime(sSessionClose))
{
dtSessionClose=StrToTime(TimeToStr(Tomorrow(dtDayToDraw),TIME_DATE)+" "+sSessionClose);
sDayToDraw = TimeToStr(dtDayToDraw,TIME_DATE);
dtSessionOpen = StrToTime(sDayToDraw+" "+sSessionOpen);
}
else
{
dtSessionOpen = StrToTime(sDayToDraw+" "+sSessionOpen);
dtSessionClose = StrToTime(sDayToDraw+" "+sSessionClose);
}
if(ObjectFind(sSessionName)==-1) ObjectCreate(sSessionName,OBJ_RECTANGLE,0,0,0,0,0);
ObjectSet(sSessionName,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|
OBJ_PERIOD_M5|
OBJ_PERIOD_M15|
OBJ_PERIOD_M30|
OBJ_PERIOD_H1);
ObjectSet(sSessionName,OBJPROP_TIME1,dtSessionOpen);
ObjectSet(sSessionName,OBJPROP_TIME2,dtSessionClose);
ObjectSet(sSessionName,OBJPROP_COLOR,clrSessionColor);
ObjectSet(sSessionName,OBJPROP_BACK,AsBackground);
ObjectSet(sSessionName,OBJPROP_WIDTH,Width);
ObjectSet(sSessionName,OBJPROP_STYLE,Style);
if(TimeCurrent()>=dtSessionOpen)
{
iLastBar = iBarShift(NULL,0,dtSessionClose,false);
iFirstBar = iBarShift(NULL,0,dtSessionOpen,false);
dHigh = High[ iHighest( NULL,0,MODE_HIGH,iFirstBar-iLastBar+1,iLastBar ) ];
dLow = Low [ iLowest( NULL,0,MODE_LOW, iFirstBar-iLastBar+1,iLastBar ) ];
ObjectSet(sSessionName,OBJPROP_PRICE1,dHigh);
ObjectSet(sSessionName,OBJPROP_PRICE2,dLow);
}
else
{
if(ShowNextSessions)
{
ObjectSet(sSessionName,OBJPROP_PRICE1,WindowPriceMax(0)+100);
ObjectSet(sSessionName,OBJPROP_PRICE2,0);
}
}
if(ShowDescription)
{
if(ShowPips)
{
double dPips;
dPips = (dHigh-dLow)*MathPow(10,Digits);
sSessionDesc = sSessionDesc+" "+DoubleToStr(dPips,0);
}
ObjectSetText(sSessionName,sSessionDesc);
}
}
//+------------------------------------------------------------------+
void DrawAllSessions()
{
datetime dtDayToDraw;
dtDayToDraw=TimeCurrent()+86400;
for(int i=0; i<=Days; i++)
{
DrawSession(PACIFIC+i,
PacificDesc,
dtDayToDraw,
PacificOpen,
PacificClose,
PacificColor);
DrawSession(AMERICA+i,
AmericaDesc,
dtDayToDraw,
AmericaOpen,
AmericaClose,
AmericaColor);
DrawSession(EUROPE+i,
EuropeDesc,
dtDayToDraw,
EuropeOpen,
EuropeClose,
EuropeColor);
DrawSession(ASIA+i,
AsiaDesc,
dtDayToDraw,
AsiaOpen,
AsiaClose,
AsiaColor);
dtDayToDraw=Yesterday(dtDayToDraw);
}
}
//+------------------------------------------------------------------+
int init()
{
Winter *= 3600;
Summer *= 3600;
if(Days==0) Days=1;
if(Style>=5) Style=0;
iBarsInit=Bars;
DrawAllSessions();
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
if(UninitializeReason()!=3)
{
for(int i=0; i<=Days; i++)
{
ObjectDelete(ASIA+i);
ObjectDelete(EUROPE+i);
ObjectDelete(AMERICA+i);
ObjectDelete(PACIFIC+i);
}
}
return(0);
}
//+------------------------------------------------------------------+
int start()
{
if(Period()<PERIOD_H4)
{
int iBarsCur,iBarsDiff;
double dNow;
iBarsCur = Bars;
iBarsDiff = iBarsCur-iBarsInit;
dNow = Hour()+Minute()/100.0;
if(iBarsDiff>1)
{
DrawAllSessions();
iBarsInit=iBarsCur;
return(0);
}
else if(iBarsDiff==1)
{
iBarsInit=iBarsCur;
}
if(dNow>=0.00 && dNow<0.01)
{
if(!bREDRAWN)
{
DrawAllSessions();
bREDRAWN=true;
return(0);
}
}
datetime dtTheTime;
datetime dtDayToDraw;
dtTheTime = TimeCurrent();
dtDayToDraw = dtTheTime;
for(int i=1; i<=2; i++)
{
datetime dtOpen,dtClose;
dtOpen = ObjectGet(PACIFIC+i,OBJPROP_TIME1);
dtClose = ObjectGet(PACIFIC+i,OBJPROP_TIME2);
if(dtTheTime>=dtOpen && dtTheTime<=dtClose)
DrawSession(PACIFIC+i,
PacificDesc,
dtDayToDraw,
PacificOpen,
PacificClose,
PacificColor);
dtOpen = ObjectGet(AMERICA+i,OBJPROP_TIME1);
dtClose = ObjectGet(AMERICA+i,OBJPROP_TIME2);
if(dtTheTime>=dtOpen && dtTheTime<=dtClose)
DrawSession(AMERICA+i,
AmericaDesc,
dtDayToDraw,
AmericaOpen,
AmericaClose,
AmericaColor);
dtOpen = ObjectGet(EUROPE+i,OBJPROP_TIME1);
dtClose = ObjectGet(EUROPE+i,OBJPROP_TIME2);
if(dtTheTime>=dtOpen && dtTheTime<=dtClose)
DrawSession(EUROPE+i,
EuropeDesc,
dtDayToDraw,
EuropeOpen,
EuropeClose,
EuropeColor);
dtOpen = ObjectGet(ASIA+i,OBJPROP_TIME1);
dtClose = ObjectGet(ASIA+i,OBJPROP_TIME2);
if(dtTheTime>=dtOpen && dtTheTime<=dtClose)
DrawSession(ASIA+i,
AsiaDesc,
dtDayToDraw,
AsiaOpen,
AsiaClose,
AsiaColor);
dtDayToDraw=Yesterday(dtDayToDraw);
}
}
return(0);
}
Re: MT4 Indicator requests and ideas
9016Yes correct.mrtools wrote: Sun Apr 05, 2020 4:41 pm
Something like a ema of Elder's force index? If so yes it should be possible.
If it can be done it'll be awesome.
Thanks!
Re: MT4 Indicator requests and ideas
9017Added slope coloring of the baseline for slope change can be only controlled by the volatility band period.Cazz223 wrote: Sun Apr 05, 2020 5:58 pm
Great! MrTools,
It will be wonderful if the Baseline could change colour to reflect slope changes.
Will there be a separate setting for tweaking the Baseline, other than tweaking the value of the Volatility_Band?
Re: MT4 Indicator requests and ideas
9019Dear mrtools.... I think you forgot to attach it heremrtools wrote: Mon Apr 06, 2020 1:34 am
Added slope coloring of the baseline for slope change can be only controlled by the volatility band period.

Re: MT4 Indicator requests and ideas
9020Oops!! sorry!Daim2574 wrote: Mon Apr 06, 2020 3:19 am
Dear mrtools.... I think you forgot to attach it here... many thanks
- These users thanked the author mrtools for the post (total 8):
- rudiarius, Cazz223, Jimmy, Daim2574, Tanzenkran, Lumios, pipsquirrel, Jedidiah