Re: MT4 Indicator requests and ideas

8851
Hopefully someone can do this - if it were simple it would have already been done.
Could the arrow be attached to the price please?
If it cannot be attached to the price candle high or low can it be changed to a vertical line in place of the arrow?
When the price is at the top or bottom of the chart the arrow is not shown till it is too late.
Thanks
TEAMTRADER


Re: MT4 Indicator requests and ideas

8852
mrtools wrote: Sun Dec 08, 2019 12:42 pm

Made this one, instead of the lines in between the absolute strength changed it to the histogram, just an explanation about the histogram when it's green it kinda confirms the abs, and should reflect on the sw display. Made it to shoe bull when abs bulls > bears and the histo showing green and the opposite for bears. The display will show weak,bull/bears when the histo is gray. Anyway seems to not affect the computer resources to bad.

Hy,

I have a problem with this indie, i don't know why have this error, it never happend with other indies.
error ash error ash

Re: MT4 Indicator requests and ideas

8854
fgh96 wrote: Mon Mar 23, 2020 3:57 am Dear Mr.Tools
As it's shown in the picture, the indicator's slope has a very good potential in showing trends, also it can be used as a trigger indicator if we make it sensitive enough.
I downloaded it from this link : https://forex-station.com/viewtopic.ph ... 1295358003
but I couldn't find the MTF version. It seems that it is a non-repainting indicator so it is worthwhile if we upgrade it to an MTF version. since the slope is important if we add smoothing feature I think the noises will vanish or will be less. I would be grateful if you check it. thank you very much

Capture.JPG

rsi on heikenashi.mq4
It's very good. I want the mtf version of it too.


Re: MT4 Indicator requests and ideas

8859
mrtools wrote: Tue Mar 24, 2020 5:56 pm

Would need the source code.
Thank you for responding. Here it is.

Code: Select all

#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);
  }


Who is online

Users browsing this forum: alimpe2000, ChatGPT [Bot], DVanAssen, Google [Bot], kenshin281180#, specialkey, Yandex [Bot] and 85 guests