Solar Winds

Download script
Solar Winds

This technical indicator, titled "Solar Wind," is designed to analyze price action by identifying momentum shifts and trend reversals. Rather than plotting directly on the main price chart, it generates a separate visual dashboard that translates complex market movements into a simplified histogram of bullish and bearish signals.

Core Methodology

The logic operates by first calculating the price range over a specific moving window (the "period"). It identifies the highest highs and lowest lows within that timeframe to establish a boundary. By comparing the current average price against these boundaries, the script determines where the price sits relative to the overall volatility of the recent period.

Data Processing and Smoothing

To ensure the visual output isn't erratic or overly sensitive to minor market "noise," the script applies a mathematical smoothing process. It calculates a weighted value based on the price position, then uses a logarithmic calculation to convert these values into a stabilized momentum figure. This helps in identifying the true underlying strength of a move rather than just reacting to momentary spikes.

Visual Interpretation

The final output is divided into two distinct visual components:

  • Bullish Signals (Lime): When the calculated momentum trends upward and remains positive, the indicator reflects this as a lime-colored histogram. This suggests that the buying pressure is dominant within the current timeframe.
  • Bearish Signals (Red): Conversely, when the momentum drops below the zero line or shifts into negative territory, the indicator switches to a red histogram. This signifies that selling pressure is prevailing.

Summary for Traders

Essentially, this tool acts as a filter. It takes raw price data, smooths out the fluctuations, and presents you with a clear "up or down" visual guide. By observing the color changes in the histogram, users can more easily identify when the market sentiment is shifting from one direction to another, providing a cleaner perspective on current market trends.

Miscellaneous
Implements a curve of type %1
7 Views
0 Downloads
0 Favorites
Solar Winds
#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,STYLE_SOLID,2);
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,2);
   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;
         }
     }

   return(0);
  }

Comments