Intraday candle teller

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
Eric
Berichten: 3641
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: 992
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: 3641
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: 992
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

Toppie
Bakstenen
Berichten: 992
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: 3641
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: 992
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: 3641
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: 992
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Intraday candle teller

Bericht door Bakstenen »

helemaal goed zo, bedankt
Plaats reactie