Moving Average & Price Crossover

ICE Data Services -

strMA_Pcrsv.efs  
EFSLibrary - Discussion Board  

File Name: strMA_Pcrsv.efs

Description:
Moving Average & Price Crossover

Formula Parameters:

  • Length : 40

Notes:

This is the almost simpliest strategy a trader can imagine. It is based on moving average concept. A Moving Average is an indicator that shows the average value of a security's price over a period of
time. When calculating a moving average, a mathematical analysis of the security's average value over a predetermined time period is made. As the security's price changes, its average price moves up or down.

Download File:
strMA_Pcrsv.efs


EFS 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:        
    Moving Average & Price Crossover

Version:            1.0  03/24/2009

Formula Parameters:                     Default:
    Length                              40

Notes:
    This is the almost simpliest strategy a trader can imagine. It is 
    based on moving average concept. A Moving Average is an indicator 
    that shows the average value of a security's price over a period of 
    time. When calculating a moving average, a mathematical analysis of 
    the security's average value over a predetermined time period is made. 
    As the security's price changes, its average price moves up or down. 
**********************************/

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

function preMain() {
    setPriceStudy(true);
    setStudyTitle("Moving Average & Price Crossover");
    setCursorLabelName("SMA", 0);
    setColorPriceBars(true);
    setDefaultPriceBarColor(Color.black);

    var x=0;
    fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);
	with(fpArray[x++]){
        setLowerLimit(1);		
        setDefault(40);
    }
}

var xSMA = null;

function main(Length) {
var nBarState = getBarState();
var Close = close(-1);
var nSMA = 0;
    if (nBarState == BARSTATE_ALLBARS) {
        if (Length == null) nLength = 40;
    }
    if (bInit == false) {
        xSMA = sma(Length);
        bInit = true;
    }

    nSMA = xSMA.getValue(-1);
    if (nSMA == null) return;

    if (getCurrentBarIndex() == 0) return;
    
	if(Close >= nSMA && !Strategy.isLong()) 
		Strategy.doLong("Crossing Up", Strategy.MARKET, Strategy.THISBAR);
	if(Close < nSMA && !Strategy.isShort())
		Strategy.doShort("Crossing Down", Strategy.MARKET, Strategy.THISBAR);
	if(Strategy.isLong())
		setPriceBarColor(Color.lime);
	else if(Strategy.isShort())
		setPriceBarColor(Color.red);
	return nSMA;
}