File Name: ABillW_AC.efs

Description:
Bill Williams. Awesome Oscillator (AC)

Formula Parameters:
nLengthSlow : 34
nLengthFast : 5


Notes:
This indicator plots the oscillator as a histogram where blue denotes
periods suited for buying and red . for selling. If the current value
of AO (Awesome Oscillator) is above previous, the period is considered
suited for buying and the period is marked blue. If the AO value is not
above previous, the period is considered suited for selling and the
indicator marks it as red.


Download File:
ABillW_AC.efs



EFS Code:
PHP Code:
/*********************************
Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data 
    Corporation. 2009. 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:        
    Bill Williams. Awesome Oscillator (AC)

Version:            1.0  03/27/2009

Formula Parameters:                     Default:
    nLengthSlow                         34
    nLengthFast                         5

Notes:
    This indicator plots the oscillator as a histogram where blue denotes 
    periods suited for buying and red . for selling. If the current value 
    of AO (Awesome Oscillator) is above previous, the period is considered 
    suited for buying and the period is marked blue. If the AO value is not 
    above previous, the period is considered suited for selling and the 
    indicator marks it as red.
**********************************/

var fpArray = new Array();
var 
bInit false;

function 
preMain() {
    
setStudyTitle("Average Bill Williams AC");
    
setCursorLabelName("ABillW AC"0);
    
setDefaultBarThickness(2,0);
    
setPlotType(PLOTTYPE_HISTOGRAM);
    var 
x=0;
    
fpArray[x] = new FunctionParameter("nLengthSlow"FunctionParameter.NUMBER);
    
with(fpArray[x++]){
        
setLowerLimit(1);        
        
setDefault(34);
    }
    
fpArray[x] = new FunctionParameter("nLengthFast"FunctionParameter.NUMBER);
    
with(fpArray[x++]){
        
setLowerLimit(1);        
        
setDefault(5);
    }   
}

var 
xCalc_hl2 null;
var 
xAC null;

function 
main(nLengthFastnLengthSlow) {
var 
nBarState getBarState();
var 
nAC 0;
var 
nAC1 0;

    if (
nBarState == BARSTATE_ALLBARS) {
        if (
nLengthSlow == nullnLengthSlow 34;
        if (
nLengthFast == nullnLengthFast 5;
    }

    if (
bInit == false) {
        
xCalc_hl2  efsInternal("CalcSMA1_SMA2"nLengthFastnLengthSlow);
        
xAC efsInternal("Calc_AC"nLengthFastxCalc_hl2sma(nLengthFastxCalc_hl2))
        
bInit true;
    }

    
nAC xAC.getValue(0);
    
nAC1 xAC.getValue(-1);
    if (
nAC1 == null) return;
    if (
nAC nAC1setBarFgColor(Color.blue);
        else 
setBarFgColor(Color.red);
    return 
nAC;
}

var 
bSecondInit false;
var 
xSMA1_hl2 null;
var 
xSMA2_hl2 null;

function 
CalcSMA1_SMA2(nLengthFastnLengthSlow) {
var 
nRes 0;
var 
SMA1 0;
var 
SMA2 0;
    if (
bSecondInit == false) {
        
xSMA1_hl2 sma(nLengthFasthl2());
        
xSMA2_hl2 sma(nLengthSlowhl2());
        
bSecondInit true;
    }
    
SMA1 xSMA1_hl2.getValue(0);
    
SMA2 xSMA2_hl2.getValue(0);
    if (
SMA1 == null || SMA2 == null) return;
    
nRes SMA1 SMA2;
    return 
nRes;
}

function 
Calc_AC(nLengthFastxCalc_hl2xSMA_hl2) {
var 
nRes 0;
    if (
xSMA_hl2.getValue(0) == null) return;
    
nRes xCalc_hl2.getValue(0) - xSMA_hl2.getValue(0);
    return 
nRes;