DDFX 9 Xtra Sig v3

Download script
Author: Copyright � 2006, TrendLaboratory Ltd.
DDFX 9 Xtra Sig v3

This technical indicator is designed to identify and visualize trend directions, specific entry points, and risk management levels on a trading chart. It functions by analyzing price action in relation to dynamic boundaries, providing users with visual cues for both the current trend status and potential reversal signals.

Core Logic and Functionality

Trend Identification and Dynamic Boundaries The script utilizes a modified version of Bollinger Bands as its foundational logic. Rather than simply observing standard volatility bands, it monitors the relationship between the closing price and these upper and lower boundaries to determine the prevailing market trend. When the price breaks above a specific boundary, the system recognizes an upward bias; conversely, when it breaks below, it identifies a downward bias.

Smart Filtering of Trend Transitions To prevent "whipsaws" (false signals caused by minor price fluctuations), the script includes a smoothing mechanism for these boundaries. It ensures that once a trend is established, the boundary lines do not retreat inward until a significant enough move occurs to invalidate the current direction. This creates more stable visual lines that represent the structural flow of the market.

Risk Management and Dynamic Pricing The tool incorporates a "Money Risk" variable which allows it to calculate specific price levels based on the width of the volatility bands. It mathematically derives unique price points for both upward and downward trends. These points are adjusted dynamically to help traders visualize potential stop-loss levels or target zones relative to the current market volatility.

Visual Signals and Alerts The indicator provides several visual outputs on the chart:

  • Trend Lines: Continuous lines that represent the current "path" of the market.
  • Signal Arrows: Specific markers that appear when a new trend signal is triggered, notifying the user of a potential change in momentum.
  • Stop Levels: Visual markers representing the calculated risk boundaries for the current trend.

User Notifications For active traders, the script includes an automated alert system. When a significant shift in the market trend is detected (moving from an upward bias to a downward bias or vice versa), the system can generate a real-time pop-up alert on the trading platform.

Summary for the Trader

Essentially, this tool acts as a sophisticated "trend tracker." It filters out market noise to show you the primary direction of price movement, provides calculated levels for managing risk based on current volatility, and paints clear visual signals to help you identify when the market is shifting from one state to another.

Indicators Used
Bollinger bands indicator
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
10 Views
0 Downloads
0 Favorites
DDFX 9 Xtra Sig v3
/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: http://purebeam.biz
   E-mail : purebeam@gmail.com
*/
#property copyright "Copyright © 2006, TrendLaboratory Ltd."
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Aqua
#property indicator_color2 Bisque
#property indicator_color3 Aqua
#property indicator_color4 Bisque
#property indicator_color5 Aqua
#property indicator_color6 Bisque

extern int Length = 26;
extern int Deviation = 1;
extern double MoneyRisk = 1.0;
extern int Signal = 2;
extern int Line = 0;
extern int Nbars = 8700;
double g_ibuf_104[];
double g_ibuf_108[];
double g_ibuf_112[];
double g_ibuf_116[];
double g_ibuf_120[];
double g_ibuf_124[];
extern bool SoundON = TRUE;
bool gi_132 = FALSE;
bool gi_136 = FALSE;

int init() {
   SetIndexBuffer(0, g_ibuf_104);
   SetIndexBuffer(1, g_ibuf_108);
   SetIndexBuffer(2, g_ibuf_112);
   SetIndexBuffer(3, g_ibuf_116);
   SetIndexBuffer(4, g_ibuf_120);
   SetIndexBuffer(5, g_ibuf_124);
   SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, 1);
   SetIndexStyle(4, DRAW_LINE);
   SetIndexStyle(5, DRAW_LINE);
   SetIndexArrow(0, 159);
   SetIndexArrow(1, 159);
   SetIndexArrow(2, 233);
   SetIndexArrow(3, 234);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
   string ls_0 = "Xtra Sig(" + Length + "," + Deviation + ")";
   IndicatorShortName(ls_0);
   SetIndexLabel(0, "UpTrend Stop");
   SetIndexLabel(1, "DownTrend Stop");
   SetIndexLabel(2, "UpTrend Signal");
   SetIndexLabel(3, "DownTrend Signal");
   SetIndexLabel(4, "UpTrend Line");
   SetIndexLabel(5, "DownTrend Line");
   SetIndexDrawBegin(0, Length);
   SetIndexDrawBegin(1, Length);
   SetIndexDrawBegin(2, Length);
   SetIndexDrawBegin(3, Length);
   SetIndexDrawBegin(4, Length);
   SetIndexDrawBegin(5, Length);
   return (0);
}

