SafeZone Stop - StopLoss

Vragen en suggesties over handelssystemen en indicatoren

Moderator: Perry

SafeZone Stop - StopLoss

Berichtdoor Dirk » vr 17 jan 2003, 17:28

Een interessante stoploss is de SafeZone Stop uit het boek "Come into my trading room" van Alexander Elder, bij velen bekend. Hij heeft de SZS daarin prima uitgelegd en toegepast in Excel. Ik tracht de Stop in Vesticode te programmeren maar met mijn (nog?) beperkte kennis lukt het me niet. Is er iemand die al een succesvolle poging gewaagd heeft?

Groet,

Dick.
Een vriendelijke groet,

Dick
Dirk
 
Berichten: 28
Geregistreerd op: wo 07 aug 2002, 16:30
Woonplaats: Rosmalen

SafeZone Stop

Berichtdoor Jos » wo 22 jan 2003, 21:08

Hoi Dick,

Als je je excel sheet even naar me toe stuurt(josr@josr.org) dan kan ik hier vrijdag(vrije dag) even naar kijken.

Groeten,

Jos
Jos
 
Berichten: 37
Geregistreerd op: do 04 okt 2001, 21:45

SafeZone Stop

Berichtdoor Ad » vr 18 jul 2003, 11:22

Hoewel het al enige tijd geleden is dat dit topic aan de orde kwam wil ik nogmaals de vraag van Dirk herhalen: Is er iemand die de SafeZoneStop van Elder in Vesticode heeft geprogrammeerd? Indien gewenst kan ik hem de Excel sheet toesturen.

Groeten,
Ad
Ad
 
Berichten: 4
Geregistreerd op: vr 18 jul 2003, 11:10

SafeZone Stop

Berichtdoor poekmeister » vr 18 jul 2003, 19:22

Dirk,
Ik wil er wel een poging aan wagen. Stuur het excelsheet maar naar "guusenkarel@hotmail.com". Heb je ook nog meer toelichting (Bijv. geschreven tekst-uitleg over hoe de stop werkt)?

Michel
poekmeister
 
Berichten: 88
Geregistreerd op: za 17 aug 2002, 19:50

SafeZone Stop

Berichtdoor Ad » vr 18 jul 2003, 21:01

Michel,

Ik heb je via e-mail de Excel sheet toegestuurd, vergezeld van wat commentaar.
Bedankt alvast voor je moeite.

Ad
Ad
 
Berichten: 4
Geregistreerd op: vr 18 jul 2003, 11:10

SafeZone Stop

Berichtdoor Paul M » za 19 jul 2003, 17:49

Hallo Dirk en de rest,

Alexander Elder?s ?SafeZone Stop? :
INPUTS:
Price((H+L)/2), MALength(22), Lookback(15), Trend(3), AutomaticLookBack(True), Multiplelong(2), Multipleshort(2);
VARIABLES:
MA(0), ?Ldiff(0), Lday(0), Sdiff(0), Sday(0), Longsum(0), ?Shortsum(0) , Countlong(0), Countshort(0), Avglow(0), Avghigh(0), Longstop(0), Shortstop(0), Lstop(0), Sstop(0), ii(0), LookBackTemp(0);
{Determine trend by slope of EMA}
MA = xaverage( Price, MALength );
Condition1 = MA > MA[Trend];
Condition2 = MA < MA[Trend];

{Determine Lookback Period (to prior swing extreme)}
IF LookBackTemp<LookBack THEN LookBackTemp=LookBackTemp+1;
IF Condition1<>Condition1[1] THEN BEGIN
LookBackTemp=LookBack;
Value1=MinList(MALength*0.66,LookBack);
IF Condition1 and AutomaticLookBack THEN IF LowestBar(L,Value1)<LookBack THEN LookBackTemp=LowestBar(L,Value1);
IF Condition2 and AutomaticLookBack THEN IF HighestBar(H,Value1)<LookBack THEN LookBackTemp=HighestBar(H,Value1);
END;
{determine and count number of days with:
for longs - ?lows being lower than prior lows
for shorts - ?highs being higher than prior highs}

Ldiff = IFF(L[1] > L, L[1] - L, 0); ? { Difference of lows }
Lday ?= IFF(L[1] > L, 1, 0); ? ? ? ? ?{ 1 if this is a "low's" day }
Sdiff = IFF(H[1] < H, H - H[1], 0); ? { Difference of highs }
Sday ?= IFF(H[1] < H, 1, 0); ? ? ? ? ?{ 1 if this is a "high's" day }

