they're pretty good for intraday traiding... so any help would be appreciated...
the original codes, developed by jim berg and posted in esginal forums are the following...
/************************************************** ***************
Provided By : eSignal (c) Copyright 2004
Description: Volatility Entry Advisor - by Jim Berg
Version 1.1
Notes:
2/15/2005 - Added setComputeOnClose()
February 2005 Issue - "The Truth About Volatility"
Formula Parameters: Defaults:
ATR Periods 10
LL and HH Periods 20
Thickness 2
************************************************** ***************/
function preMain() {
setPriceStudy(true);
setStudyTitle("Volatility Entry Advisor");
setCursorLabelName("Entry", 0);
setCursorLabelName("Exit", 1);
setDefaultBarThickness(2, 0);
setDefaultBarThickness(2, 1);
setDefaultBarFgColor(Color.lime, 0);
setDefaultBarFgColor(Color.magenta, 1);
setColorPriceBars(true);
setDefaultPriceBarColor(Color.grey);
setComputeOnClose();
setShowTitleParameters(false);
// Formula Parameters
var fp1 = new FunctionParameter("nATRlen", FunctionParameter.NUMBER);
fp1.setName("ATR Periods");
fp1.setLowerLimit(1);
fp1.setDefault(10);
var fp2 = new FunctionParameter("nDonlen", FunctionParameter.NUMBER);
fp2.setName("LL and HH Periods");
fp2.setLowerLimit(1);
fp2.setDefault(20);
// Study Parameters
var sp1 = new FunctionParameter("nThick", FunctionParameter.NUMBER);
sp1.setName("Thickness");
sp1.setDefault(2);
}
var bEdit = true;
var vATR = null;
var vDonchian = null;
var vColor = Color.grey;
function main(nATRlen, nDonlen, nThick) {
if (bEdit == true) {
vATR = new ATRStudy(nATRlen);
vDonchian = new DonchianStudy(nDonlen, 0);
setDefaultBarThickness(nThick, 0);
setDefaultBarThickness(nThick, 1);
bEdit = false;
}
var nState = getBarState();
if (nState == BARSTATE_NEWBAR) {
}
var ATR = vATR.getValue(ATRStudy.ATR);
var HHV = vDonchian.getValue(DonchianStudy.UPPER);
var LLV = vDonchian.getValue(DonchianStudy.LOWER);
var ATR1 = vATR.getValue(ATRStudy.ATR,-1);
var HHV1 = vDonchian.getValue(DonchianStudy.UPPER,-1);
var LLV1 = vDonchian.getValue(DonchianStudy.LOWER,-1);
if (ATR1 == null || HHV1 == null || LLV1 == null) return;
var vEntryLine = LLV+(2*ATR);
var vExitLine = HHV-(2*ATR);
var c = close(0);
var vEntryLine1 = LLV1+(2*ATR1);
var vExitLine1 = HHV1-(2*ATR1);
var c1 = close(-1);
if (c > vEntryLine && c1 < vEntryLine1 ||
c > vEntryLine && c > vExitLine) {
vColor = Color.blue;
} else if (c < vExitLine && c1 > vExitLine1 ||
c < vEntryLine && c < vExitLine) {
vColor = Color.red;
}
setPriceBarColor(vColor);
//return;
return new Array(vEntryLine, vExitLine);
}
/************************************************** ***************
Provided By : eSignal (c) Copyright 2004
Description: Volatility Trailing Stop P15 - by Jim Berg
Version 2.0
Notes:
February 2005 Issue - "The Truth About Volatility"
This version has been modified to include the reverse logic
for short positions.
Formula Parameters: Defaults:
ATR Periods 10
Thickness 2
************************************************** ***************/
function preMain() {
setPriceStudy(true);
setStudyTitle("Volatility Trailing Stop P15 ");
setCursorLabelName("Long VStop", 0);
setCursorLabelName("Short VStop", 1);
setDefaultBarThickness(2, 0);
setDefaultBarThickness(2, 1);
setDefaultBarFgColor(Color.red, 0);
setDefaultBarFgColor(Color.green, 1);
setShowTitleParameters(false);
// Formula Parameters
var fp1 = new FunctionParameter("nATRlen", FunctionParameter.NUMBER);
fp1.setName("ATR Periods");
fp1.setLowerLimit(1);
fp1.setDefault(10);
// Study Parameters
var sp1 = new FunctionParameter("nThick", FunctionParameter.NUMBER);
sp1.setName("Thickness");
sp1.setDefault(2);
}
var bEdit = true;
var vATR = null;
var aStopL = new Array(15);
var aStopS = new Array(15);
function main(nATRlen, nThick) {
if (bEdit == true) {
vATR = new ATRStudy(nATRlen);
setDefaultBarThickness(nThick, 0);
bEdit = false;
}
var nState = getBarState();
if (nState == BARSTATE_NEWBAR) {
aStopL.pop();
aStopL.unshift(0);
aStopS.pop();
aStopS.unshift(0);
}
var ATR = vATR.getValue(ATRStudy.ATR);
if (ATR == null) return;
var c = close();
var vStopL = (c - (2*ATR));
aStopL[0] = vStopL;
var vStopS = (c + (2*ATR));
aStopS[0] = vStopS;
var vStop15L = vStopL;
var vStop15S = vStopS;
for (var i = 0; i < 15; i++) {
vStop15L = Math.max(aStopL[i], vStop15L);
vStop15S = Math.min(aStopS[i], vStop15S);
}
return new Array(vStop15L, vStop15S);
}

Comment