Author: Sidus
sidus v.2

The Sidus v.2 Entry Indicator is a technical analysis tool designed to help traders identify potential entry points in the financial markets by monitoring price momentum and trend strength. It works by synthesizing three primary data streams to filter out "market noise" and highlight high-probability movements.

Core Analytical Components

To determine the best time to enter a trade, the script evaluates three specific market factors:

  • Trend Direction (Moving Averages): The tool uses two different "Exponential Moving Averages" (EMA). By comparing a fast-moving average against a slower one, the script determines the current direction of the trend. If the fast average is above the slow average, it suggests upward momentum; if it is below, it suggests downward momentum.
  • Momentum Strength (RSI): The script incorporates the Relative Strength Index (RSI), which measures the speed and change of price movements. This acts as a secondary confirmation layer to ensure that a trend has enough "strength" behind it to be worth following.
  • The Gap Analysis: The tool specifically calculates the distance (the "pip difference") between the two moving averages. This allows the script to quantify how much the price is pulling away from its average path.

Trade Signal Logic

The indicator identifies a trade signal only when specific conditions are met simultaneously, ensuring that entries aren't made prematurely:

  1. Bullish (Buy) Signals: For a buy signal to appear, the fast moving average must be higher than the slow moving average, and the RSI value must be above the 50% midline. This confirms that both the trend direction and the momentum are moving upward.
  2. Bearish (Sell) Signals: Conversely, for a sell signal, the fast moving average must be lower than the slow moving average, and the RSI must be below the 50% midline. This confirms that both the trend and momentum are moving downward.

Visual Execution and Alerts

The script is designed to provide clear, visual cues on the trading chart:

  • Dynamic Plotting: It tracks these trends visually using lines on the chart so the user can see the "flow" of the market in real-time.
  • Entry Markers: When a definitive shift occurs—such as momentum flipping from bearish to bullish—the script places specific arrow markers on the chart to pinpoint the exact moment the entry signal was triggered.
  • Notification System: For active traders, the script includes an optional alert system. If enabled, it can provide audible sound notifications and pop-up messages on the screen, announcing the specific price point for a potential buy or sell action.
Indicators Used
Moving average indicatorRelative strength index
Miscellaneous
Implements a curve of type %1It plays sound alertsIt opens Message Boxes to the user
8 Views
0 Downloads
0 Favorites
sidus v.2
//+------------------------------------------------------------------+
//|                                    Sidus v.2 Entry Indicator.mq4 |
//|                                                                  |
//|                                                   Ideas by Sidus |
//+------------------------------------------------------------------+
#property copyright "Sidus"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 DodgerBlue

#include <WinUser32.mqh>
//---- input parameters
extern int       FastEMA=14;
extern int       SlowEMA=21;
extern int       RSIPeriod=17;
extern bool      Alerts=false;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//double rsi_sig[];
//---- variables
int sigCurrent=0;
int sigPrevious=0;
double pipdiffCurrent=0;
double pipdiffPrevious=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE,1,3);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_ARROW,1,5);
   SetIndexArrow(2,233);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexEmptyValue(2,0.0);
   SetIndexStyle(3,DRAW_ARROW,1,5);
   SetIndexArrow(3,234);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexEmptyValue(3,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
   double rsi_sig=0;
   bool entry=false;
   double entry_point=0;
   
   //---- check for possible errors
   if(counted_bars<0) return(-1);
   //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   //---- main loop
   for(int i=0; i<limit; i++)
   {
     //---- ma_shift set to 0 because SetIndexShift called abowe
     ExtMapBuffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i);
     ExtMapBuffer2[i]=iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
     rsi_sig = iRSI(NULL, 0, RSIPeriod, PRICE_CLOSE, i);
     
     pipdiffCurrent=(ExtMapBuffer1[i]-ExtMapBuffer2[i]);

     Comment("pipdiffCurrent = "+pipdiffCurrent+" ");
     if (pipdiffCurrent>0 && rsi_sig>50) 
     {
       sigCurrent = 1;  //Up
     }
     else if (pipdiffCurrent<0 && rsi_sig<50)
     {
       sigCurrent = 2;  //Down
     }
/*
     if (pipdiffCurrent>0) 
     {
       sigCurrent = 1;  //Up
     }
     else if (pipdiffCurrent<0)
     {
       sigCurrent = 2;  //Down
     }
*/     

     if (sigCurrent==1 && sigPrevious==2)
     {
        ExtMapBuffer4[i-1] = High[i-1]-5*Point;
        //ExtMapBuffer3[i] = Ask;
        entry=true;
        entry_point=Ask;
     } 
     else if (sigCurrent==2 && sigPrevious==1)
     {
        ExtMapBuffer3[i-1] = Low[i-1]-5*Point;
        //ExtMapBuffer4[i] = Bid;
        entry=true;
        entry_point=Bid;
     }


     sigPrevious=sigCurrent;
     pipdiffPrevious=pipdiffCurrent;
   }

   //----
   if(Alerts && entry)
   {
     PlaySound("alert.wav");
     if (sigPrevious==1)
     {
        MessageBox("Entry point: buy at "+entry_point+"!!", "Entry Point", MB_OK);
     }
     else if (sigPrevious==2)
     {
        MessageBox("Entry point: sell at "+entry_point+"!!", "Entry Point", MB_OK);
     }

     entry=false;
   }
RefreshRates();

//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments