Announcement

Collapse
No announcement yet.

Trailing Resistance & Support Stops, by Sylvain Vervoort

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Trailing Resistance & Support Stops, by Sylvain Vervoort

    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
    http://forum.esignalcentral.com/show...threadid=31022

    /*********************************
    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;
    }

  • #2
    Re: Trailing Resistance &amp; Support Stops, by Sylvain Vervoort

    MacDaddy
    See this thread on the same topic
    Alex


    Originally posted by MacDaddy
    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
    http://forum.esignalcentral.com/show...threadid=31022

    /*********************************
    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


    • #3
      Thanks Alexis for all your help!

      I made the simple changes as you suggested.

      All the Best,
      Mac

      Comment


      • #4
        Mac
        You are welcome
        Alex


        Originally posted by MacDaddy
        Thanks Alexis for all your help!

        I made the simple changes as you suggested.

        All the Best,
        Mac

        Comment

        Working...
        X