Entropy.efs
EFSLibrary - Discussion Board
File Name: Entropy.efs
Description:
This study is based on the Nov 2006 article, Entropic Analysis of Equity Prices, by Ron McEwan for the August 2007 issue.
Formula Parameters:
- Period: 30
- Color: blue
- Thickness: 2
Notes:
The study is a non-price study by default. To overlay the study on the price window, hold down the Shift key and then drag and drop the indicator pane onto the price window. The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.
Download File:
Entropy.efs
EFS Code:
/*************************************** Provided By : eSignal (Copyright © eSignal), a division of Interactive Data Corporation. 2007. All rights reserved. This sample eSignal Formula Script (EFS) is for educational purposes only and may be modified and saved under a new file name. eSignal is not responsible for the functionality once modified. eSignal reserves the right to modify and overwrite this EFS file with each new release. Description: Entropic Analysis of Equity Prices by Ron McEwan Version 1.0 6/11/2007 Notes: * Code provided for Aug 2007 Issue of Stocks and Commodities Magazine based on McEwan's article from the Nov 2006 issue. * Study requires version 8.0 or later. Formula Parameters: Default: Period 30 Color blue Thickness 2 ***************************************/ function preMain() { setStudyTitle("Entropy Indicator "); setShowTitleParameters(false); setCursorLabelName("Entropy", 0); addBand(0.5, PS_SOLID, 2, Color.red, "band"); var fp1 = new FunctionParameter("nP", FunctionParameter.NUMBER); fp1.setName("Periods"); fp1.setLowerLimit(1); fp1.setDefault(30); var fp2 = new FunctionParameter("cColor", FunctionParameter.COLOR); fp2.setName("Color"); fp2.setDefault(Color.blue); var fp3 = new FunctionParameter("nThick", FunctionParameter.NUMBER); fp3.setName("Thickness"); fp3.setLowerLimit(1); fp3.setDefault(2); } // Global Variables var bVersion = null; // Version flag var bInit = false; // Initialization flag var xLn = null; var xAvg = null; var xRms = null; var xP = null; function main(nP, cColor, nThick) { if (bVersion == null) bVersion = verify(); if (bVersion == false) return; //Initialization if (bInit == false) { setDefaultBarFgColor(cColor, 0); setDefaultBarThickness(nThick, 0); xLn = efsInternal("calcLn"); xAvg = sma(nP, xLn); xRms = efsInternal("calcRms", xLn, nP); xP = efsInternal("calcP", xAvg, xRms); bInit = true; } var n = xP.getValue(0); if (n == null) return; return n; } function calcLn() { var c0 = close(0); var c1 = close(-1); if (c1 == null) return; return Math.log(c0/c1); } function calcRms(x, n) { if (x.getValue(-n) == null) return; var nSumSQ = 0; for (var i = 0; i < n; i++) { nSumSQ += Math.pow(x.getValue(-i), 2); } var nRms = Math.pow((nSumSQ / n), 0.5); return nRms; } function calcP(_xAvg, _xRms) { var nAvg0 = _xAvg.getValue(0); var nRms0 = _xRms.getValue(0); if (nAvg0 == null || nRms0 == null) return; return ((nAvg0 / nRms0) + 1) / 2; } function verify() { var b = false; if (getBuildNumber() < 779) { drawTextAbsolute(5, 35, "This study requires version 8.0 or later.", Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT, null, 13, "error"); drawTextAbsolute(5, 20, "Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp", Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT, null, 13, "upgrade"); return b; } else { b = true; } return b; }