Chris, I've been using an MA crossover with your Hull MA script. (also playing with the KAMA.) I was wondering if you or anyone else had done a MACD using KAMA or Hull Ma?
Announcement
Collapse
No announcement yet.
Hull or KAMA
Collapse
X
-
Well, I took a stab at it and missed a thing or two. Would appreciate some help.
/************************************************** ******************
MACD using HULL MAs
Modified from original script by Chris Kryza
Title: Hull MA Script for eSignal 7.x
By: Chris D. Kryza (Divergence Software, Inc.)
Email: [email protected]; [email protected]
Incept: 01/13/2006
Version: 1.0.0
************************************************** ********************/
debugClear()
//External Variables
var nBarCounter = 0;
var nStudy1 = null;
var nStudy2 = null;
var nPlot = null;
var nPlot_1 = null;
var aFPArray = new Array();
var bInitialized = false;
var Period = 30;
//== PreMain function required by eSignal to set things up
function preMain() {
var x;
setPriceStudy(false);
setStudyTitle("Hull MACD");
setCursorLabelName("Hull MACD", 0);
setDefaultBarFgColor( Color.blue, 0 );
setShowTitleParameters( false );
//initialize formula parameters
x=0;
aFPArray[x] = new FunctionParameter( "f_Period", FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Hull fast MA Period" );
setLowerLimit( 2 );
setUpperLimit( 9999 );
setDefault( 13 );
}
x++;
aFPArray[x] = new FunctionParameter( "s_Period", FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Hull slow MA Period" );
setLowerLimit( 2 );
setUpperLimit( 9999 );
setDefault( 39 );
}
x++;
aFPArray[x] = new FunctionParameter( "Signal", FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Signal Length" );
setLowerLimit( 2 );
setUpperLimit( 9999 );
setDefault( 9 );
}
x++;
aFPArray[x] = new FunctionParameter( "Price", FunctionParameter.STRING);
with( aFPArray[x] ) {
setName( "Hull MA Price Source" );
addOption( "close" );
addOption( "open" );
addOption( "high" );
addOption( "low" );
addOption( "hl2" );
addOption( "hlc3" );
addOption( "ohlc4" );
setDefault( "close" );
}
}
//== Main processing function
function main( f_Period, s_Period, Signal, Price) {
var x;
//script is initializing
if ( getBarState() == BARSTATE_ALLBARS ) {
return null;
}
if ( bInitialized == false ) {
nSrc = eval( Price )();
Period = f_Period;
f_Study1 = efsInternal( "custSeriesFunc", Period, nSrc );
f_Study2 = wma( Math.floor( Math.sqrt( Period ) ), nStudy1 );
Period = s_Period;
s_Study1 = efsInternal( "custSeriesFunc", Period, nSrc );
s_Study2 = wma( Math.floor( Math.sqrt( Period ) ), nStudy1 );
bInitialized = true;
}
//called on each new bar
if ( getBarState() == BARSTATE_NEWBAR ) {
fPlot_1 = fPlot;
sPlot_1 = sPlot;
nBarCounter++;
}
fPlot = f_Study2.getValue(0);
sPlot = f_Stdud2.getValue(0);
/*****
if ( nPlot>nPlot_1 ) {
setBarFgColor( UpColor, 0 );
}
if ( nPlot<nPlot_1 ) {
setBarFgColor( DnColor, 0 );
}
******/
nPlot = sPlot - fPlot;
return( nPlot );
}
/*************************************************
SUPPORT FUNCTIONS
**************************************************/
var _study1 = null;
var _study2 = null;
var bInit = false;
function custSeriesFunc( _len, _src ) {
if ( bInit==false ) {
_study1 = wma( Math.floor( _len/2 ), _src );
_study2 = wma( _len, _src );
bInit = true;
}
return( 2 * _study1.getValue(0)-_study2.getValue(0) );
}
//== gID function assigns unique identifier to graphic/text routines
function gID() {
grID ++;
return( grID );
}
-
MACD using Hull MA
changed a few things still not working.
--------------------------------------------------------------
PHP Code:/********************************************************************
MACD using HULL MAs
Modified from original script by Chris Kryza
Title: Hull MA Script for eSignal 7.x
By: Chris D. Kryza (Divergence Software, Inc.)
Email: [email][email protected][/email]; [email][email protected][/email]
Incept: 01/13/2006
Version: 1.0.0
**********************************************************************/
debugClear()
//External Variables
var nBarCounter = 0;
var nStudy1 = null;
var nStudy2 = null;
var fPlot = null;
var fPlot_1 = null;
var sPlot = null;
var sPlot_1 = null;
var aMACD = new Array();
var aSignal = new Array();
var aFPArray = new Array();
var bInitialized = false;
var Period = 30;
//== PreMain function required by eSignal to set things up
function preMain() {
var x;
setPriceStudy(false);
setStudyTitle("Hull MACD");
setCursorLabelName("Hull MACD", 0);
setDefaultBarFgColor( Color.blue, 0 );
setShowTitleParameters( false );
//initialize formula parameters
x=0;
aFPArray[x] = new FunctionParameter( "f_Period", FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Hull fast MA Period" );
setLowerLimit( 2 );
setUpperLimit( 9999 );
setDefault( 13 );
}
x++;
aFPArray[x] = new FunctionParameter( "s_Period", FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Hull slow MA Period" );
setLowerLimit( 2 );
setUpperLimit( 9999 );
setDefault( 39 );
}
x++;
aFPArray[x] = new FunctionParameter( "nLen", FunctionParameter.NUMBER);
with( aFPArray[x] ) {
setName( "Signal Length" );
setLowerLimit( 2 );
setUpperLimit( 9999 );
setDefault( 9 );
}
x++;
aFPArray[x] = new FunctionParameter( "Price", FunctionParameter.STRING);
with( aFPArray[x] ) {
setName( "Hull MA Price Source" );
addOption( "close" );
addOption( "open" );
addOption( "high" );
addOption( "low" );
addOption( "hl2" );
addOption( "hlc3" );
addOption( "ohlc4" );
setDefault( "close" );
}
}
//== Main processing function
function main( f_Period, s_Period, nLen, Price) {
var x;
//script is initializing
if ( getBarState() == BARSTATE_ALLBARS ) {
return null;
}
if ( bInitialized == false ) {
nSrc = eval( Price )();
Period = f_Period;
f_Study1 = efsInternal( "custSeriesFunc", Period, nSrc );
f_Study2 = wma( Math.floor( Math.sqrt( Period ) ), nStudy1 );
fPlot = f_Study2.getValue(0);
Period = s_Period;
s_Study1 = efsInternal( "custSeriesFunc", Period, nSrc );
s_Study2 = wma( Math.floor( Math.sqrt( Period ) ), nStudy1 );
sPlot = s_Study2.getValue(0);
bInitialized = true;
}
//called on each new bar
if ( getBarState() == BARSTATE_NEWBAR ) {
fPlot_1 = fPlot;
sPlot_1 = sPlot;
nBarCounter++;
}
/*****
if ( nPlot>nPlot_1 ) {
setBarFgColor( UpColor, 0 );
}
if ( nPlot<nPlot_1 ) {
setBarFgColor( DnColor, 0 );
}
******/
aMACD = sPlot - fPlot;
aSignal = ema(nLen, aMACD)
return new array ( aMACD.getValue(0), aSignal.getValue(0) );
}
/*************************************************
SUPPORT FUNCTIONS
**************************************************/
var _study1 = null;
var _study2 = null;
var bInit = false;
function custSeriesFunc( _len, _src ) {
if ( bInit==false ) {
_study1 = wma( Math.floor( _len/2 ), _src );
_study2 = wma( _len, _src );
bInit = true;
}
return( 2 * _study1.getValue(0)-_study2.getValue(0) );
}
//== gID function assigns unique identifier to graphic/text routines
function gID() {
grID ++;
return( grID );
}
Last edited by pj909; 10-24-2008, 10:42 AM.
Comment
Comment