{SAFEZONE FOR LONGS}
{Get average of lows lower than prior low}
Longsum = summation(Ldiff, Lookbacktemp);
Countlong = summation(Lday, Lookbacktemp);
IF Countlong <> 0 THEN Avglow = Longsum / Countlong;

{Calculate stop at "X" times avglow}
Lstop = LOW - (Multiplelong * Avglow);

{Prevent stop from being lowered}
Longstop = MAXLIST(Lstop, Lstop[1], Lstop[2], Lstop[3], Lstop[4], Lstop[5]);
{Set Plot}
IF Condition1 THEN BEGIN
PLOT1(Longstop[1], "STOP");
END;
IF lastbaronchart THEN BEGIN
Plot1(Longstop[1], "STOP"); ? ? ? ? ?
Plot2(Longstop, "StopNext"); ? ? ? ? ? ? ? ? ? ? ?
END;
{SAFEZONE FOR SHORTS}
{Get average of highs higher than prior high}
Shortsum = summation(Sdiff, Lookbacktemp);
Countshort = summation(Sday, Lookbacktemp);
IF Countshort <> 0 THEN Avghigh = Shortsum / Countshort;

{Calculate stop at "X" times avghigh}
Sstop = HIGH + (Multipleshort * Avghigh);

{Prevent stop from rising}
Shortstop = MINLIST(Sstop, Sstop[1], Sstop[2], Sstop[3], Sstop[4], Sstop[5]);
{Set Plot}
IF Condition2 THEN BEGIN
PLOT1(Shortstop[1], "STOP");
END;
IF lastbaronchart THEN BEGIN
Plot1(Shortstop[1], "STOP"); ? ?
Plot2(Shortstop, "StopNext"); ? ? ? ? ?
END;

Groetjes Paul

(Edited by Paul M at 6:57 pm op 19,juli 2003)


(Edited by Paul M at 12:09 am op 20,juli 2003)
Paul M
 
Berichten: 263
Geregistreerd op: vr 13 dec 2002, 23:21

SafeZone Stop

Berichtdoor Ad » ma 21 jul 2003, 11:33

Hallo Paul,

Bedankt voor je EL-code van de SafeZoneStop.

Ik heb het in Vesticode omgezet en met de debugger de resultaten vergeleken met de uitkomst van de Excel sheet. Die bleken bij gelijke inputwaarden identiek.

Alleen de automatische aanpassing van de lookback-periode heb ik nog niet omgezet en getest. Daar is bovendien een stukje code weggevallen in de eerste regel van jouw EL-code (bij ?IF LookbackTempIF).

Hieronder volgt de Vesticode.

