AutoEllipse.efs
File Name: AutoEllipse.efs
Description:
Displays an Advanced Get Ellipse automatically.
Formula Parameters:
NA
Notes:
** Please note this study requires a subscription to the Advanced Get Studies.
Download File:
AutoEllipse.efs
EFS Code:
function preMain() { checkVersion(2, "http://share.esignal.com/ContentRoot/PowerStation/MAG-EFS/AutoEllipse.efs"); addEntitlement("AGST", "Not entitled for Advanced GET Studies"); setStudyTitle("Auto Ellipse"); setPriceStudy(true); } var elliott = new GetElliottStudy(300, 0, 50, 5, 35, 0); var nLastMRW = null; // Last Most Recent Wave (used for reloading) var nLastMRWIndex = null; var arWaves = new Array(); var arWaveBar = new Array(); var bEllipsesDrawn = false; var dLastMRWHigh = null; var dLastMRWLow = null; function initWaves() { clearLineTool(LineTool.ELLIPSE); arWaves.length = 0; arWaveBar.length = 0; bEllipsesDrawn = false; } function dumpWaves() { debugPrintln("Dumping Waves"); var i; for(i = 0; i < arWaveBar.length; i++) { debugPrintln(" Wave[" + i + "]" + arWaves[i] + " Index: " + arWaveBar[i]); } } var WAVE_A = 7 var WAVE_B = 8 var WAVE_C = 9 var WAVENOTFOUND = 1; // this is a bar index function isABC(nWave) { nWave = Math.abs(nWave); if(nWave == 7 || nWave == 8 || nWave == 9) return true; return false; } function findPriorWave(nWave) { var i; if(arWaves.length == 0) return WAVENOTFOUND; var nStart = arWaves.length-1; nStart--; for(i = nStart; i >= 0; i--) { var nWaveBar = Math.abs(arWaves[i]); // If a 4 stop searching if(nWaveBar == 4 || nWaveBar == WAVE_A || nWaveBar == WAVE_B) return WAVENOTFOUND; if(nWaveBar == nWave) return arWaveBar[i]; } return WAVENOTFOUND; } function findPriorWaveABC(nWave) { var i; if(arWaves.length == 0) return WAVENOTFOUND; var nStart = arWaves.length-1; for(i = nStart; i >= 0; i--) { var nWaveBar = Math.abs(arWaves[i]); // If a 4 stop searching if(nWaveBar <= 5) return WAVENOTFOUND; if(nWave == WAVE_C && nWaveBar < WAVE_C) return WAVENOTFOUND; if(nWave == WAVE_B && nWaveBar < WAVE_B) return WAVENOTFOUND; if(nWaveBar == nWave) return arWaveBar[i]; } return WAVENOTFOUND; } function findCurrentWave(nWave) { if(arWaves.length == 0) return WAVENOTFOUND; var nStart = arWaves.length-1; var nWaveBar = Math.abs(arWaves[nStart]); if(nWaveBar == nWave) return arWaveBar[nStart]; return WAVENOTFOUND; } function findOnePriorWave(nWave) { if(arWaves.length < 2) return WAVENOTFOUND; var nStart = arWaves.length-1; var nWaveBar = Math.abs(arWaves[nStart-1]); if(nWaveBar == nWave) return arWaveBar[nStart-1]; return WAVENOTFOUND; } function FormatSI() { return getSymbol() + "," + getInterval(); } function main() { // What's the most recent wave? If it has changed since last remembered, reload the EFS. var nMRW = elliott.getValue(GetElliottStudy.MOSTRECENTWAVE); var nMRWIndex = elliott.getValue(GetElliottStudy.MOSTRECENTWAVEBARINDEX); if(nMRWIndex == null) return; if(getCurrentBarIndex() == 0) { if(nLastMRW == null) { nLastMRW = nMRW; nLastMRWIndex = nMRWIndex; dLastMRWHigh = high(nMRWIndex); dLastMRWLow = low(nMRWIndex); } else if(nLastMRW != nMRW || nMRWIndex > nLastMRWIndex || low(nMRWIndex) != dLastMRWLow || high(nMRWIndex) != dLastMRWHigh) { nLastMRW = null; nLastMRWIndex = null; dLastMRWHigh = null; dLastMRWLow = null; // Alert.playSound("krtechop.wav"); // Alert.playSound("Pairing.wav"); // Alert.addToList(FormatSI(), "Elliott Wave Change"); reloadEFS(); return; } else { nLastMRWIndex = nMRWIndex; dLastMRWHigh = high(nMRWIndex); dLastMRWLow = low(nMRWIndex); } } var nBarState = getBarState(); // If ALLBARS, init the wave arrays and vars. // If newbar, shift the bar indexes if(nBarState == BARSTATE_ALLBARS) { initWaves(); } else if(nBarState == BARSTATE_NEWBAR) { // Get the current wave for a specific bar and add the wave and bar to the arrays var nWave = elliott.getValue(GetElliottStudy.WAVE); if(nWave != null) { arWaves.push(nWave); arWaveBar.push(getCurrentBarIndex()); } } // If on the most recent bar and the ellipses haven't been drawn, search for them // and draw them. // Should the MRW change, a reload will occur and this will re-execute. if(bEllipsesDrawn == false && getCurrentBarIndex() == 0) { bEllipsesDrawn = true; // debugPrintln("---- CurWave: " + nMRW); // dumpWaves(); if(Math.abs(nMRW) == 4) { // If in a W4, do W2/W3, and W5/W3. var nBar4 = findCurrentWave(4); var nBar2 = findPriorWave(2); var nBar3 = findPriorWave(3); var nBar5 = findPriorWave(5); var nBarC = findPriorWave(WAVE_C); // debugPrintln("Bar2: " + nBar2); // debugPrintln("Bar3: " + nBar3); // debugPrintln("Bar5: " + nBar5); // debugPrintln("BarC: " + nBarC); if(nBar5 != WAVENOTFOUND && nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar5, nBar3, "5/3"); } else if(nBarC != WAVENOTFOUND && nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBarC, nBar3, "C/3"); } if(nBar2 != WAVENOTFOUND && nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar2, nBar3, "2/3"); } if(nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar3, nBar4, "3/4"); } } else if(Math.abs(nMRW) == 3) { // If in a W4, do W2/W3, and W5/W3. var nBar3 = findCurrentWave(3); var nBar2 = findPriorWave(2); var nBar5 = findPriorWave(5); var nBarC = findPriorWave(WAVE_C); // debugPrintln("Bar2: " + nBar2); // debugPrintln("Bar3: " + nBar3); // debugPrintln("Bar5: " + nBar5); // debugPrintln("BarC: " + nBarC); if(nBar5 != WAVENOTFOUND && nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar5, nBar3, "5/3"); } else if(nBarC != WAVENOTFOUND && nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBarC, nBar3, "C/3"); } if(nBar2 != WAVENOTFOUND && nBar3 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar2, nBar3, "2/3"); } } else if(Math.abs(nMRW) == WAVE_C) { // If in a C, A/B, B/C var nBarA = findPriorWaveABC(WAVE_A); var nBarB = findPriorWaveABC(WAVE_B); var nBarC = findCurrentWave(WAVE_C); var nBar4 = findOnePriorWave(4); // debugPrintln("BarA: " + nBarA); // debugPrintln("BarB: " + nBarB); // debugPrintln("BarC: " + nBarC); // debugPrintln("Bar4: " + nBar4); if(nBar4 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar4, nBarC, "4/C"); // 4->C (aka 4->5) } else if(nBarA != WAVENOTFOUND && nBarB != WAVENOTFOUND) { // If BarB is WAVENOTFOUND then B & C are on the same bar. addLineTool(LineTool.ELLIPSE, nBarA, nBarB, "A/B"); addLineTool(LineTool.ELLIPSE, nBarB, nBarC, "B/C"); } } else if(Math.abs(nMRW) == 5) { // projecting the W3? // If in a W5, W4/W5 var nBar4 = findOnePriorWave(4); var nBar5 = findCurrentWave(5); if(nBar4 != WAVENOTFOUND) { addLineTool(LineTool.ELLIPSE, nBar4, nBar5, "4/5"); } // debugPrintln("Bar4: " + nBar4); // debugPrintln("Bar5: " + nBar5); } } return; }