Hoi Frans,
Helaas is er geen simpele berekening om van een datum naar een barnummer te gaan.
Er is wel een functie DateToJulian, waarmee je een datum kunt converteren naar een dagnummer. Dus onderstaande formule geeft je het aantal dagen geleden dat een datum is...
- Code: Selecteer alles
DateToJulian(CurrentDate)-DateToJulian(20041231-19000000);
Maar aan het aantal dagen heb je niet zoveel... je moet het aantal bars weten, en om precies op 31 december uit te komen moet je dus niet alleen rekening houden met de weekends, maar ook met de feestdagen.
Dat levert dan de volgende formule op...
- Code: Selecteer alles
5/7*(DateToJulian(CurrentDate)-DateToJulian(20041231-19000000))-XXX
waarbij XXX het aantal feestdagen is dat je moet invullen.
Als je dan bedenkt dat die hele formule op de plaats van de 65 moet komen in de eerdere formule, en als je dan ook nog de einddatum anders wil maken dan vandaag, dan moet je dus 2x zo'n gedoe intikken.
Het komt er dus op neer dat je een VestiCode functie nodig hebt die het voor je uitrekent. Die functie zou er uit moeten zien als onderstaande functie. (Als je me even een mailtje stuurt, dan stuur ik je de functie als bijlage)
- Code: Selecteer alles
value function vDateToBar ( value xDate=20051231 ) begin
value xBar=-1;
{--- normalise date to EL format ---}
if xDate>2000000 then xDate = xDate-19000000;
{--- find absolute bar number for date ---}
if xDate>Date then xBar := -1
else if xDate=Date then xBar := CurrentBar
else if xDate<Date and xBar=-1 then xBar := CurrentBar-1;
{--- return relative bar number ---}
if xBar<>-1 then vDateToBar := CurrentBar-xBar
else vDateToBar := -1;
end;
(voor de liefhebbers: op 18 januari a.s. is er een cursus VestiCode. Dat wordt voorlopig de laatste keer dat we deze cursus geven)
Met die functie achter de hand wordt ietsje makkelijker...
Voor de kolom Close2004 is dan de formule...
- Code: Selecteer alles
Close[vDateToBar(20041231)]
Voor de kolom Close2005 wordt dat...
- Code: Selecteer alles
Close[vDateToBar(20051231)]
Voor het Verschil geeft dat...
- Code: Selecteer alles
Close[vDateToBar(20051231)-Close[vDateToBar(20041231)]
En voor de kolom Rendement wordt de formule...
- Code: Selecteer alles
100*(Close[vDateToBar(20051231)]-Close[vDateToBar(20041231)])/Close[vDateToBar(20041231)]
Nog steeds een heel gedoe, maar het is te doen als je let op de ronde en de vierkante haken.
Het beste kun je overigens gewoon knippen en plakken, want dan voorkom je overtikfouten.
vr. groeten,
Pierre Dolmans
Vestics helpdesk