Negatieve Volume Indicator

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
bjorn
Berichten: 251
Lid geworden op: di jul 11, 2006 10:50 pm

Negatieve Volume Indicator

Bericht door bjorn » vr feb 08, 2008 9:32 am

Beste allen,

Wie heeft voor mij de negatieve volume indicator.
De formule luidt als volgt:
Indien het volume van vandaag lager is dan het volume van gisteren, dan is de formule:
NVI = NVI gisteren x ((Slotkoers - slotkoers gisteren) / Slotkoers gisteren) + NVI gisteren

Indien het volume van vandaag hoger is dan het volume van gisteren, dan is de NVI = NVI gisteren

Met vriendelijke groet
Björn

Kruismuis
Berichten: 60
Lid geworden op: ma dec 02, 2019 10:10 pm

Re: Negatieve Volume Indicator

Bericht door Kruismuis » zo dec 08, 2019 4:41 pm

De Indicator NVI heeft een probleem Als de parameter lengte anders wordt genomen dan 1 komt er geen grafiek meer op het scherm.
In het verhaal van Fosback staat het volgende ik citeer " NVI van Norman Fosback. Het is een indicator die zich laat leiden door het volumegedrag. Als het Volume gelijk is aan de vorige periode wijzigt er niets. Als er sprake is van een lager Volume dan wijzigt het NVI aan de hand van het verschil tussen de procentuele prijs van gisteren en die van vandaag. Bij een hoger Volume wordt de NVI niet aangepast (maar wel de PVI). De NVI wordt gezien als een goede voorspeller van Bullmarkten als hij boven zijn Voortschrijdend Jaargemiddelde komt. Formule: NVI = NVI(vorige dag)*(Close/Close(vorige dag))."
Zou iemand die al verder is met het TA taaltje eens kunnen kijken of daar wat van te maken is met de SupportedSignals := [sgEnterLong, sgEnterShort]; functie Kortom met kruisingen functie .
De achtergrond lijkt niet slechter dan allerlei andere indicatoren.

Code: Selecteer alles

{- Filename: NVI -}
{ Negative Volume Index – indicator  }
{ NVI van Norman Fosback. Het is een indicator die zich laat leiden door het volumegedrag.}
{ Als het Volume gelijk is aan de vorige periode wijzigt er niets.}
{ Als er sprake is van een lager Volume dan wijzigt het NVI aan de hand van het verschil}
{ tussen de procentuele prijs van gisteren en die van vandaag. }
{ Bij een hoger Volume wordt de NVI niet aangepast (maar wel de PVI).}
{ De NVI wordt gezien als een goede voorspeller van Bullmarkten als hij boven}
{ zijn Voortschrijdend Jaargemiddelde komt. Formule: NVI = NVI(vorige dag)*(Close/Close(vorige dag)).}
var
  i,Length: integer;
  sNVI,ROCH,CloseShift: TSeries;
begin

  with Indicator do
  begin
    RequiredBars := 2;
    Shortname    := 'NVI';
  end;
   Length := CreateParameterInteger('Length', 1, 999, 1, true);

   CloseShift := ShiftSeries(Close, Length);
   ROCH := DivideSeries(SubtractSeries(Close,CloseShift),CloseShift) ;



  sNVI := FillSeries(CreateSeries(BarCount),1);

  for i:=1 to BarCount-1 do
  begin
    if Volume[i] < Volume[i-1] then sNVI[i] := sNVI[i-1] + sNVI[i-1] * ROCH[i] else sNVI[i] := sNVI[i-1] + 0;
  end;

  with CreateLine(sNVI) do
  begin
    Name := 'NVI';
    Color := clRed;
  end;
end.
Met vriendelijke groeten van Kruismuis

Eric
Berichten: 3121
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Negatieve Volume Indicator

Bericht door Eric » zo dec 08, 2019 4:57 pm

Ik zie dat je "gisteren" hebt willen vervangen door "Length bars geleden", maar dat heb je volgens mij niet helemaal consequent gedaan. Probeer het hiermee eens. Welke kruising zou je als signaal willen gebruiken?

Code: Selecteer alles

{- Filename: NVI -}
{ Negative Volume Index – indicator  }
{ NVI van Norman Fosback. Het is een indicator die zich laat leiden door het volumegedrag.}
{ Als het Volume gelijk is aan de vorige periode wijzigt er niets.}
{ Als er sprake is van een lager Volume dan wijzigt het NVI aan de hand van het verschil}
{ tussen de procentuele prijs van gisteren en die van vandaag. }
{ Bij een hoger Volume wordt de NVI niet aangepast (maar wel de PVI).}
{ De NVI wordt gezien als een goede voorspeller van Bullmarkten als hij boven}
{ zijn Voortschrijdend Jaargemiddelde komt. Formule: NVI = NVI(vorige dag)*(Close/Close(vorige dag)).}
var
  i,Length: integer;
  sNVI,ROCH,CloseShift: TSeries;
begin
  Length := CreateParameterInteger('Length', 1, 999, 1, true);

  with Indicator do
  begin
    RequiredBars := Length+1;
    Shortname    := 'NVI';
  end;

  CloseShift := ShiftSeries(Close, Length);
  ROCH := DivideSeries(SubtractSeries(Close, CloseShift), CloseShift) ;

  sNVI := FillSeries(CreateSeries(BarCount), 1);

  for i:=Length to BarCount-1 do
  begin
    if Volume[i] < Volume[i-Length] then
      sNVI[i] := sNVI[i-1] + sNVI[i-1] * ROCH[i]
    else
      sNVI[i] := sNVI[i-1];
  end;

  with CreateLine(sNVI) do
  begin
    Name := 'NVI';
    Color := clRed;
  end;
