Larry William Accumulation / Distribution

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
Eric
Berichten: 3583
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Larry William Accumulation / Distribution

Bericht door Eric »

We ontvingen deze vraag:

Ik zou zo graag de Williams Accumulation Distribution van het forum willen overnemen in Wallstreet maar hij staat nog nergens. Kunnen jullie deze programeren?
Ik heb gezien de dat deze indicator al eerder is aangevraagd, programeren lukt mij mij niet. Jullie zouden me een enorm plezier doen

Vriendelijke groet
Ad
Williams AD is a running sum of positive accumulation values (buying pressure) and negative distribution values (selling pressure), as determined by price's location within a given day's true range.

To calculate the Williams' Accumulation/Distribution indicator, determine:

True Range High (TRH) = Yesterday's close or today's high whichever is greater
True Range Low (TRL) = Yesterday's close or today's low whichever is less

The day's accumulation/distribution is then calculated by comparing today's closing price to yesterday's closing price.

If today's close is greater than yesterday's close: Today's A/D = today's close - TRL
If today's close is less than yesterday's close: Today's A/D = today's close - TRH
If today's close is the same as yesterday's close then the A/D is zero.
The Williams' Accumulation/Distribution indicator is a cumulative total of the daily values:

Williams A/D = Today's A/D + Yesterday's Williams A/D

Williams states it's worth selling if the price makes a new high and the indicator fails to follow suit. As well, it's better to purchase if prices fall to a new bottom yet the A/D indicator fails to reach a new low.
Bij deze:

Code: Selecteer alles

{- Filename: Williams Acc-Dist -}


(*
Williams AD is a running sum of positive accumulation values (buying pressure) and negative distribution values (selling pressure), as determined by price's location within a given day's true range.

To calculate the Williams' Accumulation/Distribution indicator, determine:

True Range High (TRH) = Yesterday's close or today's high whichever is greater
True Range Low (TRL) = Yesterday's close or today's low whichever is less

The day's accumulation/distribution is then calculated by comparing today's closing price to yesterday's closing price.

If today's close is greater than yesterday's close: Today's A/D = today's close - TRL
If today's close is less than yesterday's close: Today's A/D = today's close - TRH
If today's close is the same as yesterday's close then the A/D is zero.
The Williams' Accumulation/Distribution indicator is a cumulative total of the daily values:

Williams A/D = Today's A/D + Yesterday's Williams A/D

Williams states it's worth selling if the price makes a new high and the indicator fails to follow suit. As well, it's better to purchase if prices fall to a new bottom yet the A/D indicator fails to reach a new low.
*)

var
  i: integer;
  AD, ADTotal: real;
  sTRH, sTRL, sAD: TSeries;
begin
{ Indicator eigenschappen }
  with Indicator do 
  begin
    RequiredBars := 100;    // Aantal benodigde koersen om eerste indicatorwaarde te berekenen
    NewBand := true;            // indicator standaard in nieuwe sectie plaatsen
    ScaleRange := srAuto;       // indicatorschaal automatisch
  end;

{ Berekening }
  sTRH := MaxSeries(ShiftSeries(Close, 1), High);
  sTRL := MinSeries(ShiftSeries(Close, 1), Low);
  sAD := CreateSeries(BarCount);

  for i:=FirstValidIndex(Close)+1 to BarCount-1 do
  begin
    if Close[i] > Close[i-1] then
      AD := Close[i] - sTRL[i]
    else
    if Close[i] < Close[i-1] then
      AD := Close[i] - sTRH[i]
    else
      AD := 0;
    ADTotal := ADTotal + AD;
    sAD[i] := ADTotal;
  end;

{ Weergave }
  with CreateLine(sAD) do
  begin
    Name := 'Williams A/D';
    Color := clLime;
  end;
end.
---
Eric
acstolp@gmail.com
Berichten: 6
Lid geworden op: wo aug 09, 2017 11:44 am

Re: Larry William Accumulation / Distribution

Bericht door acstolp@gmail.com »