int start() {
   int li_8;
   double lda_12[25000];
   double lda_16[25000];
   double lda_20[25000];
   double lda_24[25000];
   for (int l_shift_4 = Nbars; l_shift_4 >= 0; l_shift_4--) {
      g_ibuf_104[l_shift_4] = 0;
      g_ibuf_108[l_shift_4] = 0;
      g_ibuf_112[l_shift_4] = 0;
      g_ibuf_116[l_shift_4] = 0;
      g_ibuf_120[l_shift_4] = EMPTY_VALUE;
      g_ibuf_124[l_shift_4] = EMPTY_VALUE;
   }
   for (l_shift_4 = Nbars - Length - 1; l_shift_4 >= 0; l_shift_4--) {
      lda_12[l_shift_4] = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_UPPER, l_shift_4);
      lda_16[l_shift_4] = iBands(NULL, 0, Length, Deviation, 0, PRICE_CLOSE, MODE_LOWER, l_shift_4);
      if (Close[l_shift_4] > lda_12[l_shift_4 + 1]) li_8 = 1;
      if (Close[l_shift_4] < lda_16[l_shift_4 + 1]) li_8 = -1;
      if (li_8 > 0 && lda_16[l_shift_4] < lda_16[l_shift_4 + 1]) lda_16[l_shift_4] = lda_16[l_shift_4 + 1];
      if (li_8 < 0 && lda_12[l_shift_4] > lda_12[l_shift_4 + 1]) lda_12[l_shift_4] = lda_12[l_shift_4 + 1];
      lda_20[l_shift_4] = lda_12[l_shift_4] + (MoneyRisk - 1.0) / 2.0 * (lda_12[l_shift_4] - lda_16[l_shift_4]);
      lda_24[l_shift_4] = lda_16[l_shift_4] - (MoneyRisk - 1.0) / 2.0 * (lda_12[l_shift_4] - lda_16[l_shift_4]);
      if (li_8 > 0 && lda_24[l_shift_4] < lda_24[l_shift_4 + 1]) lda_24[l_shift_4] = lda_24[l_shift_4 + 1];
      if (li_8 < 0 && lda_20[l_shift_4] > lda_20[l_shift_4 + 1]) lda_20[l_shift_4] = lda_20[l_shift_4 + 1];
      if (li_8 > 0) {
         if (Signal > 0 && g_ibuf_104[l_shift_4 + 1] == -1.0) {
            g_ibuf_112[l_shift_4] = lda_24[l_shift_4];
            g_ibuf_104[l_shift_4] = lda_24[l_shift_4];
            if (Line > 0) g_ibuf_120[l_shift_4] = lda_24[l_shift_4];
            if (SoundON == TRUE && l_shift_4 == 0 && !gi_132) {
               Alert("Xtra Sig going Up on ", Symbol(), "-", Period());
               gi_132 = TRUE;
               gi_136 = FALSE;
            }
         } else {
            g_ibuf_104[l_shift_4] = lda_24[l_shift_4];
            if (Line > 0) g_ibuf_120[l_shift_4] = lda_24[l_shift_4];
            g_ibuf_112[l_shift_4] = -1;
         }
         if (Signal == 2) g_ibuf_104[l_shift_4] = 0;
         g_ibuf_116[l_shift_4] = -1;
         g_ibuf_108[l_shift_4] = -1.0;
         g_ibuf_124[l_shift_4] = EMPTY_VALUE;
      }
      if (li_8 < 0) {
         if (Signal > 0 && g_ibuf_108[l_shift_4 + 1] == -1.0) {
            g_ibuf_116[l_shift_4] = lda_20[l_shift_4];
            g_ibuf_108[l_shift_4] = lda_20[l_shift_4];
            if (Line > 0) g_ibuf_124[l_shift_4] = lda_20[l_shift_4];
            if (SoundON == TRUE && l_shift_4 == 0 && !gi_136) {
               Alert("Xtra Sig going Down on ", Symbol(), "-", Period());
               gi_136 = TRUE;
               gi_132 = FALSE;
            }
         } else {
            g_ibuf_108[l_shift_4] = lda_20[l_shift_4];
            if (Line > 0) g_ibuf_124[l_shift_4] = lda_20[l_shift_4];
            g_ibuf_116[l_shift_4] = -1;
         }
         if (Signal == 2) g_ibuf_108[l_shift_4] = 0;
         g_ibuf_112[l_shift_4] = -1;
         g_ibuf_104[l_shift_4] = -1.0;
         g_ibuf_120[l_shift_4] = EMPTY_VALUE;
      }
   }
   return (0);
}

Comments