The Numerical Sequence Vibrations (NSV) tool is designed to identify specific recurring patterns in the currency market based on mathematical frequencies. Rather than relying on complex organic growth patterns like the Fibonacci sequence, this logic operates on the principle of "Standard Division." It suggests that currency prices often move in predictable vibrations that align with clean, whole-number divisions—specifically multiples of a base number (such as 30).
Core Logic and Philosophy
The underlying theory of NSV is that market movements are not entirely random but follow mathematical "beats." The tool identifies these vibrations by calculating levels based on standard percentage intervals. By observing where prices react to these specific mathematical intervals, traders can potentially identify zones of interest where the market may resonate or reverse.
How the Script Functions
The script performs several automated tasks to translate this mathematical theory into a visual layout on your trading chart:
- Dynamic Precision Adjustment: The tool automatically detects the currency pair you are viewing (e.g., USDJPY vs. EURUSD). It adjusts its internal calculations based on whether the currency uses two or four decimal places, ensuring that the vibrations are scaled correctly for each specific market.
- Frequency Calculation: It takes a base setting (the vibration frequency) and calculates a price range. It then determines a starting "anchor" point based on the current market price.
- Automated Level Plotting: The script automatically generates a series of horizontal lines across the chart. These are not placed at random; they represent specific percentage milestones of the vibration sequence:
- 0% Levels: Represent the base vibration points.
- 25%, 50%, and 75% Levels: These represent the intermediate "harmonics" within each vibration cycle.
- Visual Distinction: To help with readability, the script differentiates these levels using various line styles (such as dots, dashes, and dash-dots), allowing you to visually distinguish between the primary vibration points and the secondary harmonic beats at a glance.
Summary for the Trader
In essence, this tool transforms abstract mathematical division into a visual map. It populates your chart with a grid of "vibration zones" based on the idea that markets prefer to move in mathematically harmonious steps. By visualizing these 0%, 25%, 50%, and 75% intervals, the script provides a structured framework to observe how price interacts with recurring numerical frequencies.
//+------------------------------------------------------------------+
//| Numerical Sequence Vibrations. A study in the reoccuring |
//| frequency at which the currency market moves in vibrations |
//| that can be predicted mathmaticaly using standard division, |
//| such as being divisible by the number 30. Such as |
//| 30, 60, 90, 120, etc. |
//| | |
//| This NSV idea is based on observation that the currency |
//| more closely matches standard division % (such as 25%) |
//| rather than Fibonacci sequence number % (such as 21.6). |
//+------------------------------------------------------------------+
#property copyright "Thom Lester and the Numerical Sequence Vibration of currency studies"
#property link "Original study by Jared F. Martinez of :"
#property link "Market Traders Institue under tittle of Hamrmonic Beats"
#property indicator_chart_window
///+----Begin code---------+
int duplications=100;
int nsvsetting=30;
int d,sbt;
double decimal, nsvset, nsv, P, c, sb;
// double decimal, length, P,c,sb,tfl;
int init()
{
string sym=Symbol();
int d=Digits;
// +-----Decimal listing for popular currencies traded:
if (sym == "AUDCAD") decimal=0.0000;
if (sym == "AUDJPY") decimal=0.00;
if (sym == "AUDUSD") decimal=0.0000;
if (sym == "CADJPY") decimal=0.00;
if (sym == "CHFJPY") decimal=0.00;
if (sym == "EURAUD") decimal=0.0000;
if (sym == "EURCHF") decimal=0.0000;
if (sym == "EURGBP") decimal=0.0000;
if (sym == "EURJPY") decimal=0.00;
if (sym == "EURUSD") decimal=0.0000;
if (sym == "GBPCHF") decimal=0.0000;
if (sym == "GBPJPY") decimal=0.00;
if (sym == "GBPUSD") decimal=0.0000;
if (sym == "NZDJPY") decimal=0.00;
if (sym == "NZDUSD") decimal=0.0000;
if (sym == "USDCAD") decimal=0.0000;
if (sym == "USDCHF") decimal=0.0000;
if (sym == "USDJPY") decimal=0.00;
nsv=nsvsetting;
if (d==4) nsvset=nsv/10000;
if (d==2) nsvset=nsv/100;
return(0);
}
// +-----Numerical Sequence percentages drawn on chart:
int deinit()
{
// for( i=0; i<iterations; i++)
for( d=0; d<duplications; d++)
{
ObjectDelete("NSV line 0% "+nsvsetting+" "+d);
ObjectDelete("NSV line 25% "+nsvsetting+" "+d);
ObjectDelete("NSV line 50% "+nsvsetting+" "+d);
ObjectDelete("NSV line 75% "+nsvsetting+" "+d);
}
return(0);
}
// +-----Numerical Sequence line settings [location, color & style] :
int start()
{
c=Close[0];
sbt=(decimal-c)/nsvset;
sb= decimal-(sbt*nsvset);
P=sb-(nsvset*(duplications/2));
d=0;
for( d=0; d<duplications; d++)
// +-----code for drawing 0% shown as a Solid line on chart
{
if (ObjectFind("NSV line 0% "+nsvsetting+" "+d) != 0)
{
ObjectCreate("NSV line 0% "+nsvsetting+" "+d, OBJ_HLINE, 0, Time[0], P);
ObjectSet("NSV line 0% "+nsvsetting+" "+d, OBJPROP_COLOR, SteelBlue);
ObjectSet("NSV line 0% "+nsvsetting+" "+d, OBJPROP_STYLE, STYLE_DOT);
}
else
{
ObjectMove("NSV line 0% "+nsvsetting+" "+d, 0,Time[0], P);
}
// +-----code for drawing 25% shown as a Dash line on chart
if (ObjectFind("NSV line 25% "+nsvsetting+" "+d) != 0)
{
ObjectCreate("NSV line 25% "+nsvsetting+" "+d, OBJ_HLINE, 0, Time[0], P+(nsvset*0.25));
ObjectSet("NSV line 25% "+nsvsetting+" "+d, OBJPROP_COLOR, SteelBlue);
ObjectSet("NSV line 25% "+nsvsetting+" "+d, OBJPROP_STYLE, STYLE_DASH);
}
else
{
ObjectMove("NSV line 25% "+nsvsetting+" "+d, 0,Time[0], P+(nsvset*0.25));
}
// +-----code for drawing 50% shown as a DashDot line on chart
if (ObjectFind("NSV line 50% "+nsvsetting+" "+d) != 0)
{
ObjectCreate("NSV line 50% "+nsvsetting+" "+d, OBJ_HLINE, 0, Time[0], P+(nsvset*0.5));
ObjectSet("NSV line 50% "+nsvsetting+" "+d, OBJPROP_COLOR, SteelBlue);
ObjectSet("NSV line 50% "+nsvsetting+" "+d, OBJPROP_STYLE, STYLE_DASHDOT);
}
else
{
ObjectMove("NSV line 50% "+nsvsetting+" "+d, 0,Time[0], P+(nsvset*0.5));
}
// +-----code for drawing 75% shown as a Dot line on chart
if (ObjectFind("NSV line 75% "+nsvsetting+" "+d) != 0)
{
ObjectCreate("NSV line 75% "+nsvsetting+" "+d, OBJ_HLINE, 0, Time[0], P+(nsvset*0.75));
ObjectSet("NSV line 75% "+nsvsetting+" "+d, OBJPROP_COLOR, SteelBlue);
ObjectSet("NSV line 75% "+nsvsetting+" "+d, OBJPROP_STYLE, STYLE_DASHDOTDOT);
}
else
{
ObjectMove("NSV line 75% "+nsvsetting+" "+d, 0,Time[0], P+(nsvset*0.75));
}
P=P+nsvset;
}
Comment("Accrete - Harmonic Beats");
return(0);
}
//+----End of Numerical Sequence Vibration code---------+
Comments