Ha Eric,
Nog even een verzoek, ik zou de Williams AD graag gebruiken in TA Reporter.
Ik kan natuurlijk een mav over de indicator tekenen ,maar dan kan ik niet een autoscreening doen.
Daarvoor zou ik graag een mav van de indicator willen gebruiken met een interval en type mav naar keuze.

(Heb natuurlijk nul ervaring met programeren. Ben er al uren mee bezig geweest om te kijken of het me lukt door delen van programeerregels uit jouw programmeerwerk toe te voegen. Het is me alleen gelukt om mav met variable soort en lengte in jouw script toe te voegen. Maar de indicator laat in WS dan geen aan of verkoopmomenten zien (signalen).
Wil jij nog eens kijken naar mijn puzzle en eventuele fouten herstellen
Veel dank alvast,

vriendelijke groet,
Ad

Code: Selecteer alles

{- Filename: Williams Acc-Dist&mav -}


(*
Williams AD is a running sum of positive accumulation values (buying pressure) and negative distribution values (selling pressure), as determined by price's location within a given day's true range.

To calculate the Williams' Accumulation/Distribution indicator, determine:

True Range High (TRH) = Yesterday's close or today's high whichever is greater
True Range Low (TRL) = Yesterday's close or today's low whichever is less

The day's accumulation/distribution is then calculated by comparing today's closing price to yesterday's closing price.

If today's close is greater than yesterday's close: Today's A/D = today's close - TRLAd
If today's close is less than yesterday's close: Today's A/D = today's close - TRH
If today's close is the same as yesterday's close then the A/D is zero.
The Williams' Accumulation/Distribution indicator is a cumulative total of the daily values:

Williams A/D = Today's A/D + Yesterday's Williams A/D

Williams states it's worth selling if the price makes a new high and the indicator fails to follow suit. As well, it's better to purchase if prices fall to a new bottom yet the A/D indicator fails to reach a new low.
*)

var
  i, AvgType, Length : integer;
  AD, ADTotal: real;
  sTRH, sTRL, sAD, Avg: TSeries;

begin
{ Indicator eigenschappen }
  with Indicator do 
  begin
    RequiredBars := 100;    // Aantal benodigde koersen om eerste indicatorwaarde te berekenen
    NewBand := true;            // indicator standaard in nieuwe sectie plaatsen
    ScaleRange := srAuto;       // indicatorschaal automatisch
    AvgType := CreateParameterSelect('MA type', 'Gewoon'#9'Gewogen'#9'Exponentieel'#9, 0, true);
    Length                    :=  CreateParameterInteger('Length'   , 1, 999, 57 , true);
  end;

{ Berekening }
  sTRH := MaxSeries(ShiftSeries(Close, 1), High);
  sTRL := MinSeries(ShiftSeries(Close, 1), Low);
  sAD := CreateSeries(BarCount);

  for i:=FirstValidIndex(Close)+1 to BarCount-1 do
  begin
    if Close[i] > Close[i-1] then
      AD := Close[i] - sTRL[i]
    else
    if Close[i] < Close[i-1] then
      AD := Close[i] - sTRH[i]
    else
      AD := 0;
    ADTotal := ADTotal + AD;
    sAD[i] := ADTotal;
  end;
  
    case AvgType of
        1: Avg := MA(sAD, MAWeighted, Length);
        2: Avg := MA(sAD, MAExponential, Length);
        else Avg := Ma(sAD, MASimple, Length);
      end;
{ Weergave }
  with CreateLine(sAD) do
  begin
    Name :='Williams A/D';
    Color := clPurple;
  end;
  
  with CreateLine(Avg) do
   begin
    Name  :='Average';
    Color := clRed;
      end;
end.
Ta Deviant
Berichten: 6
Lid geworden op: wo mei 29, 2024 7:53 am

Re: Larry William Accumulation / Distribution

Bericht door Ta Deviant »

Soms is programmeren niet nodig omdat de "oplossing" al in Walstreet zit
dus ipv TA reporter, die moet steeds oproepen ; automatisch met signaal
Onderhoud / limieten/ indicatorwaarde/ toevoegen;.(indicator) Accumulation distribution, dan kan aandelen invullen die je op waardes een limiet hebben
ERic heeft een nuttige handleiding daarvoor geschreven...... is misschien ook een oplossing (die gebruik ik nl zelf)
acstolp@gmail.com
Berichten: 6
Lid geworden op: wo aug 09, 2017 11:44 am

Re: Larry William Accumulation / Distribution

Bericht door acstolp@gmail.com »

Dank voor je input Te Deviant. Waar kan ik die handleiding vinden?
Toch blijf ik interesse houden voor de oplossing van mijn puzzel ; Williams Acc-Distr met mav's en de signalen in TA reporter. Ik hoop dat deze binnenkort ook op het Forum komt
Eric
Berichten: 3583
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry William Accumulation / Distribution

Bericht door Eric »

Ondanks dat je geen programmeerervaring hebt is het je gelukt om de MA erbij te krijgen, dat vind ik al goed werk!

Om een indicator in TA Reporter te kunnen gebruiken moet hij een TAR waarde hebben. Dat doe je in een script door bij een lijn aan te geven dat deze de TAR waarde bevat (LineContent := lcTAR). De indicator komt dan vanzelf erbij in TA Reporter (je moet WS alleen wel even herstarten).

Het probleem is wel dat je een voor ieder fonds bruikbare TAR-waarde moet hebben. De indicatorwaarde van de Williams A/D is echter compleet anders voor verschillende aandelen, omdat de absolute verschillen van de slot met TrueRange worden gesommeerd. Om deze waarde tussen aandelen hetzelfde te maken, heb ik de indicator aangepast door de procentuele verschillen te sommeren.

De signalen zijn een ander verhaal. Ik heb ter illustratie de kruising met de MA laten signaleren maar ik weet niet of dit je bedoeling is. De uitleg die bij de indicator staat (Williams states it's worth selling if the price makes a new high and the indicator fails to follow suit. As well, it's better to purchase if prices fall to a new bottom yet the A/D indicator fails to reach a new low.) is in elk geval niet voldoende helder om deze direct in code te kunnen omzetten.

---
Eric

Code: Selecteer alles

{- Filename: Williams Acc-Dist&mav -}


(*
Williams AD is a running sum of positive accumulation values (buying pressure) and negative distribution values (selling pressure), as determined by price's location within a given day's true range.

To calculate the Williams' Accumulation/Distribution indicator, determine:

True Range High (TRH) = Yesterday's close or today's high whichever is greater
True Range Low (TRL) = Yesterday's close or today's low whichever is less

The day's accumulation/distribution is then calculated by comparing today's closing price to yesterday's closing price.

If today's close is greater than yesterday's close: Today's A/D = today's close - TRLAd
If today's close is less than yesterday's close: Today's A/D = today's close - TRH
If today's close is the same as yesterday's close then the A/D is zero.
The Williams' Accumulation/Distribution indicator is a cumulative total of the daily values:

Williams A/D = Today's A/D + Yesterday's Williams A/D

Williams states it's worth selling if the price makes a new high and the indicator fails to follow suit. As well, it's better to purchase if prices fall to a new bottom yet the A/D indicator fails to reach a new low.
*)

var
  i, AvgType, Length : integer;
  AD, ADTotal: real;
  sTRH, sTRL, sAD, Avg: TSeries;

begin
{ Indicator eigenschappen }
  with Indicator do 
  begin
    RequiredBars := 100;    // Aantal benodigde koersen om eerste indicatorwaarde te berekenen
    NewBand := true;            // indicator standaard in nieuwe sectie plaatsen
    ScaleRange := srAuto;       // indicatorschaal automatisch
    AvgType := CreateParameterSelect('MA type', 'Gewoon'#9'Gewogen'#9'Exponentieel'#9, 0, true);
    Length                    :=  CreateParameterInteger('Length'   , 1, 999, 57 , true);
  end;

{ Berekening }
  sTRH := MaxSeries(ShiftSeries(Close, 1), High);
  sTRL := MinSeries(ShiftSeries(Close, 1), Low);
  sAD := CreateSeries(BarCount);

  for i:=FirstValidIndex(Close)+1 to BarCount-1 do
  begin
    if Close[i] > Close[i-1] then
      AD := (Close[i] - sTRL[i])/Close[i]
    else
    if Close[i] < Close[i-1] then
      AD := (Close[i] - sTRH[i])/Close[i]
    else
      AD := 0;
    ADTotal := ADTotal + AD;
    sAD[i] := ADTotal;
  end;
  
  case AvgType of
    1: Avg := MA(sAD, MAWeighted, Length);
    2: Avg := MA(sAD, MAExponential, Length);
    else Avg := Ma(sAD, MASimple, Length);
  end;

{ Signalen }
  Signals := CrossingsToEntrySignals(Crossings(sAD, Avg));

{ Weergave }
  with CreateLine(sAD) do
  begin
    Name :='Williams A/D';
    Color := clPurple;
    LineContent := lcTAR;
  end;
  
  with CreateLine(Avg) do
  begin
    Name  :='Average';
    Color := clRed;
  end;
end.
acstolp@gmail.com
Berichten: 6
Lid geworden op: wo aug 09, 2017 11:44 am

Re: Larry William Accumulation / Distribution

Bericht door acstolp@gmail.com »

Ha Eric,
Bedankt voor je snelle reactie op mijn verzoek en jouw progameerwerk . Fijn dat je de procentuele verandering hebt gebruikt voor de TAR.
Ik kijk bij mijn analyse van aandelen zowel naar de divergenties in de Williams AD met de koers , als naar een kruising met een mav. Bernstein heeft een mooi handelsysteem in zijn boek beschreven dat ook gebruik maakt van mav's bij de WACD
Ik zet de door jouw geprogrameerde verse van de indicator in mijn WS en dan eens kijken...ben benieuwd

Vriendelijke groet,
Ad
Ta Deviant
Berichten: 6
Lid geworden op: wo mei 29, 2024 7:53 am

Re: Larry William Accumulation / Distribution

Bericht door Ta Deviant »

TA technische analyse heeft alles te maken met programmeren. Het afstandelijk beredeneren wat er aan de hand is. Een verstandig mens kan niet zonder, daarom hebben we Wallstreet toch. Een ode aan onze knappe koppen.
De "snelle" jongens van het "daytraden" laten soms zien wat de beperkingen van indicatoren zijn; het is een analyse van het verleden waaruit niet altijd de toekomst kan worden voorspeld, wat een belegger het liefste heeft...zekerheid. Wat mij in de "Limieten + signaal" aantrekt is dat je snel geïnformeerd wordt wat er acuut aan de hand is in jouw interesse gebied en dat je een seintje krijgt; wat je hebt ingesteld. Ook ik maak gebruik van indicatoren aangepast aan mijn wensen, beleggen is immers ook emotie. Je hebt ta regels en soms ook de KISS methode, de koers patronen en binnen die mix vind ik Limieten met een signaal een handige toepassing van Wallstreet. :D
Ta Deviant
Berichten: 6
Lid geworden op: wo mei 29, 2024 7:53 am

Re: Larry William Accumulation / Distribution

Bericht door Ta Deviant »

n.a.v. van een vraag had Eric via Louis dit geantwoord m.b.t. limieten;
voor zover de vraag over limieten nog actueel is m.b.t. dit onderwerp

Limietbewaking kan realtime signalen geven, waarvan de output (popup venster, geluidssignaal etv) via onderhoud – voorkeuren – limietbewaking kan worden ingesteld voor alle signalen;
Via Onderhoud - Limieten kunnen eenvoudige limieten (vaste niveaus, percentages stijging/daling) worden opgegeven, die vervolgens worden bewaakt;
Daarnaast kunnen elementen in een grafiek signalen geven. Dat kunnen lijnen zijn of indicatoren. Deze signalen worden alleen gegeven wanneer de grafiek is geopend in WS, dus als hij aanwezig is als venster. De signalen kunnen zichtbaar gemaakt worden als pijltjes in de grafiek, waarbij de pijltjes in het verleden geen realtime signaal zullen geven. Alleen pijltjes in de laatste bar van de grafiek geven realtime signalen;
Tekenobjecten (zoals horizontale lijnen) kunnen een doorbraak signaleren, waarbij geen onderscheid gemaakt kan worden tussen een opwaartse en neerwaartse doorbraak;
Ook de lijnen die te maken hebben met de berekende en handmatig instelbare steun/weerstand kunnen doorbraken signaleren, op dezelfde wijze als zelf getekende lijnen. Met deze lijnen bedoel ik de lijnen die zichtbaar te maken zijn via Grafiek – Steun/weerstand – Handmatige steun/weerstand, Concentratieniveaus en Piekniveaus. Deze lijnen worden aangeduid met de letters H, C en P. Door op deze lijnen te dubbelklikken kan in het tabblad Signalen net als bij gewone lijnen ingesteld worden of de doorbraken met de koersgrafiek weergegeven moeten worden met pijltjes en of ze bewaakt moeten worden middels limietbewaking. Wanneer je de signalen laat bewaken gebeurt dat alleen voor actuele signalen (in de laatste koersbar) en alleen zolang de grafiek is geopend. Je kunt de instellingen wel bewaren voor een volgende keer door te kiezen voor Grafiek – Indeling – Opslaan bij fonds.

Velen zijn bezig op verschillende manieren met Wallstreet en soms kan het handig zijn interesses, vragen en antwoorden te delen in het gebruikersbelang.
acstolp@gmail.com
Berichten: 6
Lid geworden op: wo aug 09, 2017 11:44 am

Re: Larry William Accumulation / Distribution

Bericht door acstolp@gmail.com »

Ha Eric,
Na gebruik van het TA- reporterprogram van WS bemerk ik de volgende dingen:
Het TAR signaal is nog niet gedefinieerd voor deze indicator. Ik zou graag een kruising van Williams AD met zijn mav ( naar keuze in soort en interval) willen gebruiken als voor-screening voor een lijst van aandelen die in mijn systeem gebruikt gaan worden. Je kunt nu bij de Tar scanner bij de filtervoorwaarde wel de mav selecteren, maar de aanvullende keuzes van aankruisvakjes worden niet door de scanner gebruikt. De lijst die gemaakt wordt bevat na de screening aandelen waarbij Williams AD boven en onder zijn mav ligt....Hoe moet dit opgelost worden?
Alvast dank voor de reply,

Vriendelijke groet,
Ad
Eric
Berichten: 3583
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry William Accumulation / Distribution

Bericht door Eric »

De signalen (pijltjes in de grafiek) die er nu in zitten komen op de kruisingen met de MA, dus wat je moet doen is filteren op de aan-/verkoopsignalen. Zo dus:
Schermopname (418).png
---
Eric
Eric
Berichten: 3583
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry William Accumulation / Distribution

Bericht door Eric »

Als je op de signalen van een enkele indicator wilt scannen kun je trouwens ook Overzicht - Technisch filter gebruiken. Dat heeft als voordeel dat je een periode kunt laten bekijken ipv 1 dag.
Schermopname (419).png
---
Eric
acstolp@gmail.com
Berichten: 6
Lid geworden op: wo aug 09, 2017 11:44 am

Re: Larry William Accumulation / Distribution

Bericht door acstolp@gmail.com »

Ik heb mijn vraag niet goed geformuleerd, denk ik
Als de kruising is opgetreden dan is de WAD indicator vervolgens in een koop of verkoop stand gekomen. Kan ik alleen de kruisingen signaleren en de WAD indicator boven of onder het mav is niet in te stellen? Bij de lijst die onstaat en die ik controleer zitten ook gevallen waarbij de reporter suggereert dat de indicator onder zijn gemiddelde ligt , maar in de grafiek zie ik dan een andere situatie en ligt de WAD boven zijn gemiddelde.

vgrt
Ad
Laatst gewijzigd door acstolp@gmail.com op wo jan 08, 2025 2:51 pm, 1 keer totaal gewijzigd.
Eric
Berichten: 3583
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry William Accumulation / Distribution

Bericht door Eric »

En dat is precies de reden waarom de TAR waarde ooit is geïntroduceerd! Een signaal van een kruising is maar op 1 moment, maar idealiter wil je op ieder moment een indruk van de technische stand van een indicator! Met een zinvolle TAR waarde is dit middels de TA reporter functies in WS mogelijk.

In jouw geval is dus niet de waarde van de A/D, maar de positie van de A/D ten opzichte van de MA bepalend voor het advies. Dus maken we een TAR waarde die het verschil is tussen de A/D en de MA.

Code: Selecteer alles

{- Filename: Williams Acc-Dist&mav -}


(*
Williams AD is a running sum of positive accumulation values (buying pressure) and negative distribution values (selling pressure), as determined by price's location within a given day's true range.

To calculate the Williams' Accumulation/Distribution indicator, determine:

True Range High (TRH) = Yesterday's close or today's high whichever is greater
True Range Low (TRL) = Yesterday's close or today's low whichever is less

The day's accumulation/distribution is then calculated by comparing today's closing price to yesterday's closing price.

If today's close is greater than yesterday's close: Today's A/D = today's close - TRLAd
If today's close is less than yesterday's close: Today's A/D = today's close - TRH
If today's close is the same as yesterday's close then the A/D is zero.
The Williams' Accumulation/Distribution indicator is a cumulative total of the daily values:

Williams A/D = Today's A/D + Yesterday's Williams A/D

Williams states it's worth selling if the price makes a new high and the indicator fails to follow suit. As well, it's better to purchase if prices fall to a new bottom yet the A/D indicator fails to reach a new low.
*)

var
  i, AvgType, Length : integer;
  AD, ADTotal: real;
  sTRH, sTRL, sAD, sAvg, sTAR: TSeries;

begin
{ Indicator eigenschappen }
  with Indicator do 
  begin
    RequiredBars := 100;    // Aantal benodigde koersen om eerste indicatorwaarde te berekenen
    NewBand := true;            // indicator standaard in nieuwe sectie plaatsen
    ScaleRange := srAuto;       // indicatorschaal automatisch
    AvgType := CreateParameterSelect('MA type', 'Gewoon'#9'Gewogen'#9'Exponentieel'#9, 0, true);
    Length                    :=  CreateParameterInteger('Length'   , 1, 999, 57 , true);
  end;

{ Berekening }
  sTRH := MaxSeries(ShiftSeries(Close, 1), High);
  sTRL := MinSeries(ShiftSeries(Close, 1), Low);
  sAD := CreateSeries(BarCount);

  for i:=FirstValidIndex(Close)+1 to BarCount-1 do
  begin
    if Close[i] > Close[i-1] then
      AD := (Close[i] - sTRL[i])/Close[i]
    else
    if Close[i] < Close[i-1] then
      AD := (Close[i] - sTRH[i])/Close[i]
    else
      AD := 0;
    ADTotal := ADTotal + AD;
    sAD[i] := ADTotal;
  end;
  
  case AvgType of
    1: sAvg := MA(sAD, MAWeighted, Length);
    2: sAvg := MA(sAD, MAExponential, Length);
    else sAvg := Ma(sAD, MASimple, Length);
  end;
  sTAR := SubtractSeries(sAD, sAvg);

{ Signalen }
  Signals := CrossingsToEntrySignals(Crossings(sAD, sAvg));

{ Weergave }
  with CreateLine(sAD) do
  begin
    Name :='Williams A/D';
    Color := clPurple;
  end;
  
  with CreateLine(sAvg) do
  begin
    Name  :='Average';
    Color := clRed;
  end;
  
  with CreateLine(sTAR) do
  begin
    Name  :='TAR';
    Color := clWhite;
    LineContent := lcTAR;
    Visible := false;
  end;
end.

De lijn met de TAR waarde heb ik default onzichtbaar gemaakt maar kan je ook zichtbaar krijgen:

Schermopname (420).png

Vervolgens kun je in de TAR scanner filteren op een TAR waarde groter dan 0 bijvoorbeeld:

Schermopname (421).png

Desgewenst kun je in TA Reporter - Onderhoud - TAR adviezen de TAR adviezen voor de indicator invullen, kleiner dan 0 Sell en groter dan nul Buy. Als je dat doet kun je in de TAR scanner ook op TAR signaal scannen.

---
Eric
Plaats reactie