AutoDayFibsWhiteKnightv2_v1
Download scriptThe AutoDayFibs V1.0 script is designed to automate the plotting of Fibonacci retracement levels on your trading chart based on historical daily price action. Instead of requiring you to manually identify highs and lows and draw lines, this tool identifies specific price points from previous days and projects them visually onto your current screen.
Core Functionality
The logic follows a structured three-step process to ensure the data remains relevant to current market conditions:
1. Data Identification The script looks back at a set number of previous days (which can be customized in the settings) to identify two critical price points: the highest price reached and the lowest price reached during that timeframe. By calculating the difference between these two points, it establishes the "trading range."
2. Dynamic Directional Logic One of the key features of this script is its ability to recognize the direction of the market movement. It automatically determines whether the price hit a high first or a low first during the period. This distinction is vital because it dictates how the Fibonacci levels are calculated:
- If the price moved upward primarily, the script anchors the levels accordingly.
- If the price moved downward primarily, the script flips the calculation to reflect that trend.
3. Automated Visualization Once the range and direction are established, the script performs the following actions:
- Automatic Updates: It checks if the trading range has changed since the last calculation. If it detects a new high or low, it clears the old lines and draws fresh ones to ensure your chart is always current.
- Precision Plotting: It plots several key Fibonacci levels (including 23.6, 38.2, 50.0, 61.8, 100.0, 161.8, 261.8, and 4236) as horizontal lines.
- Clear Labeling: To make the chart easy to read, it attaches text labels to each line, clearly marking which Fibonacci level you are looking at.
User Experience Summary
For a trader, this means you no longer have to do the "heavy lifting" of manual calculations. The script handles the math of identifying daily ranges, detects whether the market is trending up or down, and instantly updates your visual workspace with accurate, color-coded levels that help you identify potential support and resistance zones.
/*-----------------------------+
| |
| 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;
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