TudorGirl_Vorticity_2_001

Download script
Author: Copyright � 2009, Anne
TudorGirl_Vorticity_2_001

This technical indicator, identified as the "TudorGirl Hydrodynamic Vorticity 2.0a," is designed to analyze price action on a trading chart to identify specific momentum shifts or "vortices" in market sentiment. Instead of plotting a continuous line, it functions as a visual signaling tool that provides clear cues based on mathematical fluctuations in price relative to recent extremes.

Core Logic and Methodology

The underlying logic operates by evaluating the position of the current price relative to its historical highs and lows over a specific look-back period. Here is a breakdown of how the system processes this data:

1. Range Identification The script first scans a defined window of past candles (the "look-back" period) to identify the highest peak and the lowest valley. By establishing these boundaries, the tool creates a frame of reference for the current market environment.

2. Relative Position Calculation It determines where the current price sits within that high-low range. Specifically, it calculates the midpoint of the current candle's price action and measures how far it deviates from the established floor (the low) and ceiling (the high). This tells the indicator whether the price is currently "crowded" near a resistance level, "stretched" near a support level, or sitting neutrally in the middle.

3. Momentum Smoothing and Normalization To prevent the signals from reacting too erratically to minor price flickers, the script applies a smoothing calculation. It blends the current relative position with its own previous calculations, creating a weighted flow of movement. This ensures that the "vorticity" or momentum is treated as a continuous flow rather than a series of disconnected jumps.

4. Logarithmic Transformation The indicator then performs a mathematical conversion (a logarithmic transformation) on this smoothed data. This step is crucial because it helps linearize the market's movement, making it easier to identify the transition points where momentum shifts from one direction to another. It essentially "stretches" the data to highlight the intensity of the move.

Visual Output and Signaling

Once the final calculation is complete, the indicator translates these complex numbers into simple visual signals on your trading platform:

  • Upward Signal: When the calculated momentum value crosses into positive territory (indicating a bullish shift or upward vorticity), the script places a specific symbol (an upward arrow/WingDing) on the chart.
  • Downward Signal: When the value drops into negative territory (indicating a bearish shift or downward vorticity), it places a corresponding symbol (a downward arrow/WingDing).

By focusing on these crossover points, the tool aims to filter out market "noise" and highlight the moments where price movement gains enough velocity to suggest a change in the prevailing trend.

Miscellaneous
Implements a curve of type %1
20 Views
0 Downloads
0 Favorites
TudorGirl_Vorticity_2_001
/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2009, Anne"
#property link      "http://xxx"

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_maximum 2.0
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

int gi_76 = 8;
extern int WingDingUp = 110;
extern int WingDingDn = 110;
double g_ibuf_88[];
double g_ibuf_92[];

int init() {
   IndicatorBuffers(3);
   SetIndexBuffer(0, g_ibuf_88);
   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, WingDingUp);
   SetIndexBuffer(1, g_ibuf_92);
   SetIndexStyle(1, DRAW_ARROW, EMPTY);
   SetIndexArrow(1, WingDingDn);
   IndicatorShortName("TudorGirl Hydrodynamic Vorticity 2.0a");
   return (0);
}

int start() {
   double ld_40;
   int li_4 = IndicatorCounted();
   double ld_8 = 0;
   double ld_16 = 0;
   double ld_24 = 0;
   double ld_32 = 0;
   double l_low_48 = 0;
   double l_high_56 = 0;
   if (li_4 > 0) li_4--;
   int li_0 = Bars - li_4;
   for (int li_64 = 0; li_64 < li_0; li_64++) {
      l_high_56 = High[iHighest(NULL, 0, MODE_HIGH, gi_76, li_64)];
      l_low_48 = Low[iLowest(NULL, 0, MODE_LOW, gi_76, li_64)];
      ld_40 = (High[li_64] + Low[li_64]) / 2.0;
      ld_8 = 0.66 * ((ld_40 - l_low_48) / (l_high_56 - l_low_48) - 0.5) + 0.67 * ld_16;
      ld_8 = MathMin(MathMax(ld_8, -0.999), 0.999);
      ld_24 = MathLog((ld_8 + 1.0) / (1 - ld_8)) / 2.0 + ld_32 / 2.0;
      ld_16 = ld_8;
      ld_32 = ld_24;
      if (ld_24 > 0.0) {
         g_ibuf_88[li_64] = 1.0;
         g_ibuf_92[li_64] = EMPTY_VALUE;
      } else {
         g_ibuf_92[li_64] = 1.0;
         g_ibuf_88[li_64] = EMPTY_VALUE;
      }
   }
   return (0);
}

Comments