Hi,
I've trying to use this indictor from the EFS Library but it dose not plot in real time. Is there somthing I'm doing incorrectly?
Thank you for you help,
Mac
Trailing Resistance & Support Stops, by Sylvain Vervoort
/*********************************
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:
Trailing Resistance & Support Stops, by Sylvain Vervoort
Version: 1.0 05/07/2009
Formula Parameters: Default:
ATR Period 10
ATR Multiplication 2.8
Long or Short Long
Show Line Trailing Stop True
Show Labels True
Show Arrows True
Display Cursor Labels True
Line Color Red
Notes:
The related article is copyrighted material. If you are not a subscriber
of Stocks & Commodities, please visit www.traders.com.
**********************************/
var fpArray = new Array();
var bInit = false;
function preMain() {
setPriceStudy(true);
setStudyTitle("R&S Trailing Stops");
setCursorLabelName("R&S Trailing Stops", 0);
setShowTitleParameters(false);
setDefaultBarFgColor(Color.red, 0);
setPlotType(PLOTTYPE_LINE, 0);
setDefaultBarThickness(2, 0);
askForInput();
var x=0;
fpArray[x] = new FunctionParameter("nATRPeriod", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("ATR Period");
setLowerLimit(1);
setUpperLimit(100);
setDefault(10);
}
fpArray[x] = new FunctionParameter("nATRMultip", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("ATR Multiplication");
setLowerLimit(1);
setUpperLimit(10);
setDefault(2.8);
}
fpArray[x] = new FunctionParameter("bShowTS", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Line Trailing Stop");
addOption("true");
addOption("false");
setDefault("true");
}
fpArray[x] = new FunctionParameter("bShowL", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Labels");
addOption("true");
addOption("false");
setDefault("true");
}
fpArray[x] = new FunctionParameter("bShowArrows", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Arrows");
addOption("true");
addOption("false");
setDefault("true");
}
fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Display Cursor Labels");
setDefault(true);
}
fpArray[x] = new FunctionParameter("sStrategy", FunctionParameter.STRING);
with(fpArray[x++]){
setName("Long or Short");
addOption("Long");
addOption("Short");
setDefault("Long");
}
fpArray[x] = new FunctionParameter("cColor", FunctionParameter.COLOR);
with(fpArray[x++]){
setName("Line Color");
setDefault(Color.red);
}
}
var bVersion = null;
var xSVE_TRENDS_Trail = null;
var xClose = null;
var bTrade = true;
function main(nATRPeriod, nATRMultip, sStrategy, bShowTS, bShowL, bShowArrows, ViewValue, cColor){
var nClose = 0;
var nClose1 = 0;
var nATRTS = 0;
var nATRTS1 = 0;
if (bVersion == null) bVersion = verify();
if (bVersion == false) return;
if (getCurrentBarCount() <= nATRPeriod + 5) return;
if(bInit==false){
setShowCursorLabel(ViewValue);
setDefaultBarFgColor(cColor, 0);
xClose = close();
xSVE_TRENDS_Trail = efsInternal("SVE_TRENDS_Trail", nATRPeriod, nATRMultip, xClose);
bInit=true;
}
if(getCurrentBarIndex() == 0) {
bTrade = false;
return;
}
nClose = xClose.getValue(0);
nClose1 = xClose.getValue(-1);
nATRTS = xSVE_TRENDS_Trail.getValue(0);
nATRTS1 = xSVE_TRENDS_Trail.getValue(-1);
if (nATRTS == null) return;
if (nClose1 < nATRTS1 && nClose > nATRTS) {
if (bShowArrows) drawShape( Shape.UPARROW, BelowBar1, Color.green);
if (sStrategy == "Long") {
if (bShowL) drawTextRelative(0, BelowBar2, " LONG", Color.white, Color.green, Text.PRESET|Text.CENTER|Text.FRAME, "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (bTrade) Strategy.doLong("Long", Strategy.MARKET, Strategy.NEXTBAR);
} else {
if (bShowL) drawTextRelative(0, BelowBar2, " EXIT", Color.white, Color.green, Text.PRESET|Text.CENTER|Text.FRAME, "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (Strategy.isShort() && bTrade) Strategy.doCover("Exit Short", Strategy.MARKET, Strategy.NEXTBAR);
}
}
if (nClose1 > nATRTS1 && nClose < nATRTS) {
if (bShowArrows) drawShape( Shape.DOWNARROW, AboveBar1, Color.red);
if (sStrategy == "Long") {
if (bShowL) drawTextRelative(0, AboveBar2, " EXIT", Color.white, Color.red, Text.PRESET|Text.CENTER|Text.FRAME, "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (Strategy.isLong() && bTrade) Strategy.doSell("Exit Long", Strategy.MARKET, Strategy.NEXTBAR);
} else {
if (bShowL) drawTextRelative(0, AboveBar2, "SHORT", Color.white, Color.red, Text.PRESET|Text.CENTER|Text.FRAME , "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (bTrade) Strategy.doShort("Short", Strategy.MARKET, Strategy.NEXTBAR);
}
}
if (bShowTS == false) return;
return nATRTS;
}
var xHigh = null;
var xLow = null;
var xATR_Modif = null;
var bSecondInit = false;
var Support = 0;
var Support_1 = 0;
function SVE_TRENDS_Trail(nATRPeriod, nATRMultip, xSClose){
var nClose = 0;
var nLoss = 0;
var Resistance = 0;
var Trends = 0;
var nRef = ref(-1);
if (bSecondInit == false) {
xHigh = high();
xLow = low();
xATR_Modif = efsInternal("Calc_ATRMod", nATRPeriod, nATRMultip, xSClose, xHigh, xLow)
bSecondInit = true;
}
nClose = xSClose.getValue(0);
if (xATR_Modif.getValue(0) == null) return;
nLoss = nATRMultip * xATR_Modif.getValue(0);
Resistance = nClose + nLoss;
if(getBarState()==BARSTATE_NEWBAR){
Support_1 = Support;
}
if (xLow.getValue(0) >= xLow.getValue(-2) &&
xLow.getValue(-1) >= xLow.getValue(-2) &&
xLow.getValue(-3) >= xLow.getValue(-2) &&
xLow.getValue(-4) >= xLow.getValue(-2)) {
Support = xLow.getValue(-2);
} else {
if (xLow.getValue(0) > xHigh.getValue(-1) * 1.0013) {
Support = xHigh.getValue(-1) * 0.9945;
} else {
if (xLow.getValue(0) > nRef * 1.1) {
Support = Support_1 * 1.05;
} else {
Support = Support_1;
}
}
}
if (xHigh.getValue(0) > nRef && xHigh.getValue(-1) > nRef) {
Trends = Math.max(nRef, Support);
} else {
if (xHigh.getValue(0) < nRef && xHigh.getValue(-1) < nRef) {
Trends = Math.min(nRef, Resistance);
} else {
if (xHigh.getValue(0) >= nRef) {
Trends = Support;
} else {
Trends = Resistance;
}
}
}
return Trends;
}
function Calc_High_Low() {
var nRes = high(0) - low(0);
if (nRes == null) return;
return nRes;
}
var bThirdInit = false;
var xHigh_Low = null;
var xMA_High_Low = null;
function Calc_ATRMod(nATRPeriod, nATRMultip, xTClose, xHigh, xLow) {
var nHiLo = 0;
var nHref = 0;
var nLref = 0;
var ndiff1 = 0;
var ndiff2 = 0;
var nHigh_Low = 0;
var nMA_High_Low = 0;
var nAtrMod = 0;
var nRef = ref(-1);
if (bThirdInit == false) {
xHigh_Low = efsInternal("Calc_High_Low");
xMA_High_Low = sma(nATRPeriod, xHigh_Low)
bThirdInit = true;
}
if (xMA_High_Low.getValue(-1) == null) return;
var nClose = xTClose.getValue(0);
var nClose1 = xTClose.getValue(-1);
var nHigh = xHigh.getValue(0);
var nHigh1 = xHigh.getValue(-1);
var nLow = xLow.getValue(0);
var nLow1 = xLow.getValue(-1);
nHigh_Low = xHigh_Low.getValue(0);
nMA_High_Low = xMA_High_Low.getValue(0);
if (nHigh_Low < 1.5 * nMA_High_Low) {
nHiLo = nHigh_Low;
} else {
nHiLo = 1.5 * nMA_High_Low;
}
if (nLow <= nHigh1) {
nHref = nHigh - nClose1;
} else {
nHref = (nHigh - nClose1) - (nLow - nHigh1) / 2;
}
if (nHigh >= nLow1) {
nLref = nClose1 - nLow;
} else {
nLref = (nClose1 - nLow) - (nLow1 - nHigh) / 2;
}
ndiff1 = Math.max(nHiLo, nHref);
ndiff2 = Math.max(ndiff1, nLref);
nAtrMod = (ndiff2 + (nATRPeriod - 1) * nRef) / nATRPeriod;
return nAtrMod;
}
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.BOL D|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.BOL D|Text.LEFT,
null, 13, "upgrade");
return b;
} else {
b = true;
}
return b;
}
I've trying to use this indictor from the EFS Library but it dose not plot in real time. Is there somthing I'm doing incorrectly?
Thank you for you help,
Mac
Trailing Resistance & Support Stops, by Sylvain Vervoort
/*********************************
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:
Trailing Resistance & Support Stops, by Sylvain Vervoort
Version: 1.0 05/07/2009
Formula Parameters: Default:
ATR Period 10
ATR Multiplication 2.8
Long or Short Long
Show Line Trailing Stop True
Show Labels True
Show Arrows True
Display Cursor Labels True
Line Color Red
Notes:
The related article is copyrighted material. If you are not a subscriber
of Stocks & Commodities, please visit www.traders.com.
**********************************/
var fpArray = new Array();
var bInit = false;
function preMain() {
setPriceStudy(true);
setStudyTitle("R&S Trailing Stops");
setCursorLabelName("R&S Trailing Stops", 0);
setShowTitleParameters(false);
setDefaultBarFgColor(Color.red, 0);
setPlotType(PLOTTYPE_LINE, 0);
setDefaultBarThickness(2, 0);
askForInput();
var x=0;
fpArray[x] = new FunctionParameter("nATRPeriod", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("ATR Period");
setLowerLimit(1);
setUpperLimit(100);
setDefault(10);
}
fpArray[x] = new FunctionParameter("nATRMultip", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("ATR Multiplication");
setLowerLimit(1);
setUpperLimit(10);
setDefault(2.8);
}
fpArray[x] = new FunctionParameter("bShowTS", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Line Trailing Stop");
addOption("true");
addOption("false");
setDefault("true");
}
fpArray[x] = new FunctionParameter("bShowL", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Labels");
addOption("true");
addOption("false");
setDefault("true");
}
fpArray[x] = new FunctionParameter("bShowArrows", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Arrows");
addOption("true");
addOption("false");
setDefault("true");
}
fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Display Cursor Labels");
setDefault(true);
}
fpArray[x] = new FunctionParameter("sStrategy", FunctionParameter.STRING);
with(fpArray[x++]){
setName("Long or Short");
addOption("Long");
addOption("Short");
setDefault("Long");
}
fpArray[x] = new FunctionParameter("cColor", FunctionParameter.COLOR);
with(fpArray[x++]){
setName("Line Color");
setDefault(Color.red);
}
}
var bVersion = null;
var xSVE_TRENDS_Trail = null;
var xClose = null;
var bTrade = true;
function main(nATRPeriod, nATRMultip, sStrategy, bShowTS, bShowL, bShowArrows, ViewValue, cColor){
var nClose = 0;
var nClose1 = 0;
var nATRTS = 0;
var nATRTS1 = 0;
if (bVersion == null) bVersion = verify();
if (bVersion == false) return;
if (getCurrentBarCount() <= nATRPeriod + 5) return;
if(bInit==false){
setShowCursorLabel(ViewValue);
setDefaultBarFgColor(cColor, 0);
xClose = close();
xSVE_TRENDS_Trail = efsInternal("SVE_TRENDS_Trail", nATRPeriod, nATRMultip, xClose);
bInit=true;
}
if(getCurrentBarIndex() == 0) {
bTrade = false;
return;
}
nClose = xClose.getValue(0);
nClose1 = xClose.getValue(-1);
nATRTS = xSVE_TRENDS_Trail.getValue(0);
nATRTS1 = xSVE_TRENDS_Trail.getValue(-1);
if (nATRTS == null) return;
if (nClose1 < nATRTS1 && nClose > nATRTS) {
if (bShowArrows) drawShape( Shape.UPARROW, BelowBar1, Color.green);
if (sStrategy == "Long") {
if (bShowL) drawTextRelative(0, BelowBar2, " LONG", Color.white, Color.green, Text.PRESET|Text.CENTER|Text.FRAME, "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (bTrade) Strategy.doLong("Long", Strategy.MARKET, Strategy.NEXTBAR);
} else {
if (bShowL) drawTextRelative(0, BelowBar2, " EXIT", Color.white, Color.green, Text.PRESET|Text.CENTER|Text.FRAME, "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (Strategy.isShort() && bTrade) Strategy.doCover("Exit Short", Strategy.MARKET, Strategy.NEXTBAR);
}
}
if (nClose1 > nATRTS1 && nClose < nATRTS) {
if (bShowArrows) drawShape( Shape.DOWNARROW, AboveBar1, Color.red);
if (sStrategy == "Long") {
if (bShowL) drawTextRelative(0, AboveBar2, " EXIT", Color.white, Color.red, Text.PRESET|Text.CENTER|Text.FRAME, "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (Strategy.isLong() && bTrade) Strategy.doSell("Exit Long", Strategy.MARKET, Strategy.NEXTBAR);
} else {
if (bShowL) drawTextRelative(0, AboveBar2, "SHORT", Color.white, Color.red, Text.PRESET|Text.CENTER|Text.FRAME , "Arial Black", 10, "b"+(getCurrentBarCount()), -5);
if (bTrade) Strategy.doShort("Short", Strategy.MARKET, Strategy.NEXTBAR);
}
}
if (bShowTS == false) return;
return nATRTS;
}
var xHigh = null;
var xLow = null;
var xATR_Modif = null;
var bSecondInit = false;
var Support = 0;
var Support_1 = 0;
function SVE_TRENDS_Trail(nATRPeriod, nATRMultip, xSClose){
var nClose = 0;
var nLoss = 0;
var Resistance = 0;
var Trends = 0;
var nRef = ref(-1);
if (bSecondInit == false) {
xHigh = high();
xLow = low();
xATR_Modif = efsInternal("Calc_ATRMod", nATRPeriod, nATRMultip, xSClose, xHigh, xLow)
bSecondInit = true;
}
nClose = xSClose.getValue(0);
if (xATR_Modif.getValue(0) == null) return;
nLoss = nATRMultip * xATR_Modif.getValue(0);
Resistance = nClose + nLoss;
if(getBarState()==BARSTATE_NEWBAR){
Support_1 = Support;
}
if (xLow.getValue(0) >= xLow.getValue(-2) &&
xLow.getValue(-1) >= xLow.getValue(-2) &&
xLow.getValue(-3) >= xLow.getValue(-2) &&
xLow.getValue(-4) >= xLow.getValue(-2)) {
Support = xLow.getValue(-2);
} else {
if (xLow.getValue(0) > xHigh.getValue(-1) * 1.0013) {
Support = xHigh.getValue(-1) * 0.9945;
} else {
if (xLow.getValue(0) > nRef * 1.1) {
Support = Support_1 * 1.05;
} else {
Support = Support_1;
}
}
}
if (xHigh.getValue(0) > nRef && xHigh.getValue(-1) > nRef) {
Trends = Math.max(nRef, Support);
} else {
if (xHigh.getValue(0) < nRef && xHigh.getValue(-1) < nRef) {
Trends = Math.min(nRef, Resistance);
} else {
if (xHigh.getValue(0) >= nRef) {
Trends = Support;
} else {
Trends = Resistance;
}
}
}
return Trends;
}
function Calc_High_Low() {
var nRes = high(0) - low(0);
if (nRes == null) return;
return nRes;
}
var bThirdInit = false;
var xHigh_Low = null;
var xMA_High_Low = null;
function Calc_ATRMod(nATRPeriod, nATRMultip, xTClose, xHigh, xLow) {
var nHiLo = 0;
var nHref = 0;
var nLref = 0;
var ndiff1 = 0;
var ndiff2 = 0;
var nHigh_Low = 0;
var nMA_High_Low = 0;
var nAtrMod = 0;
var nRef = ref(-1);
if (bThirdInit == false) {
xHigh_Low = efsInternal("Calc_High_Low");
xMA_High_Low = sma(nATRPeriod, xHigh_Low)
bThirdInit = true;
}
if (xMA_High_Low.getValue(-1) == null) return;
var nClose = xTClose.getValue(0);
var nClose1 = xTClose.getValue(-1);
var nHigh = xHigh.getValue(0);
var nHigh1 = xHigh.getValue(-1);
var nLow = xLow.getValue(0);
var nLow1 = xLow.getValue(-1);
nHigh_Low = xHigh_Low.getValue(0);
nMA_High_Low = xMA_High_Low.getValue(0);
if (nHigh_Low < 1.5 * nMA_High_Low) {
nHiLo = nHigh_Low;
} else {
nHiLo = 1.5 * nMA_High_Low;
}
if (nLow <= nHigh1) {
nHref = nHigh - nClose1;
} else {
nHref = (nHigh - nClose1) - (nLow - nHigh1) / 2;
}
if (nHigh >= nLow1) {
nLref = nClose1 - nLow;
} else {
nLref = (nClose1 - nLow) - (nLow1 - nHigh) / 2;
}
ndiff1 = Math.max(nHiLo, nHref);
ndiff2 = Math.max(ndiff1, nLref);
nAtrMod = (ndiff2 + (nATRPeriod - 1) * nRef) / nATRPeriod;
return nAtrMod;
}
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.BOL D|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.BOL D|Text.LEFT,
null, 13, "upgrade");
return b;
} else {
b = true;
}
return b;
}
Comment