end.
---
Eric

Eric
Berichten: 3121
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Negatieve Volume Indicator

Bericht door Eric » zo dec 08, 2019 5:02 pm

Of nog wat eenvoudiger:

Code: Selecteer alles

{- Filename: NVI -}
{ Negative Volume Index – indicator  }
{ NVI van Norman Fosback. Het is een indicator die zich laat leiden door het volumegedrag.}
{ Als het Volume gelijk is aan de vorige periode wijzigt er niets.}
{ Als er sprake is van een lager Volume dan wijzigt het NVI aan de hand van het verschil}
{ tussen de procentuele prijs van gisteren en die van vandaag. }
{ Bij een hoger Volume wordt de NVI niet aangepast (maar wel de PVI).}
{ De NVI wordt gezien als een goede voorspeller van Bullmarkten als hij boven}
{ zijn Voortschrijdend Jaargemiddelde komt. Formule: NVI = NVI(vorige dag)*(Close/Close(vorige dag)).}
var
  i,Length: integer;
  sNVI: TSeries;
begin
  Length := CreateParameterInteger('Length', 1, 999, 1, true);

  with Indicator do
  begin
    RequiredBars := Length+1;
    Shortname    := 'NVI';
  end;

  sNVI := FillSeries(CreateSeries(BarCount), 1);

  for i:=Length to BarCount-1 do
  begin
    if Volume[i] < Volume[i-Length] then
      sNVI[i] := sNVI[i-1] * Close[i] / Close[i-Length]
    else
      sNVI[i] := sNVI[i-1];
  end;

  with CreateLine(sNVI) do
  begin
    Name := 'NVI';
    Color := clRed;
  end;
end.
---
Eric

Kruismuis
Berichten: 60
Lid geworden op: ma dec 02, 2019 10:10 pm

Re: Negatieve Volume Indicator

Bericht door Kruismuis » zo dec 08, 2019 5:06 pm

Voortschrijdend Jaargemiddelde volgens het stukje van Fosback
Dus de Length stond verkeerde plaats.
Hij werkt weer zoals het hoort
Met vriendelijke groeten van Kruismuis

Kruismuis
Berichten: 60
Lid geworden op: ma dec 02, 2019 10:10 pm

Re: Negatieve Volume Indicator

Bericht door Kruismuis » zo dec 08, 2019 5:17 pm

logisch tot dusver
Met vriendelijke groeten van Kruismuis

Eric
Berichten: 3121
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Negatieve Volume Indicator

Bericht door Eric » zo dec 08, 2019 5:39 pm

Met signalen zou het dan zoiets worden:

Code: Selecteer alles

{- Filename: NVI -}
{ Negative Volume Index – indicator  }
{ NVI van Norman Fosback. Het is een indicator die zich laat leiden door het volumegedrag.}
{ Als het Volume gelijk is aan de vorige periode wijzigt er niets.}
{ Als er sprake is van een lager Volume dan wijzigt het NVI aan de hand van het verschil}
{ tussen de procentuele prijs van gisteren en die van vandaag. }
{ Bij een hoger Volume wordt de NVI niet aangepast (maar wel de PVI).}
{ De NVI wordt gezien als een goede voorspeller van Bullmarkten als hij boven}
{ zijn Voortschrijdend Jaargemiddelde komt. Formule: NVI = NVI(vorige dag)*(Close/Close(vorige dag)).}
var
  i,Length: integer;
  sNVI, sMA: TSeries;
begin
  Length := CreateParameterInteger('MA Length', 1, 999, 365, true);

  with Indicator do
  begin
    RequiredBars := Length+1;
    Shortname    := 'NVI';
  end;

  sNVI := FillSeries(CreateSeries(BarCount), 1);

  for i:=1 to BarCount-1 do
  begin
    if Volume[i] < Volume[i-1] then
      sNVI[i] := sNVI[i-1] * Close[i] / Close[i-1]
    else
      sNVI[i] := sNVI[i-1];
  end;
  sMA := MA(sNVI, maSimple, Length);
  
  Signals := CrossingsToEntrySignals(Crossings(sNVI, sMA));

  with CreateLine(sNVI) do
  begin
    Name := 'NVI';
    Color := clRed;
  end;
  with CreateLine(sMA) do
  begin
    Name := 'MA';
    Color := clLime;
  end;
end.
---
Eric

Kruismuis
Berichten: 60
Lid geworden op: ma dec 02, 2019 10:10 pm

Re: Negatieve Volume Indicator

Bericht door Kruismuis » zo dec 08, 2019 7:45 pm

Veel dank Hoe is het mogelijk zo snel .Volgens mij is dit wat de bedenker van het NVI systeem bedoeld heeft. En wat fraai dat de create parameter nu gewisseld is naar de ma tijd en de sNVI nu vanaf 1 loopt. die langere for loop merk ik niet in de uitvoering. Heerlijk om dit programmeer werk te bekijken. Natuurlijk meteen los gelaten op een paar grafieken.
Met vriendelijke groeten van Kruismuis

Plaats reactie