Solar_Wind1
Download scriptThe Solar Wind indicator is a visual trading tool designed to help market participants identify trends and momentum shifts in real-time. Rather than cluttering the main price chart with confusing lines, it operates in a separate window, providing a streamlined view of market "energy" and direction.
How the Logic Works
1. Price Range Analysis The indicator begins by looking at a specific window of recent history (defined by a user-selectable period). It identifies the highest peak and the lowest valley within that timeframe. By calculating where the current price sits relative to this high and low range, the script determines whether the market is leaning toward an upward or downward bias.
2. Momentum Smoothing Instead of reacting impulsively to every minor price tick, the logic uses a smoothing technique. It takes the raw price data and applies a mathematical filter that blends the current momentum with previous values. This ensures that the resulting signal is fluid and stable, reducing "market noise" that often leads to false signals in fast-moving environments.
3. Trend Visualization The script translates these mathematical calculations into two distinct visual elements:
- Directional Coloring: The indicator uses a histogram format where different colors represent contrasting market directions (typically Lime for upward momentum and Red for downward momentum).
- Zero-Line Crossover: The "center" of the indicator acts as a neutral zone. When the values move above this line, it signals bullish strength; when they drop below, it signals bearish weakness.
Automated Alerts
To ensure that traders do not have to watch the screen constantly, the script includes an automated notification system. It monitors the transition points where the momentum flips from positive to negative (or vice versa).
When a significant shift in direction is detected—specifically when the indicator crosses the zero-line—the system will automatically:
- Generate a visual Alert on your screen.
- Trigger an Audio Notification to grab your attention immediately.
By providing a clear, color-coded representation of market flow combined with instant notifications, the Solar Wind indicator helps traders stay aligned with the prevailing trend while minimizing the need for manual oversight.
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| Solar_Wind.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Yura Prokofiev"
#property link "Yura.prokofiev@gmail.com"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Black
#property indicator_color2 Lime
#property indicator_color3 Red
extern int period=10;
double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];
int init()
{
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);
SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);
IndicatorShortName("SOLAR WIND");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);
return(0);
}
int start()
{
//int period=10;
int limit;
int counted_bars=IndicatorCounted();
double prev,current,old;
double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
double price;
double MinL=0;
double MaxH=0;
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++)
{ MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)];
MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];
price = (High[i]+Low[i])/2;
Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
Value=MathMin(MathMax(Value,-0.999),0.999);
ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
Value1=Value;
Fish1=ExtBuffer0[i];
}
bool up=true;
for(i=limit-2; i>=0; i--)
{
current=ExtBuffer0[i];
prev=ExtBuffer0[i+1];
if (((current<0)&&(prev>0))||(current<0)) up= false;
if (((current>0)&&(prev<0))||(current>0)) up= true;
if(!up)
{
ExtBuffer2[i]=current;
ExtBuffer1[i]=0.0;
}
else
{
ExtBuffer1[i]=current;
ExtBuffer2[i]=0.0;
}
}
static datetime cDT = 0;
if (cDT == 0) { cDT = iTime(NULL,0,0); } // Don't alert when start
if (cDT != iTime(NULL,0,0))
{
if (
((ExtBuffer0[0] > 0) && (ExtBuffer0[1] <= 0))
||
((ExtBuffer0[0] < 0) && (ExtBuffer0[1] >= 0))
)
{
Alert(Symbol(),AccountNumber(), " Solar wind Direction Change");
PlaySound("alert.wav");
}
cDT = iTime(NULL,0,0);
}
return(0);
}
Comments