MT4 Scalping Indicators

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #74630 quote
    Khutx0
    Participant
    New

    Hi,

    I have attached the mt4 indicators that I respectfully ask to be converted to prt indicators. 

    Please.

    #74745 quote
    Nicolas
    Keymaster
    Master
    Hi, why not but I can’t do anything with compiled codes (.ex4). For any conversion request, please kindly respect the rules: Free Conversion of MT4 Indicators (MQL4)
    #80240 quote
    bluetime6
    Participant
    Average
    i think he means this one the indicator put the light blue und lilac arrows in the chart but i dont no what the indicator does really…  
    //+------------------------------------------------------------------+
    //|                                                       TMA+CG.mq4 |
    //|                                                           mladen |
    //| arrowse coded acording to idea presented by rajiv                |
    //+------------------------------------------------------------------+
    #property copyright "rajivxxx"
    #property link      "rajivxxx@gmail.com / MqlLab.ru"
    
    #property indicator_chart_window
    #property indicator_buffers 5
    #property indicator_color1  DimGray
    #property indicator_color2  Red
    #property indicator_color3  LimeGreen
    #property indicator_color4  MediumTurquoise
    #property indicator_color5  Magenta
    #property indicator_style1  STYLE_DOT
    
    //
    //
    //
    //
    //
    
    extern string TimeFrame       = "current time frame";
    extern int    HalfLength      = 56;
    extern int    Price           = PRICE_WEIGHTED;
    extern double BandsDeviations = 2.0;
    extern bool   Interpolate     = true;
    extern bool   alertsOn        = false;
    extern bool   alertsOnCurrent = false;
    extern bool   alertsOnHighLow = true;
    extern bool   alertsMessage   = true;
    extern bool   alertsSound     = false;
    extern bool   alertsEmail     = false;
    
    //
    //
    //
    //
    //
    
    double tmBuffer[];
    double upBuffer[];
    double dnBuffer[];
    double wuBuffer[];
    double wdBuffer[];
    double upArrow[];
    double dnArrow[];
    
    //
    //
    //
    //
    //
    
    string IndicatorFileName;
    bool   calculatingTma = false;
    bool   returningBars  = false;
    int    timeFrame;
    
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    //
    //
    //
    //
    
    int init()
    {
       timeFrame  = stringToTimeFrame(TimeFrame);
       HalfLength = MathMax(HalfLength,1);
       IndicatorBuffers(7);
             SetIndexBuffer(0,tmBuffer);  SetIndexDrawBegin(0,HalfLength);
             SetIndexBuffer(1,upBuffer);  SetIndexDrawBegin(1,HalfLength);
             SetIndexBuffer(2,dnBuffer);  SetIndexDrawBegin(2,HalfLength);
             SetIndexBuffer(3,dnArrow);   SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,233);
             SetIndexBuffer(4,upArrow);   SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,234);
             SetIndexBuffer(5,wuBuffer);
             SetIndexBuffer(6,wdBuffer);
    
             if (TimeFrame=="calculateTma")  { calculatingTma=true; return(0); }
             if (TimeFrame=="returnBars")    { returningBars=true;  return(0); }
    
       
       IndicatorFileName = WindowExpertName();
       return(0);
    }
    int deinit() { return(0); }
    
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    //
    //
    //
    //
    //
    
    int start()
    {
       int counted_bars=IndicatorCounted();
       int i,limit;
    
       if(counted_bars<0) return(-1);
       if(counted_bars>0) counted_bars--;
               limit=MathMin(Bars-1,Bars-counted_bars+HalfLength);
    
               if (returningBars)  { tmBuffer[0] = limit; return(0); }
               if (calculatingTma) { calculateTma(limit); return(0); }
               if (timeFrame > Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,IndicatorFileName,"returnBars",0,0)*timeFrame/Period()));
    
       //
       //
       //
       //
       //
       
     	for(i = limit; i >= 0; i--)
       {
          int      shift1 = iBarShift(NULL,timeFrame,Time[i]);
          datetime time1  = iTime    (NULL,timeFrame,shift1);
    
          //
          //
          //
          //
          //
          
             tmBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,0,shift1);
             upBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,1,shift1);
             dnBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,2,shift1);
    
             upArrow[i] = EMPTY_VALUE;
             dnArrow[i] = EMPTY_VALUE;            
             if(High[i]>upBuffer[i] && Close[i]>Open[i] && (Close[i+1]<=Open[i+1] || High[i+1]<upBuffer[i+1])) upArrow[i] = High[i]+iATR(NULL,0,20,i);
             if(Low[i]<dnBuffer[i] && Close[i]<Open[i] && (Close[i+1]>=Open[i+1] || Low[i+1]>dnBuffer[i+1])) dnArrow[i] = Low[i]-iATR(NULL,0,20,i);
             
              //  if (High[i+1]>upBuffer[i+1] && Close[i+1]>Open[i+1] && Close[i]<Open[i]) upArrow[i] = High[i]+iATR(NULL,0,20,i);
              //  if ( Low[i+1]<dnBuffer[i+1] && Close[i+1]<Open[i+1] && Close[i]>Open[i]) dnArrow[i] = Low[i]-iATR(NULL,0,20,i); // fix High - Low
    
             if (timeFrame <= Period() || shift1==iBarShift(NULL,timeFrame,Time[i-1])) continue;
             if (!Interpolate) continue;
    
          //
          //
          //
          //
          //
    
             for(int n = 1; i+n < Bars && Time[i+n] >= time1; n++) continue;
             double factor = 1.0 / n;
             for(int k = 1; k < n; k++)
                {
                   tmBuffer[i+k] = k*factor*tmBuffer[i+n] + (1.0-k*factor)*tmBuffer[i];
                   upBuffer[i+k] = k*factor*upBuffer[i+n] + (1.0-k*factor)*upBuffer[i];
                   dnBuffer[i+k] = k*factor*dnBuffer[i+n] + (1.0-k*factor)*dnBuffer[i];
                }               
       }
    
       //
       //
       //
       //
       //
       
       if (alertsOn)
       {
          if (alertsOnCurrent)
                int forBar = 0;
          else      forBar = 1;
          if (alertsOnHighLow)       
          {
             if (High[forBar] > upBuffer[forBar] && High[forBar+1] < upBuffer[forBar+1]) doAlert("high penetrated upper bar");
             if (Low[forBar]  < dnBuffer[forBar] && Low[forBar+1]  > dnBuffer[forBar+1]) doAlert("low penetrated lower bar");
          }
          else
          {
             if (Close[forBar] > upBuffer[forBar] && Close[forBar+1] < upBuffer[forBar+1]) doAlert("close penetrated upper bar");
             if (Close[forBar] < dnBuffer[forBar] && Close[forBar+1] > dnBuffer[forBar+1]) doAlert("close penetrated lower bar");
          }
       } 
    
       return(0);
    }
    
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    //
    //
    //
    //
    //
    
    void calculateTma(int limit)
    {
       int i,j,k;
       double FullLength = 2.0*HalfLength+1.0;
       
       //
       //
       //
       //
       //
       
       for (i=limit; i>=0; i--)
       {
          double sum  = (HalfLength+1)*iMA(NULL,0,1,0,MODE_SMA,Price,i);
          double sumw = (HalfLength+1);
          for(j=1, k=HalfLength; j<=HalfLength; j++, k--)
          {
             sum  += k*iMA(NULL,0,1,0,MODE_SMA,Price,i+j);
             sumw += k;
    
             if (j<=i)
             {
                sum  += k*iMA(NULL,0,1,0,MODE_SMA,Price,i-j);
                sumw += k;
             }
          }
          tmBuffer[i] = sum/sumw;
    
          //
          //
          //
          //
          //
                
             double diff = iMA(NULL,0,1,0,MODE_SMA,Price,i)-tmBuffer[i];
             if (i> (Bars-HalfLength-1)) continue;
             if (i==(Bars-HalfLength-1))
             {
                upBuffer[i] = tmBuffer[i];
                dnBuffer[i] = tmBuffer[i];
                if (diff>=0)
                   {
                      wuBuffer[i] = MathPow(diff,2);
                      wdBuffer[i] = 0;
                   }
                else
                   {               
                      wdBuffer[i] = MathPow(diff,2);
                      wuBuffer[i] = 0;
                   }                  
                continue;
             }
          
             //
             //
             //
             //
             //
             
             if(diff>=0)
                {
                   wuBuffer[i] = (wuBuffer[i+1]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   wdBuffer[i] =  wdBuffer[i+1]*(FullLength-1)/FullLength;
                }
             else
                {
                   wdBuffer[i] = (wdBuffer[i+1]*(FullLength-1)+MathPow(diff,2))/FullLength;
                   wuBuffer[i] =  wuBuffer[i+1]*(FullLength-1)/FullLength;
                }
             upBuffer[i] = tmBuffer[i] + BandsDeviations*MathSqrt(wuBuffer[i]);
             dnBuffer[i] = tmBuffer[i] - BandsDeviations*MathSqrt(wdBuffer[i]);
       }
    }
        
    
    
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    //
    //
    //
    //
    //
    
    void doAlert(string doWhat)
    {
       static string   previousAlert="";
       static datetime previousTime;
       string message;
    
       //
       //
       //
       //
       //
       
       if (previousAlert!=doWhat || previousTime!=Time[0]) 
       {
          previousAlert = doWhat;
          previousTime  = Time[0];
    
          message= StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," THA : ",doWhat);
             if (alertsMessage) Alert(message);
             if (alertsEmail)   SendMail(StringConcatenate(Symbol(),"TMA "),message);
             if (alertsSound)   PlaySound("alert2.wav");
        }
    }
    
    //
    //
    //
    //
    //
    
    int stringToTimeFrame(string tfs)
    {
       for(int l = StringLen(tfs)-1; l >= 0; l--)
       {
          int k = StringGetChar(tfs,l);
              if((k > 96 && k < 123) || (k > 223 && k < 256))
                   tfs = StringSetChar(tfs, 1, l - 32);
              else 
                  if(k > -33 && k < 0)
                      tfs = StringSetChar(tfs, 1, l + 224);
       }
       int tf=0;
             if (tfs=="M1" || tfs=="1")     tf=PERIOD_M1;
             if (tfs=="M5" || tfs=="5")     tf=PERIOD_M5;
             if (tfs=="M15"|| tfs=="15")    tf=PERIOD_M15;
             if (tfs=="M30"|| tfs=="30")    tf=PERIOD_M30;
             if (tfs=="H1" || tfs=="60")    tf=PERIOD_H1;
             if (tfs=="H4" || tfs=="240")   tf=PERIOD_H4;
             if (tfs=="D1" || tfs=="1440")  tf=PERIOD_D1;
             if (tfs=="W1" || tfs=="10080") tf=PERIOD_W1;
             if (tfs=="MN" || tfs=="43200") tf=PERIOD_MN1;
             if (tf==0 || tf<Period())      tf=Period();
       return(tf);
    }
    #80248 quote
    Nicolas
    Keymaster
    Master
    It is built with a TMA channel, when price is closing outside the channel, trading signals occurred (picture attached).
    bluetime6 thanked this post
    #80505 quote
    bluetime6
    Participant
    Average
    I looked in the library here, but I couldn’t find him. Is the indicator here programmed for proreal code? Maybe there is a link?
    #80510 quote
    Nicolas
    Keymaster
    Master
    You’ll find TMA channel indicator here: TMA center channel bands
    bluetime6 thanked this post
    #80546 quote
    bluetime6
    Participant
    Average
    ty!
Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

MT4 Scalping Indicators


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
Khutx0 @khutx0 Participant
Summary

This topic contains 6 replies,
has 3 voices, and was last updated by bluetime6
7 years, 4 months ago.

Topic Details
Forum: ProBuilder: Indicators & Custom Tools
Language: English
Started: 06/28/2018
Status: Active
Attachments: 4 files
Logo Logo
Loading...