{Alexander Elder's "SafeZone Stop}

value function zSafeZoneStop(value xPrice=((High+Low)/2), value xMALength=22, value xLookBack=10, value xTrend=3, value xAutomaticLookBack=True, value xMultipleLong=2, value xMultipleShort=2) begin

{variables}
value xMA=0, xLDiff=0, xLDay=0, xSDiff=0, xSDay=0, xLongSum=0, XShortSum=0, xCountLong=0, xCountShort=0, xAvgLow=0, xAvgHigh=0, xLongStop=0, xShortStop=0, xLStop=0, xSStop=0, xii=0, xLookBackTemp=0;

{Determine trend by slope of EMA}
xMA := xaverage( xPrice, xMALength );
Condition1 := xMA > xMA[xTrend];
Condition2 := xMA < xMA[xTrend];

Plot1(xMA,'EMA'+NumToStr(xMALength));

{Determine Lookback Period (to prior swing extreme)}
{IF LookBackTempIF Condition1<>Condition1[1] THEN BEGIN
LookBackTemp=LookBack;
Value1=MinList(MALength*0.66,LookBack);
IF Condition1 and AutomaticLookBack THEN IF LowestBar(L,Value1)IF Condition2 and AutomaticLookBack THEN IF HighestBar(H,Value1)END;
}
xLookBackTemp:=xLookBack;

{determine and count number of days with:
for longs - ?lows being lower than prior lows
for shorts - ?highs being higher than prior highs}

xLdiff := IFF(Low[1] > Low, Low[1] - Low, 0); ? ? ? { Difference of lows }
xLday ?:= IFF(Low[1] > Low, 1, 0); ? ? ? ? ? ? ? ? ?{ 1 if this is a "low's" day }
xSdiff := IFF(High[1] < High, High - High[1], 0); ? { Difference of highs }
xSday ?:= IFF(High[1] < High, 1, 0); ? ? ? ? ? ? ? ?{ 1 if this is a "high's" day }


{SAFEZONE FOR LONGS}
{Get average of lows lower than prior low}
xLongsum := summation(xLdiff, xLookbackTemp);
xCountlong := summation(xLday, xLookbackTemp);
IF xCountlong <> 0 THEN xAvglow := xLongsum / xCountlong;

{Calculate stop at "X" times avglow}
xLstop := LOW - (xMultiplelong * xAvglow);

{Prevent stop from being lowered}
xLongstop := MAXLIST(xLstop[1], xLstop[2], xLstop[3]);
{Set Plot}
IF Condition1 THEN BEGIN
?PLOT2(xLongstop, "STOP");
?IF lastbaronchart THEN BEGIN
? ?Plot2(xLongstop, "STOP"); ? ? ? ? ? ? ? ? ? ?
?END;
END;



{SAFEZONE FOR SHORTS}
{Get average of highs higher than prior high}
xShortsum := summation(xSdiff, xLookbackTemp);
xCountshort := summation(xSday, xLookbackTemp);
IF xCountshort <> 0 THEN xAvghigh := xShortsum / xCountshort;

{Calculate stop at "X" times avghigh}
xSstop := HIGH + (xMultipleshort * xAvghigh);

{Prevent stop from rising}
xShortstop := MINLIST(xSstop[1], xSstop[2], xSstop[3]);
{Set Plot}
IF Condition2 THEN BEGIN
?PLOT2(xShortstop, "STOP");
?IF lastbaronchart THEN begin
? ?Plot2(xShortstop, "STOP"); ? ?
?end;
end;
end;

Groeten,

Ad
Ad
 
Berichten: 4
Geregistreerd op: vr 18 jul 2003, 11:10

SafeZone Stop

Berichtdoor Paul M » ma 21 jul 2003, 14:34

Hallo Ad,

Als je de code via edit bekijkt en kopieert dan staat het stukje tekst er wel.

Groetjes Paul.
Paul M
 
Berichten: 263
Geregistreerd op: vr 13 dec 2002, 23:21

SafeZone Stop

Berichtdoor Dirk » ma 21 jul 2003, 16:02

Hoi Ad en Paul,

Een mooi stukje programmerkunst/kunde. Ik ga er in Vestics mee aan de slag.

Dank.

Dick
Een vriendelijke groet,

Dick
Dirk
 
Berichten: 28
Geregistreerd op: wo 07 aug 2002, 16:30
Woonplaats: Rosmalen

SafeZone Stop

Berichtdoor Paul M » ma 21 jul 2003, 17:12

P.S.

Het laatste stuk code moet eigenlijk zijn:
IF lastbaronchart THEN BEGIN
Plot1[-1](Shortstop, ?STOP?); ? ? {Shows tomorrows stop on lastbar+1} Plot2(Shortstop, ?StopNext"); ? ? ? ? ? {Indicates tomorrows stop}.
Maar dit werkt niet, althans nog niet, binnen Vestics.

Groetjes Paul
Paul M
 
Berichten: 263
Geregistreerd op: vr 13 dec 2002, 23:21

SafeZone Stop

Berichtdoor Ad » wo 23 jul 2003, 15:34

L.S.,

De functie zSafeZoneStop die ik 21 juli op het forum zette bevat de EasyLanguage-functies MaxList en MinList. Tot aan de nieuwe release van Vestics werkten die functies goed.
Nadat ik de nieuwe release installeerde (ik heb programmawijzigingen op 'Meteen' staan) kreeg ik executiefouten ten gevolge van de MaxList- en MinList-functie. De Verify na het editen gaf geen problemen.

Deze foutmelding heb ik doorgegeven aan Vestico.

De oplossing voor het ontstane probleem is te vinden in het Vesticode handboek.
Vervang de instructie
? xLongStop:=MAXLIST(xLStop[1], xLStop[2], xLStop[3]);
door
? xLongStop:=xLStop[1] >> xLStop[2] >> xLStop[3];
en de instructie
?xShortStop:=MINLIST(xSStop[1], xSStop[2], xSStop[3]);
door
?xShortStop:=xSStop[1] << xSStop[2] << xSStop[3];

Ad
Ad
 
Berichten: 4
Geregistreerd op: vr 18 jul 2003, 11:10


Keer terug naar Handelssystemen + Indicatoren

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 16 gasten

cron