Intraday candle teller

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

Intraday candle teller

Bericht door Eric »

Via de mail kwam deze vraag binnen:
is het mogelijk dat je een indicator maakt die een cijfer onder een candle zet, nu komt het, ik heb ook de indexen ind die beginnen om 2.00 uur, maar ik wil beginnen om 9.00 uur met de eerste candle, liefst in het wit het cijfer.
Zoiets?

Code: Selecteer alles

{- Filename: Intraday candle teller -}

procedure TextBelowBar(Bar: integer; Text: string; AColor: TColor);
begin
  with CreateText(BarPosition[Bar], Low[Bar], Text) do
  begin
    VertPosition := vpBottom;
    HorzPosition := hpCenter;
    Color        := AColor;
  end;
end;

var
  FirstBarTime: TDateTime;
  DayNr, NewDayNr, BarNr, i, iFirst: integer;
  NCol: TColor;
begin
  with Indicator do
  begin 
    RequiredBars := 10; 
    NewBand      := false; 
    HiddenParams := true;
  end; 

  FirstBarTime := CreateParameterTime('Tijd eerste bar', 9/24);
  NCol  := CreateParameterColor('Cijferkleur', clSilver);

  iFirst := FirstValidIndex(Close);
  for i:=iFirst to BarCount-1 do
  begin
    NewDayNr := trunc(DateTime[i]);
    if NewDayNr <> DayNr then
    begin
      DayNr := NewDayNr;
      BarNr := 1;
    end;
    if frac(DateTime[i]) >= FirstBarTime then
    begin
      TextBelowBar(i, IntToStr(BarNr), NCol);
      BarNr := BarNr+1;
    end;
  end;
end.
---
Eric
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Super Eric,
kan jij ook nog minder ruimte tussen het cijfer en de candle maken?
Eric
Berichten: 3663
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Intraday candle teller

Bericht door Eric »

Ik heb het hierboven aangepast.

---
Eric
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Toppie
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Werkt goed Eric, mijn dank, nog een vraag als ik in een 15 min grafiek bij de 1e candle van 9.00 het cijfer wil hebben moet ik 8.58 invullen toch bij tijd eerste bar?
Eric
Berichten: 3663
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Intraday candle teller

Bericht door Eric »

Dat weet ik niet, want ik weet niet wat jij bedoelt met "de candle van 9:00". Maar je ziet waar de 1 verschijnt toch? Als dat goed is voor jou dan niks meer aan doen.

De regel is: nummer 1 wordt geplaatst bij de eerste bar met een tijd (eindtijd, zoals weergegeven bovenin de grafiek) na de opgegeven tijd.

---
Eric
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Eric, werkt perfect, maar kan jij het cijfer nog iets lager zetten, zit nu tegen de candle aan
Eric
Berichten: 3663
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Intraday candle teller

Bericht door Eric »

Het is niet tot op de pixel te regelen, als dit nog niet is wat je wilt moet je het getal 0.9999 op de vijfde regel iets groter of kleiner maken (wel kleiner dan 1).

Code: Selecteer alles

{- Filename: Intraday candle teller -}

procedure TextBelowBar(Bar: integer; Text: string; AColor: TColor);
begin
  with CreateText(BarPosition[Bar], Low[Bar]*0.9999, Text) do
  begin
    VertPosition := vpBottom;
    HorzPosition := hpCenter;
    Color        := AColor;
  end;
end;

var
  FirstBarTime: TDateTime;
  DayNr, NewDayNr, BarNr, i, iFirst: integer;
  NCol: TColor;
begin
  with Indicator do
  begin 
    RequiredBars := 10; 
    NewBand      := false; 
    HiddenParams := true;
  end; 

  FirstBarTime := CreateParameterTime('Tijd eerste bar', 9/24);
  NCol  := CreateParameterColor('Cijferkleur', clSilver);

  iFirst := FirstValidIndex(Close);
  for i:=iFirst to BarCount-1 do
  begin
    NewDayNr := trunc(DateTime[i]);
    if NewDayNr <> DayNr then
    begin
      DayNr := NewDayNr;
      BarNr := 1;
    end;
    if frac(DateTime[i]) >= FirstBarTime then
    begin
      TextBelowBar(i, IntToStr(BarNr), NCol);
      BarNr := BarNr+1;
    end;
  end;
end.
---
Eric
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

helemaal goed zo, bedankt
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Eric, ik heb geprobeerd om he cijfer iets lager te zetten maar stenen stapelen lukt wel maar iets veranderen in software ook. alleen kreeg ik een foutmelding.
Zodra ik meer candels in en grafiek zet, dan zit het cijfer tocht te dicht tegen de staart van de candle aan, mocht jij deze weer iets lager zetten dan graag.
Alvast bedankt
Eric
Berichten: 3663
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Intraday candle teller

Bericht door Eric »

Ik probeer het probleem te begrijpen om de beste oplossing te vinden, want het lijkt mij dat het probleem niet direct is dat de cijfers te dicht tegen de candle staart aan zitten. Bij mij is het probleem eerder dat de cijfers door elkaar en door de grafiek heen gaan lopen als er te weinig ruimte is. Daar verandert het aanpassen van dat cijfertje niet zo heel veel aan. Heb je een voorbeeld van het beeld dat jouw probleem goed weergeeft?

---
Eric
Bijlagen
dax.GIF
dax2.GIF
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Eric, als je in de grafiek naar b.v bar 84-85-86 kijk dat bedoelde ik , uiteraard als ik een teveel bar is een grafiek zet dan krijg je wat jij bedoelt, zodra er bijna geen tail onder de bar zit heb je er ook geen last van.
mar kan jij iets inbouwen dat je het zelf kan regelen in de indicator?
knipsel.jpg
Eric
Berichten: 3663
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Intraday candle teller

Bericht door Eric »

Zoiets?

Code: Selecteer alles

{- Filename: Intraday candle teller -}

procedure TextBelowBar(Bar: integer; Text: string; AColor: TColor; APct: real);
begin
  with CreateText(BarPosition[Bar], Low[Bar]*(1-APct/100000), Text) do
  begin
    VertPosition := vpBottom;
    HorzPosition := hpCenter;
    Color        := AColor;
  end;
end;

var
  FirstBarTime: TDateTime;
  DayNr, NewDayNr, BarNr, i, iFirst: integer;
  NCol: TColor;
  Pct: integer;
begin
  with Indicator do
  begin
    RequiredBars := 10;
    NewBand      := false;
    HiddenParams := true;
  end;

  FirstBarTime := CreateParameterTime('Tijd eerste bar', 9/24);
  NCol  := CreateParameterColor('Cijferkleur', clSilver);
  Pct := CreateParameterInteger('Afstand cijfer tot candle (1-99)', 1, 99, 1, false);

  iFirst := FirstValidIndex(Close);
  for i:=iFirst to BarCount-1 do
  begin
    NewDayNr := trunc(DateTime[i]);
    if NewDayNr <> DayNr then
    begin
      DayNr := NewDayNr;
      BarNr := 1;
    end;
    if frac(DateTime[i]) >= FirstBarTime then
    begin
      TextBelowBar(i, IntToStr(BarNr), NCol, Pct);
      BarNr := BarNr+1;
    end;
  end;
end.
---
Eric
Bakstenen
Berichten: 1000
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Super bedankt Eric
Plaats reactie