I have been working on an EFS to automatically draw my Fib retracements and extentions. I have a successful EFS and will post it below, but I am having trouble with something.
Right now, the EFS will draw lines based on the previous days high and low. However, if the current day open is above the previous day high, I want the high of the first 15 minute candle to act as yesterday's high in the calculation of the fib lines. So, in this instance, it would draw fib lines from the previous day low to the opening range high (15 min candle).
I also want to do the opposite. If the open is lower than the previous day low, draw fib lines from the previous day high to the opening range low (15 min candle).
I am trying to make this so that I can just scroll through a bunch of charts and it will already draw it for me based on these conditions. This way it won't matter if today's open is within yesterday's range or gap up or down, it just automatically draws it.
I am a third of the way there and any help or guidance is greatly appreciated.
Thanks,
Tyler
function preMain() {
setPriceStudy(true);
setStudyTitle("Auto Fib");
setCursorLabelName("Prev High 2", 0);
setCursorLabelName("Prev High 1.618", 1);
setCursorLabelName("Prev High 1.5", 2);
setCursorLabelName("Prev High 1.382", 3);
setCursorLabelName("Prev High", 4);
setCursorLabelName("Fib .618", 5);
setCursorLabelName("Fib .5", 6);
setCursorLabelName("Fib .382", 7);
setCursorLabelName("Prev Low", 8);
setCursorLabelName("Prev Low 1.382", 9);
setCursorLabelName("Prev Low 1.5", 10);
setCursorLabelName("Prev Low 1.618", 11);
setCursorLabelName("Prev Low 2", 12);
// Prev High 2
setDefaultBarStyle(PS_SOLID, 0);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High 1.618
setDefaultBarStyle(PS_SOLID, 1);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High 1.5
setDefaultBarStyle(PS_SOLID, 2);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High 1.382
setDefaultBarStyle(PS_SOLID, 3);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High
setDefaultBarStyle(PS_DASH, 4);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Fib .618
setDefaultBarStyle(PS_SOLID, 5);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Fib .5
setDefaultBarStyle(PS_SOLID, 6);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Fib .382
setDefaultBarStyle(PS_SOLID, 7);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low
setDefaultBarStyle(PS_DASH, 8);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 1.382
setDefaultBarStyle(PS_SOLID, 9);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 1.5
setDefaultBarStyle(PS_SOLID, 10);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 1.618
setDefaultBarStyle(PS_SOLID, 11);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 2
setDefaultBarStyle(PS_SOLID, 12);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
}
var bInit = false;
var xHigh = null;
var xLow = null;
var vPH0 = null;
var vPH1 = null;
var vPH2 = null;
var vPH3 = null;
var vPH4 = null;
var vPH5 = null;
var vPH6 = null;
var vPH7 = null;
var vPH8 = null;
var vPH9 = null;
var vPH10 = null;
var vPH11 = null;
var vPH12 = null;
function main() {
if(isMonthly() || isWeekly() || isDaily())
return;
if(bInit == false){
xHigh = high(inv("D"));
xLow = low(inv("D"));
bInit = true;
}
var vHigh = xHigh.getValue(-1);
var vLow = xLow.getValue(-1);
if(vHigh == null || vLow == null)
return;
vPH0 = (xHigh.getValue(-1)-xLow.getValue(-1))*1+xHigh.getValue(-1);
vPH1 = (xHigh.getValue(-1)-xLow.getValue(-1))*.618+xHigh.getValue(-1);
vPH2 = (xHigh.getValue(-1)-xLow.getValue(-1))*.5+xHigh.getValue(-1);
vPH3 = (xHigh.getValue(-1)-xLow.getValue(-1))*.382+xHigh.getValue(-1);
vPH4 = xHigh.getValue(-1);
vPH5 = xLow.getValue(-1)+((xHigh.getValue(-1)-xLow.getValue(-1))*.618);
vPH6 = xLow.getValue(-1)+((xHigh.getValue(-1)-xLow.getValue(-1))*.5);
vPH7 = xLow.getValue(-1)+((xHigh.getValue(-1)-xLow.getValue(-1))*.382);
vPH8 = xLow.getValue(-1);
vPH9 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*.382);
vPH10 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*.5);
vPH11 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*.618);
vPH12 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*1);
return new Array(vPH0, vPH1, vPH2, vPH3, vPH4, vPH5, vPH6, vPH7, vPH8, vPH9, vPH10, vPH11, vPH12);
}
Right now, the EFS will draw lines based on the previous days high and low. However, if the current day open is above the previous day high, I want the high of the first 15 minute candle to act as yesterday's high in the calculation of the fib lines. So, in this instance, it would draw fib lines from the previous day low to the opening range high (15 min candle).
I also want to do the opposite. If the open is lower than the previous day low, draw fib lines from the previous day high to the opening range low (15 min candle).
I am trying to make this so that I can just scroll through a bunch of charts and it will already draw it for me based on these conditions. This way it won't matter if today's open is within yesterday's range or gap up or down, it just automatically draws it.
I am a third of the way there and any help or guidance is greatly appreciated.
Thanks,
Tyler
function preMain() {
setPriceStudy(true);
setStudyTitle("Auto Fib");
setCursorLabelName("Prev High 2", 0);
setCursorLabelName("Prev High 1.618", 1);
setCursorLabelName("Prev High 1.5", 2);
setCursorLabelName("Prev High 1.382", 3);
setCursorLabelName("Prev High", 4);
setCursorLabelName("Fib .618", 5);
setCursorLabelName("Fib .5", 6);
setCursorLabelName("Fib .382", 7);
setCursorLabelName("Prev Low", 8);
setCursorLabelName("Prev Low 1.382", 9);
setCursorLabelName("Prev Low 1.5", 10);
setCursorLabelName("Prev Low 1.618", 11);
setCursorLabelName("Prev Low 2", 12);
// Prev High 2
setDefaultBarStyle(PS_SOLID, 0);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High 1.618
setDefaultBarStyle(PS_SOLID, 1);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High 1.5
setDefaultBarStyle(PS_SOLID, 2);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High 1.382
setDefaultBarStyle(PS_SOLID, 3);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev High
setDefaultBarStyle(PS_DASH, 4);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Fib .618
setDefaultBarStyle(PS_SOLID, 5);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Fib .5
setDefaultBarStyle(PS_SOLID, 6);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Fib .382
setDefaultBarStyle(PS_SOLID, 7);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low
setDefaultBarStyle(PS_DASH, 8);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 1.382
setDefaultBarStyle(PS_SOLID, 9);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 1.5
setDefaultBarStyle(PS_SOLID, 10);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 1.618
setDefaultBarStyle(PS_SOLID, 11);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
// Prev Low 2
setDefaultBarStyle(PS_SOLID, 12);
setDefaultBarFgColor(Color.blue);
setDefaultBarThickness(1);
setPlotType(PLOTTYPE_FLATLINES);
}
var bInit = false;
var xHigh = null;
var xLow = null;
var vPH0 = null;
var vPH1 = null;
var vPH2 = null;
var vPH3 = null;
var vPH4 = null;
var vPH5 = null;
var vPH6 = null;
var vPH7 = null;
var vPH8 = null;
var vPH9 = null;
var vPH10 = null;
var vPH11 = null;
var vPH12 = null;
function main() {
if(isMonthly() || isWeekly() || isDaily())
return;
if(bInit == false){
xHigh = high(inv("D"));
xLow = low(inv("D"));
bInit = true;
}
var vHigh = xHigh.getValue(-1);
var vLow = xLow.getValue(-1);
if(vHigh == null || vLow == null)
return;
vPH0 = (xHigh.getValue(-1)-xLow.getValue(-1))*1+xHigh.getValue(-1);
vPH1 = (xHigh.getValue(-1)-xLow.getValue(-1))*.618+xHigh.getValue(-1);
vPH2 = (xHigh.getValue(-1)-xLow.getValue(-1))*.5+xHigh.getValue(-1);
vPH3 = (xHigh.getValue(-1)-xLow.getValue(-1))*.382+xHigh.getValue(-1);
vPH4 = xHigh.getValue(-1);
vPH5 = xLow.getValue(-1)+((xHigh.getValue(-1)-xLow.getValue(-1))*.618);
vPH6 = xLow.getValue(-1)+((xHigh.getValue(-1)-xLow.getValue(-1))*.5);
vPH7 = xLow.getValue(-1)+((xHigh.getValue(-1)-xLow.getValue(-1))*.382);
vPH8 = xLow.getValue(-1);
vPH9 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*.382);
vPH10 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*.5);
vPH11 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*.618);
vPH12 = xLow.getValue(-1)-((xHigh.getValue(-1)-xLow.getValue(-1))*1);
return new Array(vPH0, vPH1, vPH2, vPH3, vPH4, vPH5, vPH6, vPH7, vPH8, vPH9, vPH10, vPH11, vPH12);
}
Comment