Solar Wind_v1

Download script
Solar Wind_v1

This script, titled "Solar Wind," is a technical analysis tool designed to visualize market momentum and price trends in a separate window below the main trading chart. Instead of simply following price, it uses a mathematical approach to interpret the relationship between recent price highs and lows to identify underlying shifts in market sentiment.

Core Logic and Calculation

The indicator operates by analyzing a specific look-back period (defaulted to 10 bars). For every point on the chart, the script identifies the highest peak and the lowest valley within that timeframe. It then calculates the current price's position relative to these extremes.

By measuring where the price sits between the high and low, the tool generates a value that represents market "pressure." This value is smoothed out over time using a weighted formula, ensuring that the indicator reacts to sustained movements rather than erratic, momentary spikes. The result is a normalized figure that oscillates between positive and negative values, representing the strength of the current trend.

Visual Representation

The script translates these mathematical calculations into two distinct visual components:

  • Trend Momentum: The primary data is transformed using a logarithmic scale to highlight transitions in momentum. This helps traders see how aggressively the price is moving toward a specific direction.
  • Dynamic Color Coding: The logic distinguishes between bullish and bearish phases. When the calculated momentum is positive, the indicator highlights that movement (typically in green). When the momentum turns negative, it switches to a different color (typically red).

How it Functions for the Trader

Essentially, the "Solar Wind" tool acts as a filter to separate market noise from actual trend direction. By looking at the histogram:

  1. Directional Shifts: It provides a clear visual cue when the momentum flips from positive to negative or vice versa.
  2. Strength Assessment: The height of the bars indicates the intensity of the current trend.
  3. Trend Confirmation: It allows users to see if the current price action is supported by significant "pressure" from the recent high-low range, providing a secondary layer of confirmation for entry or exit points.
Miscellaneous
Implements a curve of type %1
11 Views
0 Downloads
0 Favorites
Solar Wind_v1
/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

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

   return(0);
  }

Comments