AutoDayFibsWhiteKnight_v1
Download scriptThe AutoDayFibs script is a specialized tool designed to automatically identify and plot key Fibonacci retracement levels based on historical daily price movements. Instead of requiring the user to manually identify peaks and troughs, the script automates this process by looking back at specific timeframes to define the trading range.
Core Operational Logic
1. Data Identification The script begins by scanning the market's historical data to find the "High" and "Low" prices from a specific number of days in the past (as defined by the user settings). By identifying these two points, the script establishes the total price range for that period.
2. Dynamic Directional Detection A key feature of this logic is its ability to determine the "flow" of the market. The script checks which price point—the high or the low—was reached first during the specified period. This allows the tool to understand if the move was primarily upward or downward, ensuring that the resulting Fibonacci levels are oriented correctly according to the trend.
3. Automated Calculation Once the range and direction are established, the script performs a series of mathematical calculations to determine various significant price levels. It automatically generates several standard and extended Fibonacci levels, including:
- Standard Retracements: 23.6%, 38.2%, 50.0%, and 61.8%.
- Extended Projections: 161.8%, 261.8%, and 423.6%.
4. Visual Rendering The script then takes these calculated values and draws them directly onto your trading chart as horizontal lines. To keep the interface clean and readable:
- It automatically labels each line with its corresponding Fibonacci percentage.
- It uses a distinct "dash-dot" visual style and a consistent color (Orange) to ensure they stand out clearly against the price action.
- The script includes a "cleanup" mechanism; if the price range changes (e.g., moving to a new day or period), it automatically removes the old lines and draws the new ones, ensuring your chart always reflects the most relevant data.
Summary for the User
In simple terms, this tool saves you the manual labor of drawing Fibonacci grids. You tell it how many days back to look, and it automatically finds the highs and lows, determines the trend direction, and paints the most important support and resistance levels on your screen instantly.
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| AutoDayFibs V1.0 |
//| |
//| Copyright © 2005, Jason Robinson |
//| (jasonrobinsonuk, jnrtrading) |
//| http://www.jnrtrading.co.uk |
//| |
//| Created by jnrtrading |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Jason Robinson (jnrtrading)"
#property link "http://www.jnrtrading.co.uk"
#property indicator_chart_window
extern int daysBackForHigh = 1;
extern int daysBackForLow = 1;
//---- buffers
double Rates[][6];
double fib000,
fib236,
fib382,
fib50,
fib618,
fib100,
fib1618,
fib2618,
fib4236,
range,
prevRange,
high,
low;
bool objectsExist, highFirst;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//prevRange = 0;
//objectsExist = false;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("fib000");
ObjectDelete("fib000_label");
ObjectDelete("fib236");
ObjectDelete("fib236_label");
ObjectDelete("fib382");
ObjectDelete("fib382_label");
ObjectDelete("fib50");
ObjectDelete("fib50_label");
ObjectDelete("fib618");
ObjectDelete("fib618_label");
ObjectDelete("fib100");
ObjectDelete("fib100_label");
ObjectDelete("fib1618");
ObjectDelete("fib1618_label");
ObjectDelete("fib2618");
ObjectDelete("fib2618_label");
ObjectDelete("fib4236");
ObjectDelete("fib4236_label");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i = 0;
//----
//Print(prevRange);
ArrayCopyRates(Rates, Symbol(), PERIOD_D1);
high = Rates[daysBackForHigh][3];
low = Rates[daysBackForLow][2];
range = high - low;
while(true) {
if(High[i] == high) {
highFirst = true;
break;
}
else if(Low[i] == low) {
highFirst = false;
break;
}
i++;
}
//Print(highFirst);
// Delete Objects if necessary
if (prevRange != range) {
ObjectDelete("fib000");
ObjectDelete("fib000_label");
ObjectDelete("fib236");
ObjectDelete("fib236_label");
ObjectDelete("fib382");
ObjectDelete("fib382_label");
ObjectDelete("fib50");
ObjectDelete("fib50_label");
ObjectDelete("fib618");
ObjectDelete("fib618_label");
ObjectDelete("fib100");
ObjectDelete("fib100_label");
ObjectDelete("fib1618");
ObjectDelete("fib1618_label");
ObjectDelete("fib2618");
ObjectDelete("fib2618_label");
ObjectDelete("fib4236");
ObjectDelete("fib4236_label");
objectsExist = false;
prevRange = range;
//Print("Objects do not exist");
}
if (highFirst == true) {
fib000 = low;
fib236 = (range * 0.236) + low;
fib382 = (range * 0.382) + low;
fib50 = (high + low) / 2;
fib618 = (range * 0.618) + low;
fib100 = high;
fib1618 = (range * 0.618) + high;
fib2618 = (range * 0.618) + (high + range);
fib4236 = (range * 0.236) + high + (range * 3);
}
else if (highFirst == false) {
fib000 = high;
fib236 = high - (range * 0.236);
fib382 = high - (range * 0.382);
fib50 = (high + low) / 2;
fib618 = high - (range * 0.618);
fib100 = low;
fib1618 = low - (range * 0.618);
fib2618 = (low - range) - (range * 0.618);// + (high + range);
fib4236 = low - (range * 3) - (range * 0.236);// + high + (range * 3);
}
if (objectsExist == false) {
ObjectCreate("fib000", OBJ_HLINE, 0, Time[40], fib000);
ObjectSet("fib000", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib000", OBJPROP_COLOR, Orange);
ObjectCreate("fib000_label", OBJ_TEXT, 0, Time[0], fib000);
ObjectSetText("fib000_label"," 0.0", 8, "Times", White);
ObjectCreate("fib236", OBJ_HLINE, 0, Time[40], fib236);
ObjectSet("fib236", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib236", OBJPROP_COLOR, Orange);
ObjectCreate("fib236_label", OBJ_TEXT, 0, Time[0], fib236);
ObjectSetText("fib236_label"," 23.6", 8, "Times", White);
ObjectCreate("fib382", OBJ_HLINE, 0, Time[40], fib382);
ObjectSet("fib382", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib382", OBJPROP_COLOR, Orange);
ObjectCreate("fib382_label", OBJ_TEXT, 0, Time[0], fib382);
ObjectSetText("fib382_label"," 38.2", 8, "Times", White);
ObjectCreate("fib50", OBJ_HLINE, 0, Time[40], fib50);
ObjectSet("fib50", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib50", OBJPROP_COLOR, Orange);
ObjectCreate("fib50_label", OBJ_TEXT, 0, Time[0], fib50);
ObjectSetText("fib50_label"," 50.0", 8, "Times", White);
ObjectCreate("fib618", OBJ_HLINE, 0, Time[40], fib618);
ObjectSet("fib618", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib618", OBJPROP_COLOR, Orange);
ObjectCreate("fib618_label", OBJ_TEXT, 0, Time[0], fib618);
ObjectSetText("fib618_label"," 61.8", 8, "Times", White);
ObjectCreate("fib100", OBJ_HLINE, 0, Time[40], fib100);
ObjectSet("fib100", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib100", OBJPROP_COLOR, Orange);
ObjectCreate("fib100_label", OBJ_TEXT, 0, Time[0], fib100);
ObjectSetText("fib100_label"," 100.0", 8, "Times", White);
ObjectCreate("fib1618", OBJ_HLINE, 0, Time[40], fib1618);
ObjectSet("fib1618", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib1618", OBJPROP_COLOR, Orange);
ObjectCreate("fib1618_label", OBJ_TEXT, 0, Time[0], fib1618);
ObjectSetText("fib1618_label"," 161.8", 8, "Times", White);
ObjectCreate("fib2618", OBJ_HLINE, 0, Time[40], fib2618);
ObjectSet("fib2618", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib2618", OBJPROP_COLOR, Orange);
ObjectCreate("fib2618_label", OBJ_TEXT, 0, Time[0], fib2618);
ObjectSetText("fib2618_label"," 261.8", 8, "Times", White);
ObjectCreate("fib4236", OBJ_HLINE, 0, Time[40], fib4236);
ObjectSet("fib4236", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib4236", OBJPROP_COLOR, Orange);
ObjectCreate("fib4236_label", OBJ_TEXT, 0, Time[0], fib4236);
ObjectSetText("fib4236_label"," 423.6", 8, "Times", White);
//Print("Objects Exist");
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments