AutoDayFibsWhiteKnightv2
Download scriptThis tool is designed to automatically calculate and display Fibonacci retracement levels on your trading chart based on historical daily price data. Instead of requiring you to manually select high and low points, the script performs these calculations for you in real-time.
Core Functionality
Dynamic Price Detection The script looks back at a specific number of days (based on your settings) to identify the highest and lowest price points reached. By identifying these boundaries, it establishes the total "range" of the market movement for that period.
Automatic Trend Recognition The logic intelligently determines the direction of the price movement:
- If the high occurred before the low, it calculates the Fibonacci levels based on an upward trend.
- If the low occurred before the high, it adjusts the calculations to reflect a downward trend. This ensures that the resulting lines remain accurate regardless of whether the market was trending up or down.
Automated Level Projection Once the range and direction are established, the script automatically plots several key Fibonacci levels on your screen:
- Standard Retracements: Includes common levels like 23.6, 38.2, 50.0, and 61.8.
- Extended Projections: It also calculates "extension" levels (such as 161.8, 261.8, and 423.6) to help identify potential future price targets.
Visual Management To keep your chart clean and professional:
- Dynamic Updates: The script automatically removes old lines and redraws new ones whenever the price range changes. This prevents "clutter" from previous days' data.
- Clear Labeling: Every horizontal line is accompanied by a text label, making it easy to identify which Fibonacci level you are looking at instantly.
- Customizable Styling: You can easily adjust the colors of the lines and labels within the settings to match your personal trading workspace.
How it helps your trading
By automating the math behind these levels, the tool removes the guesswork from identifying support and resistance zones. It provides a consistent visual map of where price might stall or reverse, allowing you to focus on strategy rather than manual calculations.
//+------------------------------------------------------------------+
//| 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;
extern color LabelColor = White;
extern color LineColor = Orange;
//---- 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, LineColor);
ObjectCreate("fib000_label", OBJ_TEXT, 0, Time[0], fib000);
ObjectSetText("fib000_label"," 0.0", 8, "Times", LabelColor);
ObjectCreate("fib236", OBJ_HLINE, 0, Time[40], fib236);
ObjectSet("fib236", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib236", OBJPROP_COLOR, LineColor);
ObjectCreate("fib236_label", OBJ_TEXT, 0, Time[0], fib236);
ObjectSetText("fib236_label"," 23.6", 8, "Times", LabelColor);
ObjectCreate("fib382", OBJ_HLINE, 0, Time[40], fib382);
ObjectSet("fib382", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib382", OBJPROP_COLOR, LineColor);
ObjectCreate("fib382_label", OBJ_TEXT, 0, Time[0], fib382);
ObjectSetText("fib382_label"," 38.2", 8, "Times", LabelColor);
ObjectCreate("fib50", OBJ_HLINE, 0, Time[40], fib50);
ObjectSet("fib50", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib50", OBJPROP_COLOR, LineColor);
ObjectCreate("fib50_label", OBJ_TEXT, 0, Time[0], fib50);
ObjectSetText("fib50_label"," 50.0", 8, "Times", LabelColor);
ObjectCreate("fib618", OBJ_HLINE, 0, Time[40], fib618);
ObjectSet("fib618", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib618", OBJPROP_COLOR, LineColor);
ObjectCreate("fib618_label", OBJ_TEXT, 0, Time[0], fib618);
ObjectSetText("fib618_label"," 61.8", 8, "Times", LabelColor);
ObjectCreate("fib100", OBJ_HLINE, 0, Time[40], fib100);
ObjectSet("fib100", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib100", OBJPROP_COLOR, LineColor);
ObjectCreate("fib100_label", OBJ_TEXT, 0, Time[0], fib100);
ObjectSetText("fib100_label"," 100.0", 8, "Times", LabelColor);
ObjectCreate("fib1618", OBJ_HLINE, 0, Time[40], fib1618);
ObjectSet("fib1618", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib1618", OBJPROP_COLOR, LineColor);
ObjectCreate("fib1618_label", OBJ_TEXT, 0, Time[0], fib1618);
ObjectSetText("fib1618_label"," 161.8", 8, "Times", LabelColor);
ObjectCreate("fib2618", OBJ_HLINE, 0, Time[40], fib2618);
ObjectSet("fib2618", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib2618", OBJPROP_COLOR, LineColor);
ObjectCreate("fib2618_label", OBJ_TEXT, 0, Time[0], fib2618);
ObjectSetText("fib2618_label"," 261.8", 8, "Times", LabelColor);
ObjectCreate("fib4236", OBJ_HLINE, 0, Time[40], fib4236);
ObjectSet("fib4236", OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("fib4236", OBJPROP_COLOR, LineColor);
ObjectCreate("fib4236_label", OBJ_TEXT, 0, Time[0], fib4236);
ObjectSetText("fib4236_label"," 423.6", 8, "Times", LabelColor);
//Print("Objects Exist");
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments