Gann

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Vanavond even de nieuwe versie voor W$ geïnstalleerd.
Natuurlijk wilde ik gelijk even de FillLinesRegion() uitproberen, en het effect is FANTASTISCH ;).
Een prachtige toevoeging voor ta-script Eric .
Eindelijk zijn we van die verticale-lijntjes af(wanneer je wat inzoomt) in bijvoorbeeld de Cloud grafiek.

Hieronder even een voorbeeldje voor de AEX met daarin het 256 daags MM.frame en de Cloud grafiek.
Een plaatje .. ;)
Grafiek 1:
Afbeelding
.
Een perfecte weergave van 'The Cloud'.
Tevens ziet u hoe de AEX steun vindt op de cirkel en de 3/8 lijn, de index wil kennelijk graag in de tradingrange blijven.
.
Succes,
Vriendelijke groet
.
Laatst gewijzigd door Janus op wo jun 22, 2011 10:01 pm, 1 keer totaal gewijzigd.
Vriendelijke groet,
JanS ;)

paulkr
Berichten: 379
Lid geworden op: ma jun 25, 2007 1:34 pm
Locatie: Den Bosch

Re: Gann

Bericht door paulkr »

Wow ziet er prachtig uit is het mogelijk om het script te posten Jans?
Gr Paul

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Hieronder even het script Paulkr.
Ik heb het script van PaulM gebruikt, omdat die zo mooi het resterende gedeelte van de wolk aan het einde van de grafiek erbij laat tekenen.
De FillLineRegion() functie vult de gebieden op tussen lijnen die gemaakt zijn via createline() , dus het gebied wat PaulM tekent met CreateTrendLine() wordt niet opgevuld.
Hieronder evende ta-code:

Code: Selecteer alles

{- Filename: Ichimoku Kinko Hyo PaulM -}

function AddWorkDays(Date: TDateTime; WorkDays: integer): TDateTime;
var
  n: integer;
Begin
  n := DayOfWeek(Date)-2;
  WorkDays := WorkDays + n;
  Result := (Date-n) + (WorkDays div 5) * 7 + (WorkDays mod 5);
End;
//
function AddMinutes(DateTime: TDateTime;n:integer): TDateTime;
var
   DayNr,Time: TDateTime;
   j,k: integer;
Begin
  Time := frac(DateTime);
  j := 1;
  k := 0;
  While  j < n + 1 do
  begin
    If Time > Instrument.MarketClose Then
      Begin
        k := k + 1;
        Time := Instrument.MarketOpen;
      End;
    DayNr := AddWorkDays(datetime, k);
    Time := Time + barinterval;
    j := j + 1;
    Result := trunc(DayNr) + Time;
  End;
End;
//
function AddMonths(Date: TDateTime; Months: integer): TDateTime;
var
  YY, MM, DD: integer;
Begin
  DecodeDate(Date, YY, MM, DD);
  DD := 1;
  MM := MM + Months;
  YY := YY + ((MM-1) div 12);
  MM := (MM-1) mod 12 + 1;
  if MM <= 0 then
   Begin
    MM := MM + 12;
    YY := YY -1;
   End;
  Result := EncodeDate(YY, MM, DD);
End;
//
function CalcBarPosition(n: integer; CalendarDays: boolean): TDateTime;
Begin
  if BarCount > 0 Then
    Result := BarPosition[BarCount-1]
  else
    Result := Date;
  if BarInterval = 1 then
    if CalendarDays then
      Result := Result + n
    else
      Result := AddWorkDays(Result, n)
  else
  if BarInterval = 7 then
    Result := AddWorkDays(Result, 5*n)
  else
  if BarInterval = 30 then
    Result := AddMonths(Result, n)
  else
  if BarInterval = 90 then
    Result := AddMonths(Result, 3*n)
  else
  if BarInterval = 365 then
    Result := AddMonths(Result, 12*n)
  else
  if BarInterval < 1 then
    Result := AddMinutes(Result,n);
End;
//
Function KleurSelec(Selec:Integer): TColor;
 Begin
   case Selec of
     1:  Result := clAqua;              2:  Result := clBlack;
     3:  Result := clBlue;              4:  Result := clDkGray;
     5:  Result := clFuchsia;           6:  Result := clGray;
     7:  Result := clGreen;             8:  Result := clLime;
     9:  Result := clltGray;            10: Result := clMaroon;
     11: Result := clNavy;              12: Result := clOlive;
     13: Result := clPurple;            14: Result := clRed;
     15: Result := clSilver;            16: Result := clTeal;
     17: Result := clWhite;             18: Result := clYellow;
     else
       Result := clGray;
   end;
End;
//
Procedure Teken(serie:TSeries;Naam:String;Kleur:Tcolor;Dik:Integer);
Begin
  With CreateLine(Serie) Do
    Begin
      Name  := Naam;
      Color := Kleur;
      Width := Dik;
    End;
End;
//
Procedure TekenVert(a,b,c,d:TSeries;Kleur:Tcolor;Dik:Integer;Soort:TLineType;Naam:String);
Begin
 With  CreateLineOHLC(a,b,c,d) Do
  Begin
    Color    := Kleur;
    Width    := Dik  ;
    LineType := Soort;
    Name     := Naam ;
  End;
End;
//
Procedure TekenTrLine(Dat1:TdateTime;Y1:Real;Dat2:TDateTime;Y2:Real;Kleur:TColor;Dik:Integer;Soort:TLineType);
   Begin
     With CreateTrendLine(Dat1,Y1,Dat2,Y2) Do
      Begin
        Color := Kleur;
        Width := Dik  ;
        Style := Soort;
      End;
   End;
//
var
    Period1,Period2,Period3,i,j,PositionBar, StlKze               : integer;
    Tenkan_Sen,Kijun_Sen,Chikou_Span                              : TSeries;
    PrevDate                                                      : real ;
    Senkou_Span_A,Senkou_Span_B,Senkou_Span_A_LB,Senkou_Span_B_LB : TSeries;
    Shift_A_LB,Shift_B_LB                                         : TSeries;
    AColor,ClrSpanA,ClrSpanB,ClrTenkan,ClrKijun,
    ClrChikou,ClrKoers,ClCldUp,ClCldDwn                           : TColor;
    NewDate                                                       : TDateTime;
    Tekst1                                                        : String;
    Arcering  :Array[0..7] Of TBrushStyle;
Begin

Tekst1 := 'Effenvlak'               #9
          'Geen arcering'           #9
          'Horizontale lijnen'      #9
          'Verticale lijnen'        #9
          'Diagonale lijnen omlaag' #9
          'Diagonale lijnen omhoog' #9
          'Kruislijnen horizontaal' #9
          'Kruislijnen diagonaal'   ;

   Period1 := CreateParameterInteger('Period1', 1, 999 , 9, true);
   Period2 := CreateParameterInteger('Period2', 1, 999, 26, true);
   Period3 := CreateParameterInteger('Period3', 1, 999, 52, true);
   ClCldUp := CreateParameterColor('Kleur Cloud Up:  ',ClLime);
   ClCldDwn:= CreateParameterColor('Kleur Cloud Down:',ClRed );
   StlKze  := CreateParameterSelect('Type vulling Cloud:',Tekst1,0,False);

 With Indicator do
    Begin
      ShortName            :='Ichimoku Chart';
      RequiredBars         := 5 * Maxint(Maxint(Period1,Period2),Period3);
      Indicator.NewBand    := false;
      Indicator.ScaleRange := srCommon;
    End;

{** Invullen Arcering-tabel **}
 Arcering[0]:= bsSolid;
 Arcering[1]:= bsClear;
 Arcering[2]:= bsHorizontal;
 Arcering[3]:= bsVertical;
 Arcering[4]:= bsFDiagonal;
 Arcering[5]:= bsBDiagonal;
 Arcering[6]:= bsCross;
 Arcering[7]:= bsDiagCross;

  Tenkan_Sen        := DivideSeriesBy(AddSeries(HighSeries(High,Period1),LowSeries(Low,Period1)),2);
  Kijun_Sen         := DivideSeriesBy(AddSeries(HighSeries(High,Period2),LowSeries(Low,Period2)),2);
  Chikou_Span       := ShiftSeries(Close,-Period2 );
  Senkou_Span_A     := ShiftSeries(DivideSeriesBy(AddSeries(Tenkan_Sen,Kijun_Sen),2),Period2);
  Senkou_Span_B     := ShiftSeries(DivideSeriesBy(AddSeries(HighSeries(High,Period3),LowSeries(Low,Period3)),2),Period2);
  Senkou_Span_A_LB  := DivideSeriesBy(AddSeries(Tenkan_Sen,Kijun_Sen),2);
  Senkou_Span_B_LB  := DivideSeriesBy(AddSeries(HighSeries(High,Period3),LowSeries(Low,Period3)),2);
  Shift_A_LB        := ShiftSeries(DivideSeriesBy(AddSeries(Tenkan_Sen,Kijun_Sen),2),1);
  Shift_B_LB        := ShiftSeries(DivideSeriesBy(AddSeries(HighSeries(High,Period3),LowSeries(Low,Period3)),2),1);

  ClrSpanA   := KleurSelec( 7);    ClrSpanB   := KleurSelec(14);
  ClrTenkan  := KleurSelec(14);    ClrKijun   := KleurSelec( 3);
  ClrChikou  := KleurSelec( 5);    ClrKoers   := KleurSelec( 2);

for i := Firstvalidindex(Senkou_Span_B)+1 to barcount-1 do
 Begin
  PrevDate := CalcBarPosition(0, false);
  If i = barcount - 1 then
   Begin
    For j := 1 to Period2 do
     Begin
      NewDate     := CalcBarPosition(j, false);
      PositionBar := Period2 - j;
      TekenTrLine(PrevDate, Shift_B_LB[i-PositionBar], NewDate, Senkou_Span_B_LB[i-PositionBar],ClrSpanB,2,lsSolid);
      TekenTrLine(PrevDate,Shift_A_LB[i-PositionBar],NewDate,Senkou_Span_A_LB[i-PositionBar],ClrSpanA,2,lsSolid);
       If Isvalid(Senkou_Span_A_LB[i-PositionBar]) and Isvalid(Senkou_Span_B_LB[i-PositionBar]) then
        Begin
         AColor:= KleurSelec(10);
         If (Senkou_Span_A_LB[i-PositionBar])>(Senkou_Span_B_LB[i-PositionBar]) Then AColor := KleurSelec(16);
        End;
      TekenTrLine(NewDate , Senkou_Span_A_LB[i-PositionBar], NewDate, Senkou_Span_B_LB[i-PositionBar],AColor,3,lsSolid);
      PrevDate := NewDate;
     End;
   End;
  If Isvalid(Senkou_Span_A[i]) and Isvalid(Senkou_Span_B[i]) Then
    Begin
      SetBarColor(0,i,KleurSelec(10));
      If (Senkou_Span_A[i])>(Senkou_Span_B[i]) Then SetBarColor(0,i,KleurSelec(16));
    End;
 End;
 
FillLinesRegion(0,1,clCldUp,clCldDwn,Arcering[StlKze]);
Teken(Senkou_Span_A,'Senkou_Span_A',ClrSpanA ,1);
Teken(Senkou_Span_B,'Senkou_Span_B',ClrSpanB ,1);
Teken(Tenkan_Sen   ,'Tenkan_Sen'   ,ClrTenkan,2);
Teken(Kijun_sen    ,'Kijun-Sen'    ,ClrKijun ,2);
Teken(Chikou_Span  ,'Chikou_Span'  ,ClrChikou,2);
TekenVert(Open,High,Low,Close,ClrKoers,1,ltCandlestick,'Koers');

END.

Vriendelijke groet,
JanS ;)

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Even een korte update met wat mogelijkheden ...

23-06-2011:
Alweer een dag voorbij.
Heeft u dat gevoel ook wel eens, dat u een dag per dag tekort komt om datgene te doen wat u 's -morgens in uw hoofd heeft om te gaan doen?
De Heren/Dames beleggers waren vandaag weer een beetje depri ;-)
Negatieve uitblinker de laatste dagen is ook Philips.
Tranen schieten in je ogen wanneer je bekijkt hoe de Heren managers zo'n prachtig bedrijf de laatste jaren volledig naar de ondergang hebben geleid, Frits zou zich omdraaien in zijn graf ;)
Ook nu, de laatste jaren, waarin het steeds slechter gaat met het bedrijf Philips, heeft de arrogantie daar zo'n hoge toon, dat steeds meer handelaren zich afkeren van het merk Philips, terwijl het merk Philips het toch van de handel moet hebben!
En ook nu dringt dat besef nog steeds niet door daar, wie maakt ze wakker, de curator ?
De kwaliteit heeft in de honger naar winst op korte termijn, op diverse niveaus, met diverse producten, een dusdanig laag niveau bereikt, dat zelfs de gemiddelde voddenboer er --censuur--!
Het voorbeeld wanneer je wilt zien hoe managers met een korte termijn visie een prachtig bedrijf naar de ondergang leiden, echt weer een geval van studieboekjeskennis !
Elk realisme ontbreekt daar!
En zo gaat het met veel bedrijven op op veel niveaus, visie ontbreekt, korte termijn resultaat leidt, met ondergang als gevolg.
Gingen de Romeinen ten onder aan Lood vergiftiging, de hedendaagse bedrijven gaan ten onder aan korte termijn visie en studieboekjes technieken, men stelt managers aan zonder enige kennis van het bedrijf, en de mensen met kennis laat men 'buiten' staan om dat men een of ander waardeloos papiertje niet op zak heeft ... STOM! Zo gaat een generatie/ een prachtig bedrijf verloren !
En dat niet alleen bij Philips!
*
Maar dat zal mij een worst wezen, ik ben allang uit Philips, sinds ik kennis maakte met de stupide arrogantie die heerst in dat bedrijf, op tijd weg wezen dacht ik, hoogmoed komt immers voor de val, dat blijkt wel weer!
Geen hoog opgeleid niveau hier, gewoon simpele boerenkennis, en dat heeft mij weer behoed voor verlies door die "hoog opgeleide heren" :-(
*
Even terug naar onze 'prachtige index'...
Als eerst even een grafiekje met de Ichimoku Kinko Hyo grafiek erin , ofwel de wolk ook wel The Cloud genoemd:
Grafiek 1:
Afbeelding

In grafiek 1 ziet de Cloud grafiek, en u ziet het verkoopsignaal op ~358.
De koers deed vandaag 328.
30 punten in één maand, keer 1 future is 6000,-- euro, ik begrijp dat u daar uw bed niet voor uitkomt, maar er zijn mensen die het met minder per maand moeten doen!
U kan natuurlijk ook met meer futures meedoen wanneer u 6000,-- per maand te weinig vind ;)
Ziet u de stippellijn in grafiek 1 en hoe de koers daar vandaag steun leek te vinden, zo ziet u hoe volgens de regels van 'The Cloud ', de koers steun vind op eerdere 'bodems'.
De regels heb ik in basis uitgelegd, u mag ze lezen onder de link: --> http://www.jstas.com/2010/cloud.htm
.
Dan kreeg ik van mijn goede vriend Bruno een opmerking over de eerder geplaatste MurreyMath grafiek met het 256 daags frame.
De tijdlijnen zijn onjuist!
Sinds de laatste update van W$ zijn bij mij veel datums 'verhuist' naar de voor W$ onmogelijke datum 1899 ( dit i.v.m de Excel basis van W$ )
Inmiddels heb ik al veel gecorrigeerd, en hieronder vindt u even de gecorrigeerde Murreymath grafiek op 256 dagen basis, excuses voor het ongemak :-)
Grafiek 2:
Afbeelding

We zien weer een perfecte steun van de 3/8 lijn, de koers wil graag in de trading range blijven.
Let u ook eens op de wijzigingen in koersrichting zoals bijv. op de 3/8 en 4/8 tijdlijn.
.
Morgen weer een lange dag, deze boer duikt de bedstee in ;-)
Succes gewenst !
.
Vriendelijke groet,
JanS ;)

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

26-06-2011,
Vanmorgen een begin gemaakt met wusk1.
Wusk is niet zomaar een bevlieging, er zit een verhaal achter.
Wie zich er iets in wil verdiepen kan het begin lezen onder de link --> http://www.jstas.com/WUSK/WUSK.htm
Het is nog zoveel meer, maar dat volgt een andere keer ;)
In de hier onder weergegeven indicator ziet u Pythagoras terug komen.
U weet vast nog wel vanuit uw basis opleiding het regeltje dat het kwadraat van rechthoekzijde-A- + het kwadraat van rechthoekzijde -B- het kwadraat van schuine zijde -C- is.
Kwadraat moet u lezen (vanuit de oude geschriften) als vierkant !
Er staat dus eigenlijk hierboven, dat de som van de oppervlakte van het vierkant aan de ene rechthoekzijde plus het oppervlak van het vierkant aan de andere rechthoekzijde gelijk is aan het oppervlak van het vierkant van de schuine zijde.
De oppervlakte is in dit geval prijsverschil vermenigvuldigt met de verlopen tijd, en vanuit mijn stukje wusk weet u dat dit vermogen is!
**
Pythagoras ziet u uitgezet in de grafiek hieronder.
De rode lijn is de lijn welke is uitgezet door middel van de ingegeven data, de eerste echte top vanuit het dal.
*Uitleg volgt later*
Ik had vandaag enkele uren aan deze eerste vrije versie van deze indicator willen besteden, maar onverwacht bezoek bracht daar verandering in, volgende keer wellicht meer .
//
Hieronder vast de ta-script code voorzover ik die voor u had klaarliggen:

Code: Selecteer alles

{- Filename: WUSK1 -}
//Voor uitleg : zie www.jstas.com/WUSK/WUSK.htm
//Versie 1.00
//dd. 26-06-2011
//

{******************************************************************************}
{****************************Record eigenschappen *****************************}
Type
  WUSK = Record
    StrtDat, EndDat : TDateTime;
    CntStrt, CntEnd, KzeTab, VrKz1,VrKz2                    : Integer;
    StrtH, StrtL,EndH,EndL,VctrLgt,Strt,Fctr                : Real   ;
    Tab1                                    : Array[1..8] Of Extended;
    ClrTb1                                  : Array[1..8] Of TColor  ;
    Clr1,Clr2,Clr3,Clr4,Clr5,Clr6,Clr7,Clr8                 : TColor ;
    Serie1,Serie2,Serie3,Serie4,Serie5,Serie6,Serie7,Serie8 : TSeries;
  End;
  
Var
wk : WUSK;

//
{******************************************************************************}
{************************** Initialisaties ************************************}
Procedure Initialisaties();
Begin
With Indicator Do
 Begin
  NewBand      := False;
  RequiredBars := 10000;   // nog aanpassen!
  ScaleRange   := SrCommon;
  HiddenParams := True;
 End;
 
wk.Clr1 := ClWhite ;
wk.Clr2 := ClPurple;
wk.Clr3 := ClRed   ;
wk.Clr4 := ClPurple;
wk.Clr5 := ClWhite ;
wk.Clr6 := ClAqua  ;
wk.Clr7 := ClYellow;
wk.Clr8 := ClGray  ;
 
wk.Serie1 := CreateSeries(BarCount);
wk.Serie2 := CreateSeries(BarCount);
wk.Serie3 := CreateSeries(Barcount);
wk.Serie4 := CreateSeries(BarCount);
wk.Serie5 := CreateSeries(BarCount);
wk.Serie6 := CreateSeries(BarCount);
wk.Serie7 := CreateSeries(BarCount);
wk.Serie8 := CreateSeries(BarCount);

End;
 //
{******************************************************************************}
{*************************** Userchoices **************************************}
Procedure Userchoices();
Var
TabTekst : String;

Begin
TabTekst  := 'Fibonacci';   // uitbreiding volgt later ...
wk.StrtDat:= CreateParameterDate('Startdatum 1e set',EnCodeDate(2009,03,09));
wk.EndDat := CreateParameterDate('Eind-datum 1e Set',EnCodeDate(2009,06,03));
wk.KzeTab := CreateParameterSelect('Welke tabel?',TabTekst,0,False);
wk.VrKz1 := CreateParameterInteger('Promillage Keuzering 1',1,10000,887,False);
wk.VrKz2 := CreateParameterInteger('Promillage Keuzering 2',1,10000,1059,False);
End;
//
{******************************************************************************}
{*************************** Ophalen Data *************************************}
Procedure GetData();
Var i:Integer;
Begin
 For i:=1 To BarCount-1 Do
  Begin
   If  Trunc(DateTime[i]) = Trunc(wk.StrtDat) Then
    Begin
     wk.CntStrt :=i;
     wk.StrtH := H[i];
     wk.StrtL := L[i];
    End;
   If Trunc(DateTIme[i]) = Trunc(wk.EndDat) Then
    Begin
     wk.CntEnd :=i;
     wk.EndH := H[i];
     wk.EndL := L[i];
    End;
  End;

 If wk.StrtH>wk.EndL Then
   Begin
    wk.VctrLgt:= Sqrt(Sqr(wk.StrtH-wk.EndL)+Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtH;
    wk.Fctr := -1.0;
   End;
 If wk.StrtL<wk.EndL Then
   Begin
    wk.VctrLgt := Sqrt(Sqr(wk.EndH-Wk.StrtL) +Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtL;
    wk.Fctr := 1.0;
   End;

End;
//
{******************************************************************************}
{*************************** Tabel Fibonacci verdeling ************************}
Procedure TabelFib();
Var Phi:Extended;
Begin
Phi := (Sqrt(5)-1)/2;
wk.Tab1[1]:= 0.0000;
wk.Tab1[2]:= Sqr(Phi);
wk.Tab1[3]:= 0.5000;
wk.Tab1[4]:= Phi;
wk.Tab1[5]:= Sqrt(Phi);
wk.Tab1[6]:= 1.0000;
wk.Tab1[7]:= wk.VrKz1/1000.0;
wk.Tab1[8]:= wk.VrKz2/1000.0;
End;
//
{******************************************************************************}
{**************************** Invullen Kleurtabel-1 ***************************}
Procedure Fill_Color_table_1();
Begin
wk.ClrTb1[1] := wk.Clr1;
wk.ClrTb1[2] := wk.Clr2;
wk.ClrTb1[3] := wk.Clr3;
wk.ClrTb1[4] := wk.Clr4;
wk.ClrTb1[5] := wk.Clr5;
wk.ClrTb1[6] := wk.Clr6;
wk.ClrTb1[7] := wk.Clr7;
wk.ClrTb1[8] := wk.Clr8;
End;
//
{******************************************************************************}
{************************* vullen bepaalde serie ******************************}
Function Vul_serie(Pos,Start:Real;Factor:Extended):TSeries;
Var
i    : Integer;
Vctr : Real;
Begin
  Vctr:=  wk.Vctrlgt*Factor;
   For i:=1 To BarCount-1 Do
    Begin
      If i >= wk.CntStrt Then
       Begin
        If Sqr(Vctr) >= Sqr(i-wk.CntStrt) Then
        Begin
          Result[i]:= Start+ Pos*(Sqrt(Sqr(Vctr)-Sqr(i-wk.CntStrt)));
        End;
       End;
    End;
End;
//
{******************************************************************************}
{************************* Vullen diverse series ******************************}
Procedure Fill_Series();
Var
Start, pos : Real;
Begin
case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        pos   := -1.0;
      End;
 End;

wk.Serie1:=Vul_Serie(Pos,Start,wk.Tab1[1]);
wk.Serie2:=Vul_Serie(Pos,Start,wk.Tab1[2]);
wk.Serie3:=Vul_Serie(Pos,Start,wk.Tab1[3]);
wk.Serie4:=Vul_Serie(Pos,Start,wk.Tab1[4]);
wk.Serie5:=Vul_Serie(Pos,Start,wk.Tab1[5]);
wk.Serie6:=Vul_Serie(Pos,Start,wk.Tab1[6]);
wk.Serie7:=Vul_Serie(Pos,Start,wk.Tab1[7]);
wk.Serie8:=Vul_Serie(Pos,Start,wk.Tab1[8]);

End;
//
{******************************************************************************}
{***************************** Tekenen lijnen *********************************}
Procedure lijn(serie:TSeries;Kleur:TColor);
Begin
 With CreateLine(serie) DO
    Begin
      Color:=Kleur;
    End;
End;
//
{******************************************************************************}
{************************** Weergave diverse Series ***************************}
Procedure Teken_Series();
Begin
Lijn(wk.Serie1,wk.ClrTb1[1]);
Lijn(wk.Serie2,wk.ClrTb1[2]);
Lijn(wk.Serie3,wk.ClrTb1[3]);
Lijn(wk.Serie4,wk.ClrTb1[4]);
Lijn(wk.Serie5,wk.ClrTb1[5]);
Lijn(wk.Serie6,wk.ClrTb1[6]);
Lijn(wk.Serie7,wk.ClrTb1[7]);
Lijn(wk.Serie8,wk.ClrTb1[8]);
End;
//
{******************************************************************************}
{*************************** Hoofdprogramma ***********************************}
Begin
Initialisaties();
Userchoices();
GetData();

Case wk.KzeTab Of
  0: TabelFib();
  {1: etc. volgt nog ..}
End;

Fill_Color_table_1();
Fill_Series();
Teken_Series();

End.
////////////////////////////////////////////////////////////////////////////////

Uitleg volgt in een latere versie, zie o.a. -->www.jstas.com/WUSK/WUSK.htm
.

Grafiekje d'rbij :-)

Afbeelding


De rode lijn zet de 50% neer van het totaal, het is de eerste impuls.
Uitleg volgt later, dmv. wusk2, de volgende uitbreiding van deze indicator.
Stay tuned!.
Vriendelijke groet,
JanS ;)

paulkr
Berichten: 379
Lid geworden op: ma jun 25, 2007 1:34 pm
Locatie: Den Bosch

Re: Gann

Bericht door paulkr »

JanS,
Bedankt voor het delen van de nieuwe geposte indicatoren en je kennis!
Ik ben benieuwd naar de uitleg betreffende de parameter gerijmde / ongerijmde instelling van de vibration indicator.
Gr Paulkr

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Heb geduld PaulKr, en 'alles sal goekomme'.
Een beetje zelf nadenken en experimenteren doet meestal ook geen kwaad overigens.
*

Bekijk --> http://www.jstas.com/2009/Dageljiks%20v ... fieken.htm

Afbeelding

Laatste code:

Code: Selecteer alles


{- Filename: WUSK1 -}
//Voor uitleg : zie http://www.jstas.com/WUSK/WUSK.htm
//Versie 1.01
//dd. 27-06-2011
//

{******************************************************************************}
{****************************Record eigenschappen *****************************}
Type
  WUSK = Record
    StrtDat, EndDat , DatSet1                               : TDateTime;
    CntStrt, CntEnd, CntSet1, KzeTab, VrKz1,VrKz2           : Integer;
    StrtH, StrtL,EndH,EndL,VctrLgt,Strt,Fctr,Set1H,Set1L    : Real   ;
    Tab1        : Array[1..8] Of Extended;
    ClrTb1      : Array[1..8] Of TColor  ;
    Clr1,Clr2,Clr3,Clr4,Clr5,Clr6,Clr7,Clr8                 : TColor ;
    Serie1,Serie2,Serie3,Serie4,Serie5,Serie6,Serie7,Serie8        : TSeries;
    Serie9,Serie10,Serie11,Serie12,Serie13,Serie14,Serie15,Serie16 : TSeries;
    CopSet1 : Boolean;
  End;
  
Var
wk : WUSK;

//
{******************************************************************************}
{************************** Initialisaties ************************************}
Procedure Initialisaties();
Begin
With Indicator Do
 Begin
  NewBand      := False;
  RequiredBars := 10000;   // nog aanpassen!
  ScaleRange   := SrCommon;
  HiddenParams := True;
 End;
 
wk.Clr1 := ClWhite ;
wk.Clr2 := ClPurple;
wk.Clr3 := ClRed   ;
wk.Clr4 := ClPurple;
wk.Clr5 := ClWhite ;
wk.Clr6 := ClAqua  ;
wk.Clr7 := ClYellow;
wk.Clr8 := ClGray  ;
 
//wk.Serie1  := CreateSeries(BarCount);
wk.Serie2  := CreateSeries(BarCount);
wk.Serie3  := CreateSeries(Barcount); wk.Serie4  := CreateSeries(BarCount);
wk.Serie5  := CreateSeries(BarCount); wk.Serie6  := CreateSeries(BarCount);
wk.Serie7  := CreateSeries(BarCount); wk.Serie8  := CreateSeries(BarCount);

//wk.Serie9  := CreateSeries(BarCount);
wk.Serie10 := CreateSeries(BarCount);
wk.Serie11 := CreateSeries(BarCount); wk.Serie12 := CreateSeries(BarCount);
wk.Serie13 := CreateSeries(BarCount); wk.Serie14 := CreateSeries(BarCount);
wk.Serie15 := CreateSeries(BarCount); wk.Serie16 := CreateSeries(BarCount);


End;
 //
{******************************************************************************}
{*************************** Userchoices **************************************}
Procedure Userchoices();
Var
TabTekst : String;

Begin
TabTekst  := 'Fibonacci';   // uitbreiding volgt later ...
wk.StrtDat:= CreateParameterDate('Startdatum 1e set',EnCodeDate(2011,02,18));
wk.EndDat := CreateParameterDate('Eind-datum 1e Set',EnCodeDate(2011,03,16));
wk.KzeTab := CreateParameterSelect('Welke tabel?',TabTekst,0,False);
wk.VrKz1 := CreateParameterInteger('Promillage Keuzering 1',1,10000,887,False);
wk.VrKz2 := CreateParameterInteger('Promillage Keuzering 2',1,10000,1059,False);
wk.CopSet1:= CreateParameterBoolean('Copy WUSK-set?',True,False);
wk.DatSet1:= CreateParameterDate('Startdatum Copie?',EncodeDate(2011,05,20));
End;
//
{******************************************************************************}
{*************************** Ophalen Data *************************************}
Procedure GetData();
Var i:Integer;
Begin
 For i:=1 To BarCount-1 Do
  Begin
   If  Trunc(DateTime[i]) = Trunc(wk.StrtDat) Then
    Begin
     wk.CntStrt :=i;
     wk.StrtH := H[i];
     wk.StrtL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.EndDat) Then
    Begin
     wk.CntEnd :=i;
     wk.EndH := H[i];
     wk.EndL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.DatSet1) Then
    Begin
     wk.CntSet1 := i;
     wk.Set1H := H[i];
     wk.Set1L := L[i];
    End;
  End;

 If wk.StrtH>wk.EndL Then
   Begin
    wk.VctrLgt:= Sqrt(Sqr(wk.StrtH-wk.EndL)+Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtH;
    wk.Fctr := -1.0;
   End;
 If wk.StrtL<wk.EndL Then
   Begin
    wk.VctrLgt := Sqrt(Sqr(wk.EndH-Wk.StrtL) +Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtL;
    wk.Fctr := 1.0;
   End;

End;
//
{******************************************************************************}
{*************************** Tabel Fibonacci verdeling ************************}
Procedure TabelFib();
Var Phi:Extended;
Begin
Phi := (Sqrt(5)-1)/2;
//wk.Tab1[1]:= 0.0000;
wk.Tab1[2]:= Sqr(Phi);
wk.Tab1[3]:= 0.5000;
wk.Tab1[4]:= Phi;
wk.Tab1[5]:= Sqrt(Phi);
wk.Tab1[6]:= 1.0000;
wk.Tab1[7]:= wk.VrKz1/1000.0;
wk.Tab1[8]:= wk.VrKz2/1000.0;
End;
//
{******************************************************************************}
{**************************** Invullen Kleurtabel-1 ***************************}
Procedure Fill_Color_table_1();
Begin
//wk.ClrTb1[1] := wk.Clr1;
wk.ClrTb1[2] := wk.Clr2;
wk.ClrTb1[3] := wk.Clr3;
wk.ClrTb1[4] := wk.Clr4;
wk.ClrTb1[5] := wk.Clr5;
wk.ClrTb1[6] := wk.Clr6;
wk.ClrTb1[7] := wk.Clr7;
wk.ClrTb1[8] := wk.Clr8;
End;
//
{******************************************************************************}
{************************* vullen bepaalde serie ******************************}
Function Vul_serie(Pos,Start:Real;Factor:Extended;StartDat:TDateTime):TSeries;
Var
i    : Integer;
Vctr : Real;
Begin
  Vctr:=  wk.Vctrlgt*Factor;
   For i:=1 To BarCount-1 Do
    Begin
      If i >= StartDat Then
       Begin
        If Sqr(Vctr) >= Sqr(i-StartDat) Then
         Begin
          Result[i]:= Start+ Pos*(Sqrt(Sqr(Vctr)-Sqr(i-StartDat)));
         End;
        If Sqr(Vctr) < Sqr(i-StartDat) Then
         Begin
          Result[i] := Start;
          Exit;
         End;
       End;
    End;
End;
//
{******************************************************************************}
{************************* Vullen diverse series ******************************}
Procedure Fill_Series();
Var
Start, Start2,pos : Real;
Begin
case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;

//wk.Serie1 := Vul_Serie(Pos,Start,wk.Tab1[1],wk.CntStrt);
wk.Serie2 := Vul_Serie(Pos,Start,wk.Tab1[2],wk.CntStrt);
wk.Serie3 := Vul_Serie(Pos,Start,wk.Tab1[3],wk.CntStrt);
wk.Serie4 := Vul_Serie(Pos,Start,wk.Tab1[4],wk.CntStrt);
wk.Serie5 := Vul_Serie(Pos,Start,wk.Tab1[5],wk.CntStrt);
wk.Serie6 := Vul_Serie(Pos,Start,wk.Tab1[6],wk.CntStrt);
wk.Serie7 := Vul_Serie(Pos,Start,wk.Tab1[7],wk.CntStrt);
wk.Serie8 := Vul_Serie(Pos,Start,wk.Tab1[8],wk.CntStrt);

If wk.CopSet1 Then Begin
//wk.Serie9  := Vul_Serie(Pos,Start2,wk.Tab1[1],wk.CntSet1);
wk.Serie10 := Vul_Serie(Pos,Start2,wk.Tab1[2],wk.CntSet1);
wk.Serie11 := Vul_Serie(Pos,Start2,wk.Tab1[3],wk.CntSet1);
wk.Serie12 := Vul_Serie(Pos,Start2,wk.Tab1[4],wk.CntSet1);
wk.Serie13 := Vul_Serie(Pos,Start2,wk.Tab1[5],wk.CntSet1);
wk.Serie14 := Vul_Serie(Pos,Start2,wk.Tab1[6],wk.CntSet1);
wk.Serie15 := Vul_Serie(Pos,Start2,wk.Tab1[7],wk.CntSet1);
wk.Serie16 := Vul_Serie(Pos,Start2,wk.Tab1[8],wk.CntSet1);
End;

End;
//
{******************************************************************************}
{***************************** Tekenen lijnen *********************************}
Procedure lijn(serie:TSeries;Kleur:TColor);
Begin
 With CreateLine(serie) DO
    Begin
      Color:=Kleur;
    End;
End;
//
{******************************************************************************}
{************************** Weergave diverse Series ***************************}
Procedure Teken_Series();
Begin
//Lijn(wk.Serie1,wk.ClrTb1[1]);
Lijn(wk.Serie2,wk.ClrTb1[2]);
Lijn(wk.Serie3,wk.ClrTb1[3]);
Lijn(wk.Serie4,wk.ClrTb1[4]);
Lijn(wk.Serie5,wk.ClrTb1[5]);
Lijn(wk.Serie6,wk.ClrTb1[6]);
Lijn(wk.Serie7,wk.ClrTb1[7]);
Lijn(wk.Serie8,wk.ClrTb1[8]);

If wk.CopSet1 Then Begin
//Lijn(wk.Serie9 ,wk.ClrTb1[1]);
Lijn(wk.Serie10,wk.ClrTb1[2]);
Lijn(wk.Serie11,wk.ClrTb1[3]);
Lijn(wk.Serie12,wk.ClrTb1[4]);
Lijn(wk.Serie13,wk.ClrTb1[5]);
Lijn(wk.Serie14,wk.ClrTb1[6]);
Lijn(wk.Serie15,wk.ClrTb1[7]);
Lijn(wk.Serie16,wk.ClrTb1[8]);
End;

End;
//
{******************************************************************************}
{***************************                   ********************************}

{******************************************************************************}
{*************************** Hoofdprogramma ***********************************}
Begin
Initialisaties();
Userchoices();
GetData();

Case wk.KzeTab Of
  0: TabelFib();
  {1: etc. volgt nog ..}
End;

Fill_Color_table_1();
Fill_Series();
Teken_Series();



End.
////////////////////////////////////////////////////////////////////////////////

Uitleg volgt in een latere versie, zie o.a. -->www.jstas.com/WUSK/WUSK.htm
.

.
Ik duik de bedstee in, succes!
,
Vriendelijke groet,
JanS ;)

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

29-06-2011:

Eén grafiekje voor het slapen gaan ... ;)
Grafiek 1:
Afbeelding

Mooie positieve dag candle, mooi steun op de 50% ring, weerstand bij topje vorige week en daarna bij de blauwe Kijun_sen lijn.
.
Succes,
Zie ook: --> http://www.jstas.com/2009/Dageljiks%20v ... fieken.htm
.
Vriendelijke groet,
JanS ;)

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Voor waar ik uiteindelijk naar toe wil met de wusk-indicator is het nodig dat de cirkels getekend kunnen worden voorbij de laatste koers.
Omdit mogelijk te maken heb ik de letters van het alfabet in het ta-script in een iets andere volgorde geplaatst ;)
Hierdoor is het nu ook mogelijk om de lijnen en kleuren aan te passen van uit indicator-parameter-menu.

Onderstaande versie-2 tekent nu de halve cirkels ook voorbij de laatste koersbar.
Ik heb het script nog niet getest, en er zitten nog diverse losse eindjes in die nog vastgeknoopt moeten gaan worden, maar het werkt alwel.
Fouten graag melden!

Grafiek met deze indicator:
Grafiek 1:
Afbeelding

Code van wusk 2.0 -->

Code: Selecteer alles


{- Filename: WUSK1-trend -}
//Voor uitleg : zie http://www.jstas.com/WUSK/WUSK.htm
//Versie 2.00
//dd. 03-07-2011
//

{******************************************************************************}
{****************************Record eigenschappen *****************************}
Type
  WUSK = Record
    StrtDat, EndDat , DatSet1                                   : TDateTime;
    CntStrt, CntEnd, CntSet1, KzeTab, VrKz1,VrKz2,Dik,Lyntp     : Integer;
    StrtH, StrtL,EndH,EndL,VctrLgt,Strt,Fctr,Set1H,Set1L        : Real   ;
    Tab1        : Array[1..8] Of Extended;
    ClrTb1      : Array[1..8] Of TColor  ;
    Clr1,Clr2,Clr3,Clr4,Clr5,Clr6,Clr7,Clr8 : TColor ;
    CopSet1  : Boolean;
    Lijntype : TTrendLineStyle;
    Arr1,Arr2,Arr3,Arr4,Arr5,Arr6,Arr7,Arr8        : Array[0..10000] Of Real; /// nog aanpassen
    Arr9,Arr10,Arr11,Arr12,Arr13,Arr14,Arr15,Arr16 : Array[0..10000] Of Real;
    DatTb1 : Array [0..20000] of TDateTime;
  End;
  
Var
wk : WUSK;
//

{******************************************************************************}
{************************** Initialisaties ************************************}
Procedure Initialisaties();
Begin
With Indicator Do
 Begin
  NewBand      := False;
  RequiredBars := 10000;   // nog aanpassen!
  ScaleRange   := SrCommon;
  HiddenParams := True;
 End;
 
End;
 //
{******************************************************************************}
{*************************** Userchoices **************************************}
Procedure Userchoices();
Var
TabTekst, Soortlijn : String;

Begin
TabTekst  := 'Fibonacci';   // uitbreiding volgt later ...

Soortlijn := 'Doorgetrokken lijn     '#9
             'Gestreepte lijn        '#9
             'Gestippelde lijn       '#9
             'Gestr./gestippelde lijn'#9
             'Streep/stip/stip       ' ;



wk.StrtDat:= CreateParameterDate('Startdatum 1e set',EnCodeDate(2011,02,18));
wk.EndDat := CreateParameterDate('Eind-datum 1e Set',EnCodeDate(2011,03,16));
wk.KzeTab := CreateParameterSelect('Welke tabel?',TabTekst,0,False);
wk.VrKz1 := CreateParameterInteger('Promillage Keuzering 1',1,10000,887,False);
wk.VrKz2 := CreateParameterInteger('Promillage Keuzering 2',1,10000,1059,False);
wk.CopSet1:= CreateParameterBoolean('Copy WUSK-set?',True,False);
wk.DatSet1:= CreateParameterDate('Startdatum Copie?',EncodeDate(2011,05,20));
wk.Clr1 := CreateParameterColor('Kleur ring-1:',ClWhite );
wk.Clr2 := CreateParameterColor('Kleur ring-2:',ClPurple);
wk.Clr3 := CreateParameterColor('Kleur ring-3:',ClRed   );
wk.Clr4 := CreateParameterColor('Kleur ring-4:',ClPurple);
wk.Clr5 := CreateParameterColor('Kleur ring-5:',ClWhite );
wk.Clr6 := CreateParameterColor('Kleur ring-6:',ClAqua  );
wk.Clr7 := CreateParameterColor('Kleur ring-7:',ClYellow);
wk.Clr8 := CreateParameterColor('Kleur ring-8:',ClGray  );
wk.Dik  := CreateParameterInteger('Lijndikte:',1,4,1,False);
wk.Lyntp:= CreateParameterSelect('Lijntype:',Soortlijn,0,False);

Case wk.Lyntp Of
0 :  wk.Lijntype := lsSolid;
1 :  wk.Lijntype := lsDash ;
2 :  wk.Lijntype := lsDot  ;
3 :  wk.Lijntype := lsDashDot;
4 :  wk.Lijntype := lsDashDotDot;
End;

End;
//
{******************************************************************************}
{*************************** Ophalen Data *************************************}
Procedure GetData();
Var i:Integer;
Begin
 For i:=1 To BarCount-1 Do
  Begin
   If  Trunc(DateTime[i]) = Trunc(wk.StrtDat) Then
    Begin
     wk.CntStrt :=i;
     wk.StrtH := H[i];
     wk.StrtL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.EndDat) Then
    Begin
     wk.CntEnd :=i;
     wk.EndH := H[i];
     wk.EndL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.DatSet1) Then
    Begin
     wk.CntSet1 := i;
     wk.Set1H := H[i];
     wk.Set1L := L[i];
    End;
  End;

 If wk.StrtH>wk.EndL Then
   Begin
    wk.VctrLgt:= Sqrt(Sqr(wk.StrtH-wk.EndL)+Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtH;
    wk.Fctr := -1.0;
   End;
 If wk.StrtL<wk.EndL Then
   Begin
    wk.VctrLgt := Sqrt(Sqr(wk.EndH-Wk.StrtL) +Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtL;
    wk.Fctr := 1.0;
   End;

End;
//
{******************************************************************************}
{*************************** Tabel Fibonacci verdeling ************************}
Procedure TabelFib();
Var Phi:Extended;
Begin
Phi := (Sqrt(5)-1)/2;
//wk.Tab1[1]:= 0.0000;
wk.Tab1[2]:= Sqr(Phi);
wk.Tab1[3]:= 0.5000;
wk.Tab1[4]:= Phi;
wk.Tab1[5]:= Sqrt(Phi);
wk.Tab1[6]:= 1.0000;
wk.Tab1[7]:= wk.VrKz1/1000.0;
wk.Tab1[8]:= wk.VrKz2/1000.0;
End;
//
{******************************************************************************}
{**************************** Invullen Kleurtabel-1 ***************************}
Procedure Fill_Color_table_1();
Begin
//wk.ClrTb1[1] := wk.Clr1;
wk.ClrTb1[2] := wk.Clr2;
wk.ClrTb1[3] := wk.Clr3;
wk.ClrTb1[4] := wk.Clr4;
wk.ClrTb1[5] := wk.Clr5;
wk.ClrTb1[6] := wk.Clr6;
wk.ClrTb1[7] := wk.Clr7;
wk.ClrTb1[8] := wk.Clr8;
End;
//
{******************************************************************************}
{*************************** Vullen datum tabel *******************************}
Procedure Vul_DatTabel();
Var
D                   : Real;
i,j,Tlr,Tlr2,Hlp    : Integer;
datum,datum1,datum2 : TDateTime;
 Begin
 
 For i:=wk.CntStrt to BarCount-1 Do
 Begin
  wk.DatTb1[i-wk.CntStrt] := DateTime[i];
   Tlr:=i-wk.CntStrt;
 End;
 
Datum:= wk.DatTb1[Tlr];
Hlp:=6-DayOfWeek(Datum);
Tlr2:=Tlr;
If Hlp>0 Then
Begin
 For j:=1 To Hlp Do
  Begin
   Datum2:=Datum+j;
   wk.DatTb1[Tlr+j]:= Datum2;
   Tlr2:=Tlr+j;
  End;
End;

D:=1;
Datum1 := wk.DatTb1[Tlr2]+2;
For j:=1 To 700 Do
Begin
wk.DatTb1[Tlr2+j]:=Datum1+D;
D:=D+1;
If DayOfWeek(Datum1+D)=7 Then D:=D+2;
End;

End;
//


{******************************************************************************}
{************************* Vullen diverse series ******************************}
Procedure Fill_Series();
Var
j,Tlr :Integer;
Start, Start2,pos    , Vctr : Real;
Begin
case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;
 {
  Vctr:=  wk.Vctrlgt*wk.Tab1[1];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr1[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr1[tlr+1] := Start;
 }
  Vctr:=  wk.Vctrlgt*wk.Tab1[2];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr2[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr2[tlr+1] := Start;
 
 Vctr:=  wk.Vctrlgt*wk.Tab1[3];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr3[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr3[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[4];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr4[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr4[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[5];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr5[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr5[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[6];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr6[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr6[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[7];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr7[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr7[tlr+1] := Start;


 Vctr:=  wk.Vctrlgt*wk.Tab1[8];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr8[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr8[tlr+1] := Start;


If wk.CopSet1 Then Begin
{
Vctr:=  wk.Vctrlgt*wk.Tab1[1];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr9[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr9[tlr+1] := Start2;
}
Vctr:=  wk.Vctrlgt*wk.Tab1[2];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr10[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr10[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[3];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr11[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr11[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[4];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr12[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr12[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[5];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr13[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr13[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[6];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr14[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr14[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[7];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr15[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr15[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[8];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr16[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr16[tlr+1] := Start2;

End;
End;
//

{******************************************************************************}
{************************** Weergave diverse Series ***************************}
Procedure Teken_Series();
Var
j,FtrDat : Integer;

Begin

 For j:=0 To 800 Do
Begin
{
If wk.Arr1[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr1[j],wk.DatTb1[j+1],wk.Arr1[j+1]) Do
Begin
 color := wk.ClrTb1[1];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;
}
If wk.Arr2[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr2[j],wk.DatTb1[j+1],wk.Arr2[j+1]) Do
Begin
 color := wk.ClrTb1[2];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.Arr3[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr3[j],wk.DatTb1[j+1],wk.Arr3[j+1]) Do
Begin
 color := wk.ClrTb1[3];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.Arr4[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr4[j],wk.DatTb1[j+1],wk.Arr4[j+1]) Do
Begin
 color := wk.ClrTb1[4];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.Arr5[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr5[j],wk.DatTb1[j+1],wk.Arr5[j+1]) Do
Begin
 color := wk.ClrTb1[5];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.Arr6[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr6[j],wk.DatTb1[j+1],wk.Arr6[j+1]) Do
Begin
 color := wk.ClrTb1[6];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.Arr7[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr7[j],wk.DatTb1[j+1],wk.Arr7[j+1]) Do
Begin
 color := wk.ClrTb1[7];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.Arr8[j+1]>0 Then
With CreateTrendLine(wk.DatTb1[j],wk.Arr8[j],wk.DatTb1[j+1],wk.Arr8[j+1]) Do
Begin
 color := wk.ClrTb1[8];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If wk.CopSet1 Then Begin
FtrDat:= Round(wk.CntSet1-wk.CntStrt);
{
If (wk.Arr9[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr9[j],wk.DatTb1[j+FtrDat+1],wk.Arr9[j+1]) Do
Begin
 color := wk.ClrTb1[1];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;
}
If (wk.Arr10[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr10[j],wk.DatTb1[j+FtrDat+1],wk.Arr10[j+1]) Do
Begin
 color := wk.ClrTb1[2];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If (wk.Arr11[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr11[j],wk.DatTb1[j+FtrDat+1],wk.Arr11[j+1]) Do
Begin
 color := wk.ClrTb1[3];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If (wk.Arr12[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr12[j],wk.DatTb1[j+FtrDat+1],wk.Arr12[j+1]) Do
Begin
 color := wk.ClrTb1[4];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If (wk.Arr13[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr13[j],wk.DatTb1[j+FtrDat+1],wk.Arr13[j+1]) Do
Begin
 color := wk.ClrTb1[5];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If (wk.Arr14[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr14[j],wk.DatTb1[j+FtrDat+1],wk.Arr14[j+1]) Do
Begin
 color := wk.ClrTb1[6];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If (wk.Arr15[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr15[j],wk.DatTb1[j+FtrDat+1],wk.Arr15[j+1]) Do
Begin
 color := wk.ClrTb1[7];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

If (wk.Arr16[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0)  Then
With CreateTrendLine
(wk.DatTb1[j+FtrDat],wk.Arr16[j],wk.DatTb1[j+FtrDat+1],wk.Arr16[j+1]) Do
Begin
 color := wk.ClrTb1[8];
 Style := wk.Lijntype ;
 Width := wk.dik      ;
End;

End;
End;
End;
//

{******************************************************************************}
{*************************** Hoofdprogramma ***********************************}
Begin
Initialisaties();
Userchoices();
GetData();
Vul_DatTabel();

Case wk.KzeTab Of
  0: TabelFib();
  {1: etc. volgt nog ..}    ////!
End;

Fill_Color_table_1();
Fill_Series();
Teken_Series();

End.
////////////////////////////////////////////////////////////////////////////////

Uitleg volgt in een latere versie, zie o.a. -->www.jstas.com/WUSK/WUSK.htm
.

.
Vriendelijke groet,
JanS ;)

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Vanavond even mijn halve hersencel ( die ander hele heb ik nodig om te overleven ;)) gebruikt om de code voor de WUSk ringen wat te versnellen.
Door de diverse lussen te begrenzen op dat wat nodig is, is een winst behaald van 25%, en ik zie nog her en der wat liggen, dat volgt nog.
Verder .. de code zoals hier gepresenteerd werkt prima voor de AEX en bijv. de S&P500, gebruik hem echter niet voor bijvoorbeeld een aandeel als Philips, daar komt in de latere uitbreiding een aanpassing voor, is nu nog niet aan de orde.
.
Even een grafiekje van de S&P500 tot en met afgelopen Vrijdag, zoals u inmiddels wel weet hadden ze vandaag een vrije dag daar in de US... en dus deed de AEX 'niks'.
.
Grafiek 1:
Afbeelding
.
In bovenstaande grafiek ziet u mijn retracement tool en de Wusk - trend tool weergegeven.
Beide indicatoren, voor zover u ze wilt toepassen, zijn te vinden op http://www.ta-script.com in de Gann sectie.
.
Laatste WUSK code:

Code: Selecteer alles


{- Filename: WUSK1-trend -}
//Voor uitleg : zie http://www.jstas.com/WUSK/WUSK.htm
//Versie 2.01
//dd. 04-07-2011
//lussen gefine-tuned - 1-e fase

{******************************************************************************}
{****************************Record eigenschappen *****************************}
Type
  WUSK = Record
    StrtDat, EndDat , DatSet1                                       : TDateTime;
    CntStrt, CntEnd, CntSet1, KzeTab, VrKz1,VrKz2,Dik,Lyntp,El,El2  : Integer;
    StrtH, StrtL,EndH,EndL,VctrLgt,Strt,Fctr,Set1H,Set1L            : Real   ;
    Tab1        : Array[1..8] Of Extended;
    ClrTb1      : Array[1..8] Of TColor  ;
    Clr1,Clr2,Clr3,Clr4,Clr5,Clr6,Clr7,Clr8 : TColor ;
    CopSet1  : Boolean;
    Lijntype : TTrendLineStyle;
    Arr1,Arr2,Arr3,Arr4,Arr5,Arr6,Arr7,Arr8        : Array[0..10000] Of Real; /// nog aanpassen
    Arr9,Arr10,Arr11,Arr12,Arr13,Arr14,Arr15,Arr16 : Array[0..10000] Of Real;
    DatTb1 : Array [0..20000] of TDateTime;
  End;
  
Var
wk : WUSK;
//

{******************************************************************************}
{************************** Initialisaties ************************************}
Procedure Initialisaties();

Begin
With Indicator Do
 Begin
  NewBand      := False;
  RequiredBars := 10000;   // nog aanpassen!
  ScaleRange   := SrCommon;
  HiddenParams := True;
 End;
 
End;
 //
{******************************************************************************}
{*************************** Userchoices **************************************}
Procedure Userchoices();
Var
TabTekst, Soortlijn : String;

Begin
TabTekst  := 'Fibonacci';   // uitbreiding volgt later ...

Soortlijn := 'Doorgetrokken lijn     '#9
             'Gestreepte lijn        '#9
             'Gestippelde lijn       '#9
             'Gestr./gestippelde lijn'#9
             'Streep/stip/stip       ' ;



wk.StrtDat:= CreateParameterDate('Startdatum 1e set',EnCodeDate(2011,02,18));
wk.EndDat := CreateParameterDate('Eind-datum 1e Set',EnCodeDate(2011,03,16));
wk.KzeTab := CreateParameterSelect('Welke tabel?',TabTekst,0,False);
wk.VrKz1 := CreateParameterInteger('Promillage Keuzering 1',1,10000,887,False);
wk.VrKz2 := CreateParameterInteger('Promillage Keuzering 2',1,10000,1059,False);
wk.CopSet1:= CreateParameterBoolean('Copy WUSK-set?',True,False);
wk.DatSet1:= CreateParameterDate('Startdatum Copie?',EncodeDate(2011,05,20));
wk.Clr1 := CreateParameterColor('Kleur ring-1:',ClWhite );
wk.Clr2 := CreateParameterColor('Kleur ring-2:',ClPurple);
wk.Clr3 := CreateParameterColor('Kleur ring-3:',ClRed   );
wk.Clr4 := CreateParameterColor('Kleur ring-4:',ClPurple);
wk.Clr5 := CreateParameterColor('Kleur ring-5:',ClWhite );
wk.Clr6 := CreateParameterColor('Kleur ring-6:',ClAqua  );
wk.Clr7 := CreateParameterColor('Kleur ring-7:',ClYellow);
wk.Clr8 := CreateParameterColor('Kleur ring-8:',ClGray  );
wk.Dik  := CreateParameterInteger('Lijndikte:',1,4,1,False);
wk.Lyntp:= CreateParameterSelect('Lijntype:',Soortlijn,0,False);

Case wk.Lyntp Of
0 :  wk.Lijntype := lsSolid;
1 :  wk.Lijntype := lsDash ;
2 :  wk.Lijntype := lsDot  ;
3 :  wk.Lijntype := lsDashDot;
4 :  wk.Lijntype := lsDashDotDot;
End;

End;
//
{******************************************************************************}
{*************************** Ophalen Data *************************************}
Procedure GetData();
Var
i,j     : Integer;
Eindlus : TSeries;
Begin
 For i:=1 To BarCount-1 Do
  Begin
   If  Trunc(DateTime[i]) = Trunc(wk.StrtDat) Then
    Begin
     wk.CntStrt :=i;
     wk.StrtH := H[i];
     wk.StrtL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.EndDat) Then
    Begin
     wk.CntEnd :=i;
     wk.EndH := H[i];
     wk.EndL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.DatSet1) Then
    Begin
     wk.CntSet1 := i;
     wk.Set1H := H[i];
     wk.Set1L := L[i];
    End;
  End;

 If wk.StrtH>wk.EndL Then
   Begin
    wk.VctrLgt:= Sqrt(Sqr(wk.StrtH-wk.EndL)+Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtH;
    wk.Fctr := -1.0;
   End;
 If wk.StrtL<wk.EndL Then
   Begin
    wk.VctrLgt := Sqrt(Sqr(wk.EndH-Wk.StrtL) +Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtL;
    wk.Fctr := 1.0;
   End;

Eindlus := CreateSeries(9);
For j :=1 To 8 Do
 Begin
   Eindlus[j] := wk.Tab1[j];
 End;
wk.EL := (Ceil((Highest(Eindlus,0,8)*2)*wk.VctrLgt));

wk.El2 := wk.El-(BarCount-1-wk.CntStrt);

End;
//
{******************************************************************************}
{*************************** Tabel Fibonacci verdeling ************************}
Procedure TabelFib();
Var Phi:Extended;
Begin
Phi := (Sqrt(5)-1)/2;
wk.Tab1[1]:= 0.0000;
wk.Tab1[2]:= Sqr(Phi);
wk.Tab1[3]:= 0.5000;
wk.Tab1[4]:= Phi;
wk.Tab1[5]:= Sqrt(Phi);
wk.Tab1[6]:= 1.0000;
wk.Tab1[7]:= wk.VrKz1/1000.0;
wk.Tab1[8]:= wk.VrKz2/1000.0;
End;
//
{******************************************************************************}
{**************************** Invullen Kleurtabel-1 ***************************}
Procedure Fill_Color_table_1();
Begin
//wk.ClrTb1[1] := wk.Clr1;
wk.ClrTb1[2] := wk.Clr2;
wk.ClrTb1[3] := wk.Clr3;
wk.ClrTb1[4] := wk.Clr4;
wk.ClrTb1[5] := wk.Clr5;
wk.ClrTb1[6] := wk.Clr6;
wk.ClrTb1[7] := wk.Clr7;
wk.ClrTb1[8] := wk.Clr8;
End;
//
{******************************************************************************}
{*************************** Vullen datum tabel *******************************}
Procedure Vul_DatTabel();
Var
D                   : Real;
i,j,Tlr,Tlr2,Hlp    : Integer;
datum,datum1,datum2 : TDateTime;
 Begin
 
 For i:=wk.CntStrt to BarCount-1 Do
 Begin
  wk.DatTb1[i-wk.CntStrt] := DateTime[i];
   Tlr:=i-wk.CntStrt;
 End;
 
Datum:= wk.DatTb1[Tlr];
Hlp:=6-DayOfWeek(Datum);
Tlr2:=Tlr;
If Hlp>0 Then
Begin
 For j:=1 To Hlp Do
  Begin
   Datum2:=Datum+j;
   wk.DatTb1[Tlr+j]:= Datum2;
   Tlr2:=Tlr+j;
  End;
End;

D:=1;
Datum1 := wk.DatTb1[Tlr2]+2;
For j:=1 To wk.El2 Do                       ////////////
Begin
wk.DatTb1[Tlr2+j]:=Datum1+D;
D:=D+1;
If DayOfWeek(Datum1+D)=7 Then D:=D+2;
End;

End;
//


{******************************************************************************}
{************************* Vullen diverse series ******************************}
Procedure Fill_Series();
Var
j,Tlr :Integer;
Start, Start2,pos    , Vctr : Real;
Begin
case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;
 {
  Vctr:=  wk.Vctrlgt*wk.Tab1[1];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr1[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr1[tlr+1] := Start;
 }
  Vctr:=  wk.Vctrlgt*wk.Tab1[2];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr2[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr2[tlr+1] := Start;
 
 Vctr:=  wk.Vctrlgt*wk.Tab1[3];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr3[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr3[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[4];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr4[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr4[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[5];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr5[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr5[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[6];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr6[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr6[tlr+1] := Start;
 
  Vctr:=  wk.Vctrlgt*wk.Tab1[7];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr7[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr7[tlr+1] := Start;


 Vctr:=  wk.Vctrlgt*wk.Tab1[8];
 For j :=0 To Round(Vctr) Do
  Begin
   If Sqr(Vctr)>= Sqr(j) Then
    Begin
      wk.arr8[j] := Start+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
      Tlr:=j;
    End;
 End;
 wk.arr8[tlr+1] := Start;


If wk.CopSet1 Then Begin
{
Vctr:=  wk.Vctrlgt*wk.Tab1[1];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr9[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr9[tlr+1] := Start2;
}
Vctr:=  wk.Vctrlgt*wk.Tab1[2];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr10[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr10[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[3];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr11[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr11[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[4];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr12[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr12[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[5];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr13[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr13[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[6];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr14[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr14[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[7];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr15[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr15[tlr+1] := Start2;

Vctr:=  wk.Vctrlgt*wk.Tab1[8];
For j :=0 To Round(Vctr) Do
 Begin
  If Sqr(Vctr)>= Sqr(j) Then
   Begin
     wk.arr16[j] := Start2+Pos*(Sqrt(Sqr(Vctr)-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr16[tlr+1] := Start2;

End;
End;
//
{******************************************************************************}
{****************************** Tekenen Trendlijn *****************************}
Procedure Lijn(DatBeg,DatEnd:TDateTime;LijnBeg,LijnEnd:Real;Kleur:TColor);
Begin
  With CreateTrendLine(DatBeg,LijnBeg,DatEnd,LijnEnd) Do
    Begin
      Color := Kleur      ;
      Style := wk.Lijntype;
      Width := wk.Dik     ;
    End;
End;
//

{******************************************************************************}
{************************** Weergave diverse Series ***************************}
Procedure Teken_Series();
Var
j,FtrDat : Integer;

Begin
For j:=0 To wk.EL Do
 Begin
{
If wk.Arr1[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr1[j],wk.Arr1[j+1],wk.ClrTb1[1]);
}
If wk.Arr2[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr2[j],wk.Arr2[j+1],wk.ClrTb1[2]);

If wk.Arr3[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr3[j],wk.Arr3[j+1],wk.ClrTb1[3]);

If wk.Arr4[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr4[j],wk.Arr4[j+1],wk.ClrTb1[4]);

If wk.Arr5[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr5[j],wk.Arr5[j+1],wk.ClrTb1[5]);

If wk.Arr6[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr6[j],wk.Arr6[j+1],wk.ClrTb1[6]);

If wk.Arr7[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr7[j],wk.Arr7[j+1],wk.ClrTb1[7]);

If wk.Arr8[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr8[j],wk.Arr8[j+1],wk.ClrTb1[8]);

If wk.CopSet1 Then
Begin
FtrDat:= Round(wk.CntSet1-wk.CntStrt);
{
If (wk.Arr9[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr9[j],wk.Arr9[j+1],
                                                                  wk.ClrTb1[1]);
}
If (wk.Arr10[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr10[j],wk.Arr10[j+1],
                                                                  wk.ClrTb1[2]);

If (wk.Arr11[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr11[j],wk.Arr11[j+1],
                                                                  wk.ClrTb1[3]);

If (wk.Arr12[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr12[j],wk.Arr12[j+1],
                                                                  wk.ClrTb1[4]);

If (wk.Arr13[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr13[j],wk.Arr13[j+1],
                                                                  wk.ClrTb1[5]);

If (wk.Arr14[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr14[j],wk.Arr14[j+1],
                                                                  wk.ClrTb1[6]);

If (wk.Arr15[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr15[j],wk.Arr15[j+1],
                                                                  wk.ClrTb1[7]);

If (wk.Arr16[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr16[j],wk.Arr16[j+1],
                                                                  wk.ClrTb1[8]);

End;
End;
End;
//

{******************************************************************************}
{*************************** Hoofdprogramma ***********************************}
Begin
Userchoices();
Initialisaties();

Case wk.KzeTab Of
  0: TabelFib();
  {1: etc. volgt nog ..}    ////!
End;

GetData();
Vul_DatTabel();

Fill_Color_table_1();
Fill_Series();
Teken_Series();

End.
////////////////////////////////////////////////////////////////////////////////

Uitleg volgt in een latere versie, zie o.a. -->www.jstas.com/WUSK/WUSK.htm
.


.
Vriendelijke groet,
JanS ;)

paulkr
Berichten: 379
Lid geworden op: ma jun 25, 2007 1:34 pm
Locatie: Den Bosch

Re: Gann

Bericht door paulkr »

Jans,
Bestaat er een mogelijkheid om het Murrey frame op een intraday chart toe te passen?
Gezien de achtergrond info lijkt me van niet, maar wie weet zijn er toch mogelijkheden.
Vandaag nog eens bezig geweest met the market profile indicator op 15, 30 min en een uur grafiek. Het zou mooi zijn indien Murrey frame er naast gebruikt zou kunnen worden. Dit als bevestiging door een 2e methode.
Gr Paulkr.

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Hallo Paulkr,

MurreyMath is ook itd. toepasbaar, bestaat dan ook al.
Dat vergt echter een ander ta-script.
Ik heb dat voor mezelf nog niet gemaakt, ik ben meer een e.o.d. trader die itd. kijkt ;)
Wellicht dat ik dat nog een keer schrijf, zodra ik met pensioen ga of zo, maar ik zou daar niet op wachten als ik jou was ;)
Ik ga eerst even verder met de WUSK indicator, ik vermoed dat wanneer deze gereed is, over een maand of wat, dat je daar meer inziet dan in de MurreyMath indicator, er volgen nog enkele verrassingen namelijk.
Maar wanneer iemand in de tussentijd MurreyMath voor itd gebruik wil neerzetten, graag, laat je door mij vooral niet tegenhouden .
.
Vriendelijke groet,
Jan ;)
Vriendelijke groet,
JanS ;)

paulkr
Berichten: 379
Lid geworden op: ma jun 25, 2007 1:34 pm
Locatie: Den Bosch

Re: Gann

Bericht door paulkr »

Bedankt voor je reactie JanS. Laten we hopen dat we het redelijk tot goed doen op de beurs, zodat we iets eerder met pensioen kunnen ipv van de naar achteren geschoven leeftijd door de overheid . We kijken uit naar je werkstukjes over WUSK.
Gr Paulkr

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Is goed Paulkr, zodra ik 'binnen ben' luid ik even de bel ;-)
.
Intussen is de indicator weer een paar stapjes verder.
Her en der wat verplaatst en / of ingekort, om overbodige lusjes te voorkomen en zo de snelheid iets te vergroten.
Tevens de mogelijkheid ingebouwd om ipv. een kwart cirkel een volledige cirkel te laten tekenen.
Omdat dit een een 'ingebakken' tool is van ta-script is deze supersnel, Eric volgt nu met de kwart cirkel later wel ;)
Wanneer u de volledige cirkel laat tekenen, ziet u mooie 'raakpunten' met het verleden.
Da's dan achteraf ... maar u kan dit ook vooraf gebruiken.
Wanneer u immers de eerste set cirkels kan tekenen, in het WUSK verhaal dus op 16-Maart-2011, dan kunt u bijvoorbeeld aan de hand van de uit te zetten set cirkels, zien waar in het korte verleden rekening werd gehouden met deze cirkels, en vandaaruit een reactie verwachten rondom die cirkels in de 'toekomst'.
Er is nog zoveel meer, ik kom daar ruim voor mijn pensioen wel een keer met een werkstukje over ;-)
Bekijk even snel grafiek 1.
Grafiek 1:
Afbeelding
Op 16-Maart werd het setje geplaatst, en bij de volledige ring ziet u bijvoorbeeld stevig oponthoud van de koers in het verleden rondom de buitenste ringen, de lichtblauwe en de grijze ring, rondom November-December vorig jaar.
Oponthoudt mag dan ook worden verwacht wanneer de koers deze ringen weer wil verlaten aan de rechterzijde in de grafiek, en kijkt u eens wat er ontstond in de maand Mei.!.
*
En dan zetten we het tweede setje uit volgens de regels van WUSK.
We zagen een mooie opvering rondom de 50% ring (rode ring) in het eerste setje, en dat mag dan ook worden verwacht in het tweede setje, hoe helder wilt u de toekomst zien .. :-)
Grafiek 2:
Afbeelding
Bedenk .. het tweede setje is niet op maat gemaakt, het is gewoon geplaatst volgens de vaste regels, en de vaste lezers hebben het "hoe en waarom al ontdekt" lees ik her en der.
Kijkt u eens hoe mooi de rode ring van het tweede setje, die 50% van Gann, ook nu weer steun biedt aan de koers.
*
In onderstaande code ziet u al wel vermeld de keuze mogelijkheid van de Cowan price-time-vectors, deze keuze mogelijkheid werkt echter nog niet op dit moment.
U zult zien zodra ik dit heb ingevoerd, dat er veel overeenkomst is met de FMQ ringen van Mitzi.
Wat ik nu zo 'mooi' vind, is dat Cowan en Mitiz elkaar niet kennen, elkaars werk niet kennen, maar via het onderzoek wat deze kanjers doen en gedaan hebben naar het koersverloop, toch tot dezelfde conclusies komen, frappant en daarom zeer interessant !
Ik kom er nog op terug ( voor mijn pensioen ;) ).
.
Hieronder nog even de code, de naam wijzigt steeds licht omdat ik de diverse scripts even gescheiden wil houden, maar bij het opslaan kunt u uw eigen naam er aan geven, toch?
.

Code: Selecteer alles


{- Filename: WUSK1-trend-Ellipse -}
//Voor uitleg : zie http://www.jstas.com/WUSK/WUSK.htm
//Versie 2.03
//dd. 07-07-2011
//

{******************************************************************************}
{****************************Record eigenschappen *****************************}
Type
  WUSK = Record
    StrtDat, EndDat , DatSet1                               : TDateTime;
    CntStrt, CntEnd, CntSet1, KzeTab, VrKz1,VrKz2,Dik,
    Lyntp,El,El2,KzeRng                                     : Integer;
    StrtH, StrtL,EndH,EndL,VctrLgt,Strt,Fctr,Set1H,Set1L    : Real   ;
    Tab1        : Array[1..8] Of Extended;
    ClrTb1      : Array[1..8] Of TColor  ;
    Clr1,Clr2,Clr3,Clr4,Clr5,Clr6,Clr7,Clr8 : TColor ;
    CopSet1,CopRng : Boolean;
    Lijntype       : TTrendLineStyle;
    Arr1,Arr2,Arr3,Arr4,Arr5,Arr6,Arr7,Arr8        : Array[0..10000] Of Real; /// nog aanpassen
    Arr9,Arr10,Arr11,Arr12,Arr13,Arr14,Arr15,Arr16 : Array[0..10000] Of Real;
    DatTb1 : Array [0..20000] of TDateTime;
  End;
  
Var
wk : WUSK;
//

{******************************************************************************}
{************************** Initialisaties ************************************}
Procedure Initialisaties();

Begin
With Indicator Do
 Begin
  NewBand      := False;
  RequiredBars := 10000;   // nog aanpassen!
  ScaleRange   := SrCommon;
  HiddenParams := True;
 End;
 
End;
 //
 
{******************************************************************************}
{*************************** Userchoices **************************************}
Procedure Userchoices();
Var
TabTekst, Soortlijn, RingTkst : String;

Begin
TabTekst  := 'Fibonacci';   // uitbreiding volgt later ...

Soortlijn := 'Doorgetrokken lijn     '#9
             'Gestreepte lijn        '#9
             'Gestippelde lijn       '#9
             'Gestr./gestippelde lijn'#9
             'Streep/stip/stip       ' ;
             
RingTkst  := 'Volledige cirkel' #9
             '-FMQ- - ringen  ' #9
             ' Cowan - PTV    ' ;      //  uitbreiding volgt later ..

wk.StrtDat:= CreateParameterDate('Startdatum 1e set',EnCodeDate(2011,02,18));
wk.EndDat := CreateParameterDate('Eind-datum 1e Set',EnCodeDate(2011,03,16));
wk.KzeTab := CreateParameterSelect('Welke tabel?',TabTekst,0,False);
wk.KzeRng := CreateParameterSelect('Kies weergave:',RingTkst,0,False);
wk.VrKz1 := CreateParameterInteger('Promillage Keuzering 1',1,10000,887,False);
wk.VrKz2 := CreateParameterInteger('Promillage Keuzering 2',1,10000,1059,False);
wk.CopSet1:= CreateParameterBoolean('Copy FMQ-set?',False,False);
wk.CopRng := CreateParameterBoolean('Copy Ringenset?',False,False);
wk.DatSet1:= CreateParameterDate('Startdatum Copie?',EncodeDate(2011,05,20));
wk.Clr1 := CreateParameterColor('Kleur ring-1:',ClWhite );
wk.Clr2 := CreateParameterColor('Kleur ring-2:',ClPurple);
wk.Clr3 := CreateParameterColor('Kleur ring-3:',ClRed   );
wk.Clr4 := CreateParameterColor('Kleur ring-4:',ClPurple);
wk.Clr5 := CreateParameterColor('Kleur ring-5:',ClWhite );
wk.Clr6 := CreateParameterColor('Kleur ring-6:',ClAqua  );
wk.Clr7 := CreateParameterColor('Kleur ring-7:',ClYellow);
wk.Clr8 := CreateParameterColor('Kleur ring-8:',ClGray  );
wk.Dik  := CreateParameterInteger('Lijndikte:',1,4,1,False);
wk.Lyntp:= CreateParameterSelect('Lijntype:',Soortlijn,0,False);

Case wk.Lyntp Of
0 :  wk.Lijntype := lsSolid;
1 :  wk.Lijntype := lsDash ;
2 :  wk.Lijntype := lsDot  ;
3 :  wk.Lijntype := lsDashDot;
4 :  wk.Lijntype := lsDashDotDot;
End;

End;
//

{******************************************************************************}
{*************************** Ophalen Data *************************************}
Procedure GetData();
Var
i,j     : Integer;
Eindlus : TSeries;
Begin
 For i:=1 To BarCount-1 Do
  Begin
   If  Trunc(DateTime[i]) = Trunc(wk.StrtDat) Then
    Begin
     wk.CntStrt := i;
     wk.StrtH := H[i];
     wk.StrtL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.EndDat) Then
    Begin
     wk.CntEnd :=i;
     wk.EndH := H[i];
     wk.EndL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.DatSet1) Then
    Begin
     wk.CntSet1 := i;
     wk.Set1H := H[i];
     wk.Set1L := L[i];
    End;
  End;

 If wk.StrtH>wk.EndL Then
   Begin
    wk.VctrLgt:= Sqrt(Sqr(wk.StrtH-wk.EndL)+Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtH;
    wk.Fctr := -1.0;
   End;
 If wk.StrtL<wk.EndL Then
   Begin
    wk.VctrLgt := Sqrt(Sqr(wk.EndH-Wk.StrtL) +Sqr(wk.CntEnd-wk.CntStrt))*2;
    wk.Strt := wk.StrtL;
    wk.Fctr := 1.0;
   End;

Eindlus := CreateSeries(9);
For j :=1 To 8 Do
 Begin
   Eindlus[j] := wk.Tab1[j];
 End;
wk.EL := (Ceil((Highest(Eindlus,0,8)*2)*wk.VctrLgt));

wk.El2 := wk.El-((BarCount-1)-wk.CntStrt);    // voor datum tabel
  createtext(now,300,inttostr(wk.El2));
End;
//

{******************************************************************************}
{*************************** Tabel Fibonacci verdeling ************************}
Procedure TabelFib();
Var Phi:Extended;
Begin
Phi := (Sqrt(5)-1)/2;
wk.Tab1[1]:= 0.0000;
wk.Tab1[2]:= Sqr(Phi);
wk.Tab1[3]:= 0.5000;
wk.Tab1[4]:= Phi;
wk.Tab1[5]:= Sqrt(Phi);
wk.Tab1[6]:= 1.0000;
wk.Tab1[7]:= wk.VrKz1/1000.0;
wk.Tab1[8]:= wk.VrKz2/1000.0;
End;
//

{******************************************************************************}
{**************************** Invullen Kleurtabel-1 ***************************}
Procedure Fill_Color_table_1();
Begin
wk.ClrTb1[1] := wk.Clr1;
wk.ClrTb1[2] := wk.Clr2;
wk.ClrTb1[3] := wk.Clr3;
wk.ClrTb1[4] := wk.Clr4;
wk.ClrTb1[5] := wk.Clr5;
wk.ClrTb1[6] := wk.Clr6;
wk.ClrTb1[7] := wk.Clr7;
wk.ClrTb1[8] := wk.Clr8;
End;
//

{******************************************************************************}
{*************************** Vullen datum tabel *******************************}
Procedure Vul_DatTabel();
Var
D                   : Real;
i,j,Tlr,Tlr2,Hlp    : Integer;
datum,datum1,datum2 : TDateTime;

Begin

Case wk.KzeRng of
  0 :  Begin
       If wk.CntStrt>wk.El Then Begin
       For i:= (wk.CntStrt-wk.El) to BarCount-1 Do
         Begin
           wk.DatTb1[i-(wk.CntStrt-wk.El)] := DateTime[i];
           Tlr:=i-(wk.CntStrt-wk.El);
         End;
      End;
      End;
  1 : Begin
      For i:= (wk.CntStrt) to BarCount-1 Do
        Begin
          wk.DatTb1[i-(wk.CntStrt)] := DateTime[i];
          Tlr:=i-(wk.CntStrt);
        End;
      End;
End;

Datum:= wk.DatTb1[Tlr];
Hlp:=6-DayOfWeek(Datum);
Tlr2:=Tlr;
If Hlp>0 Then
Begin
 For j:=1 To Hlp Do
  Begin
   Datum2:=Datum+j;
   wk.DatTb1[Tlr+j]:= Datum2;
   Tlr2:=Tlr+j;
  End;
End;

D:=1;
Datum1 := wk.DatTb1[Tlr2]+2;
For j:=1 To wk.El2 Do
Begin
wk.DatTb1[Tlr2+j]:=Datum1+D;
D:=D+1;
If DayOfWeek(Datum1+D)=7 Then D:=D+2;
End;

End;
//

{******************************************************************************}
{************************* *Vullen Series Set-1  ******************************}
Procedure Fill_Series_Set1();
Var
j,Tlr             :Integer;
Start, Start2,pos : Real;
Begin
case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[1]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[1])>= Sqr(j) Then
    Begin
      wk.arr1[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[1])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr1[tlr+1] := Start;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[2]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[2])>= Sqr(j) Then
    Begin
      wk.arr2[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[2])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr2[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[3]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[3])>= Sqr(j) Then
    Begin
      wk.arr3[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[3])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr3[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[4]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[4])>= Sqr(j) Then
    Begin
      wk.arr4[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[4])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr4[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[5]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[5])>= Sqr(j) Then
    Begin
      wk.arr5[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[5])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr5[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[6]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[6])>= Sqr(j) Then
    Begin
      wk.arr6[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[6])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr6[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[7]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[7])>= Sqr(j) Then
    Begin
      wk.arr7[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[7])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr7[tlr+1] := Start;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[8]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[8])>= Sqr(j) Then
    Begin
      wk.arr8[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[8])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr8[tlr+1] := Start;
End;
//

{******************************************************************************}
{**************************  Series Copy-Set1 *********************************}
Procedure Fill_Series_Copy_set1();
Var
j,Tlr             :Integer;
Start, Start2,pos : Real;
Begin

case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[1]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[1])>= Sqr(j) Then
   Begin
     wk.arr9[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[1])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr9[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[2]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[2])>= Sqr(j) Then
   Begin
     wk.arr10[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[2])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr10[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[3]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[3])>= Sqr(j) Then
   Begin
     wk.arr11[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[3])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr11[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[4]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[4])>= Sqr(j) Then
   Begin
     wk.arr12[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[4])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr12[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[5]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[5])>= Sqr(j) Then
   Begin
     wk.arr13[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[5])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr13[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[6]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[6])>= Sqr(j) Then
   Begin
     wk.arr14[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[6])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr14[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[7]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[7])>= Sqr(j) Then
   Begin
     wk.arr15[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[7])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr15[tlr+1] := Start2;

For j :=0 To Round( wk.Vctrlgt*wk.Tab1[8]  ) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[8])>= Sqr(j) Then
   Begin
     wk.arr16[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[8])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr16[Tlr+1] := Start2;

End;
//

{******************************************************************************}
{****************************** Tekenen Trendlijn *****************************}
Procedure Lijn(DatBeg,DatEnd:TDateTime;LijnBeg,LijnEnd:Real;Kleur:TColor);
Begin
  With CreateTrendLine(DatBeg,LijnBeg,DatEnd,LijnEnd) Do
    Begin
      Color := Kleur      ;
      Style := wk.Lijntype;
      Width := wk.Dik     ;
    End;
End;
//

{******************************************************************************}
{************************** Weergave Series Set-1 *****************************}
Procedure Teken_Series_Set1();
Var
j : Integer;

Begin
{For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[1]) Do Begin
If wk.Arr1[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr1[j],wk.Arr1[j+1],wk.ClrTb1[1]); End;}

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[2]) DO Begin
If wk.Arr2[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr2[j],wk.Arr2[j+1],wk.ClrTb1[2]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[3]) Do Begin
If wk.Arr3[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr3[j],wk.Arr3[j+1],wk.ClrTb1[3]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[4]) Do Begin
If wk.Arr4[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr4[j],wk.Arr4[j+1],wk.ClrTb1[4]); End;

For j := 0 To Ceil(wk.Vctrlgt*wk.Tab1[5]) Do Begin
If wk.Arr5[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr5[j],wk.Arr5[j+1],wk.ClrTb1[5]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[6]) Do Begin
If wk.Arr6[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr6[j],wk.Arr6[j+1],wk.ClrTb1[6]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[7]) Do Begin
If wk.Arr7[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr7[j],wk.Arr7[j+1],wk.ClrTb1[7]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[8]) Do Begin
If wk.Arr8[j+1]>0 Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr8[j],wk.Arr8[j+1],wk.ClrTb1[8]); End;

End;
//

{******************************************************************************}
{************************** Weergave Copie_set-1 ******************************}
Procedure Teken_Copy_set1();
Var
j,FtrDat : Integer;

Begin
FtrDat:= Round(wk.CntSet1-wk.CntStrt);

{For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[1]) Do Begin
If (wk.Arr9[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr9[j],wk.Arr9[j+1],
                                                            wk.ClrTb1[1]); End;}

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[2]) Do Begin
If (wk.Arr10[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr10[j],wk.Arr10[j+1],
                                                             wk.ClrTb1[2]); End;

For j:= 0 To Ceil(wk.VctrLgt*wk.Tab1[3]) Do Begin
If (wk.Arr11[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr11[j],wk.Arr11[j+1],
                                                             wk.ClrTb1[3]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[4]) Do Begin
If (wk.Arr12[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr12[j],wk.Arr12[j+1],
                                                             wk.ClrTb1[4]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[5]) Do Begin
If (wk.Arr13[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr13[j],wk.Arr13[j+1],
                                                             wk.ClrTb1[5]); End;

For j := 1 To Ceil(wk.VctrLgt*wk.Tab1[6]) Do Begin
If (wk.Arr14[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr14[j],wk.Arr14[j+1],
                                                             wk.ClrTb1[6]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[7]) Do Begin
If (wk.Arr15[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr15[j],wk.Arr15[j+1],
                                                             wk.ClrTb1[7]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[8]) Do Begin
If (wk.Arr16[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr16[j],wk.Arr16[j+1],
                                                             wk.ClrTb1[8]); End;

End;
//

{******************************************************************************}
{*************************** Teken Ellipse ************************************}
Procedure
Teken_Ellipse(Datbeg,DatEnd:TDateTime; H,L:Real;Kleur:TColor;Dik:Integer);

Begin
  With CreateEllipse(DatBeg,H,DatEnd,L) Do
    Begin
     Color := Kleur;
     Width := Dik;
     UseBkColor := False;
    End;
End;

//

{******************************************************************************}
{*************************** Volledige cirkel *********************************}
Procedure Full_Circle();
Var
j, FtrDat : Integer;
A : Array[1..9] Of Real;
Wrde1,Wrde2 : Real;

Begin

If wk.StrtH>wk.EndL Then
Begin
  Wrde1 := wk.StrtH;
  Wrde2 := wk.Set1H;
End;

If wk.StrtL<wk.EndL Then
Begin
  Wrde1 := wk.StrtL;
  Wrde2 := wk.Set1L;
End;

For j:= 1 To 8 Do
Begin
A[j] := wk.Vctrlgt*wk.Tab1[j];
Teken_Ellipse (wk.DatTb1[wk.El-Round(A[j])],wk.DatTb1[wk.El+Ceil(A[j])],
                               Wrde1+(A[j]),Wrde1-(A[j]),wk.ClrTb1[j],wk.Dik );
End;

If wk.CopRng Then
Begin
FtrDat:= Round(wk.CntSet1-wk.CntStrt);
For j:= 1 To 8 Do
Begin

A[j] := wk.Vctrlgt*wk.Tab1[j];
Teken_Ellipse
(wk.DatTb1[wk.El-Round(A[j])+FtrDat],wk.DatTb1[wk.El+Ceil(A[j]+FtrDat)],
                                Wrde2+(A[j]),Wrde2-(A[j]),wk.ClrTb1[j],wk.Dik );
End;
End;

End;
//

{******************************************************************************}
{*************************** Hoofdprogramma ***********************************}
Begin
Userchoices();
Initialisaties();

Case wk.KzeTab Of                      /// verplaatsen
  0: TabelFib();
  {1: etc. volgt nog ..}    ////!
End;

GetData();
Vul_DatTabel();

Fill_Color_table_1();

If wk.KzeRng=0 Then Full_Circle();

If wk.KzeRng=1 Then Begin                     /// verplaatsen
Fill_Series_Set1();
Teken_Series_Set1();
If wk.CopSet1 Then Fill_Series_Copy_set1();
If wk.CopSet1 Then Teken_Copy_set1();
End;

// If VctrArw

End.
////////////////////////////////////////////////////////////////////////////////

Uitleg volgt in een latere versie, zie o.a. -->www.jstas.com/WUSK/WUSK.htm
.

.
Ik weet het, de code is nog lang niet compleet, heb geduld, en binnen "Afzienbare tijd" komt het vast wel goed :-)
Wanneer u her of der een getal of opmerking geplaatst ziet in uw grafiek bij toepassing van deze code, dan is dat 'normaal', ik plaats heel veel van dergelijke opmerkingen om te controleren of de code doet wat ik verwacht, en vergeet soms om er eentje of meerdere weg te halen, dat komt dan later wel weer.
.
Laat je door niemand gek maken, dat doe ik wel ;-)
.
Vriendelijke groet,
JanS ;)

Janus
Berichten: 1377
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Gann

Bericht door Janus »

Tussen een en ander de code voor WUSK1 wat verder aangevuld.
* Een korte beschrijving gemaakt, wat te lezen is onder: http://www.jstas.com/WUSK/wusk1_indicator.htm
* De mogelijkheid ingebouwd om de datum en koerspunten waarmee wordt gewerkt aan te laten geven door middel van pijltjes en een lijn.
* Rechts boven in de grafiek wordt nu het percentage en de bijbehorende kleur van de lijn aan gegeven.
* Helemaal rechts boven in de grafiek staat de naam van de gekozen weergave vermeld.
* Er is nu ook de mogelijkheid om zelf een tabel in te vullen met de te gebruiken percentages, let daarbij op de 'afwijking' zoals vermeld in de korte beschrijving van de indicator.
//
Hieronder enkele voorbeelden in de AEX grafiek.
.
AEX afgelopen jaar met volledige cirkels:

Grafiek 1:
Afbeelding

Let u eens op hoe mooi ook de raakvlakken van de cirkels zijn met de koersen uit het verleden.
Je kan dan ook de boel omdraaien, en de tweede datum instellen op een eerdere datum zodat deze punten aangeeft waar oponthoud te verwachten is in de toekomst.

Voor wie door de vele cirkels geen cirkel meer ziet, is er de mogelijkheid te werken met kwart-cirkels.

Grafiek 2:
Afbeelding

Werkt dat nu ook zo mooi op andere datums in de grafiek?
Wie af en toe mjn updates bekijkt weet dat alwel, ik werk er al jaren mee en laat af en toe een grafiekje zien.

Ik zal even twee voorbeelden laten zien.
Bijvoorbeeld 2007/2008.

Grafiek 3:
Afbeelding

Of vanaf het topje in September-2000.

Grafiek 4:
Afbeelding

Vanaf 2000 met volledige cirkels:

Grafiek 5:
Afbeelding

Ik zal nog een mogelijkheid inbouwen zodat een tweede kopie set ringen kan plaatsen, dan kan u de hele rit omlaag meepakken tot aan Maart-2003

Het mooiste van WUSK moet nog komen, maar u heeft vast wel geduld.

De code tot nu toe staat hieronder, problemen graag melden.

Code: Selecteer alles


{- Filename: WUSK1-trend-Ellipse -}
//Voor uitleg : zie http://www.jstas.com/WUSK/WUSK.htm
//Versie 2.04
//dd. 10-07-2011
//

{******************************************************************************}
{****************************Record eigenschappen *****************************}
Type
  WUSK = Record
    StrtDat, EndDat , DatSet1                             : TDateTime;
    CntStrt, CntEnd, CntSet1, KzeTab, VrKz1,VrKz2,Dik,
    LynTp,LynTp2,El,El2,KzeRng                            : Integer;
    StrtH, StrtL,EndH,EndL,VctrLgt,Strt,Fctr,Set1H,Set1L,
    Zlf1,Zlf2,Zlf3,Zlf4,Zlf5,Zlf6,Zlf7,Zlf8               : Real   ;
    Tab1        : Array[1..8] Of Extended;
    ClrTb1      : Array[1..8] Of TColor  ;
    Clr1,Clr2,Clr3,Clr4,Clr5,Clr6,Clr7,Clr8,ClrPvt : TColor ;
    CopSet1,CopRng,WrgProc,StrtPnt,com1 : Boolean;
    Arr1,Arr2,Arr3,Arr4,Arr5,Arr6,Arr7,Arr8        : Array[0..10000] Of Real;
    Arr9,Arr10,Arr11,Arr12,Arr13,Arr14,Arr15,Arr16 : Array[0..10000] Of Real;
    DatTb1 : Array [0..20000] of TDateTime;
  End;
  
Var
wk : WUSK;
//

{******************************************************************************}
{************************** Initialisaties ************************************}
Procedure Initialisaties();

Begin
With Indicator Do
 Begin
  NewBand      := False;
  RequiredBars := 10000;
  ScaleRange   := SrCommon;
  HiddenParams := True;
 End;
 
End;
 //
 
{******************************************************************************}
{*************************** Userchoices **************************************}
Procedure Userchoices();
Var
TabTekst, Soortlijn, RingTkst : String;

Begin
TabTekst  := 'Fibonacci' #9
             'Eigen Tabel';   // uitbreiding volgt later ...

Soortlijn := 'Doorgetrokken lijn     '#9
             'Gestreepte lijn        '#9
             'Gestippelde lijn       '#9
             'Gestr./gestippelde lijn'#9
             'Streep/stip/stip       ' ;
             
RingTkst  := 'Volledige cirkel' #9
             '-FMQ- - ringen  ' #9
             ' Cowan - PTV    ' ;      //  uitbreiding volgt later ..

wk.StrtDat:= CreateParameterDate('Startdatum 1e set',EnCodeDate(2011,02,18));
wk.EndDat := CreateParameterDate('Eind-datum 1e Set',EnCodeDate(2011,03,16));
wk.KzeTab := CreateParameterSelect('Welke tabel?',TabTekst,0,False);
wk.KzeRng := CreateParameterSelect('Kies weergave:',RingTkst,0,False);
wk.VrKz1 := CreateParameterInteger('Promillage Keuzering 1',0,10000,887,False);
wk.VrKz2 := CreateParameterInteger('Promillage Keuzering 2',0,10000,1059,False);
wk.CopSet1:= CreateParameterBoolean('Copy FMQ-set?',False,False);
wk.CopRng := CreateParameterBoolean('Copy Ringenset?',False,False);
wk.DatSet1:= CreateParameterDate('Startdatum Copie?',EncodeDate(2011,05,20));
wk.Clr1 := CreateParameterColor('Kleur ring-1:',ClWhite  );
wk.Clr2 := CreateParameterColor('Kleur ring-2:',RGB(255,128,255));
wk.Clr3 := CreateParameterColor('Kleur ring-3:',ClRed    );
wk.Clr4 := CreateParameterColor('Kleur ring-4:',ClFuchsia);
wk.Clr5 := CreateParameterColor('Kleur ring-5:',ClWhite  );
wk.Clr6 := CreateParameterColor('Kleur ring-6:',ClAqua   );
wk.Clr7 := CreateParameterColor('Kleur ring-7:',ClYellow );
wk.Clr8 := CreateParameterColor('Kleur ring-8:',ClGray   );
wk.Dik  := CreateParameterInteger('Lijndikte:',1,4,1,False);
wk.LynTp:= CreateParameterSelect('Lijntype FMQ-ringen:',Soortlijn,0,False);
wk.WrgProc := CreateparameterBoolean('Percentage lijnen weergave?',True,False);
wk.StrtPnt := CreateParameterBoolean('Startpunten markeren?',True,False);
wk.ClrPvt  := CreateParameterColor('Kleur startpunten',ClAqua);
wk.LynTp2  := CreateParameterSelect('Lijntype Startpunten:',Soortlijn,2,False);

wk.com1 := CreateParameterBoolean('Vul hieronder uw eigen tabel:',False,False);
wk.Zlf1 := CreateParameterInteger('Geef Promillage Ring-1:',0,10000,382,False)
                                                                          /1000;
wk.Zlf2 := CreateParameterInteger('Geef Promillage Ring-2:',0,10000,500,False)
                                                                          /1000;
wk.Zlf3 := CreateParameterInteger('Geef Promillage Ring-3:',0,10000,618,False)
                                                                          /1000;
wk.Zlf4 := CreateParameterInteger('Geef Promillage Ring-4:',0,10000,786,False)
                                                                          /1000;
wk.Zlf5 := CreateParameterInteger('Geef Promillage Ring-5:',0,10000,1000,False)
                                                                          /1000;
wk.Zlf6 := CreateParameterInteger('Geef Promillage Ring-6:',0,10000,1618,False)
                                                                          /1000;
wk.Zlf7 := CreateParameterInteger('Geef Promillage Ring-7:',0,10000,2000,False)
                                                                          /1000;
wk.Zlf8 := CreateParameterInteger('Geef Promillage Ring-8:',0,10000,2618,False)
                                                                          /1000;

End;
{******************************************************************************}
{**************************** Lijn -Type -Trendlijn ***************************}
Function Lijnsoort(nummer:Integer):TTrendLineStyle;
Begin

Case nummer Of
0 :  Result := lsSolid;
1 :  Result := lsDash ;
2 :  Result := lsDot  ;
3 :  Result := lsDashDot;
4 :  Result := lsDashDotDot;
End;

End;
//

{******************************************************************************}
{*************************** Ophalen Data *************************************}
Procedure GetData();
Var
i,j,C   : Integer;
Eindlus : TSeries;
Begin
 For i:=1 To BarCount-1 Do
  Begin
   If  Trunc(DateTime[i]) = Trunc(wk.StrtDat) Then
    Begin
     wk.CntStrt := i;
     wk.StrtH := H[i];
     wk.StrtL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.EndDat) Then
    Begin
     wk.CntEnd :=i;
     wk.EndH := H[i];
     wk.EndL := L[i];
    End;
   If Trunc(DateTime[i]) = Trunc(wk.DatSet1) Then
    Begin
     wk.CntSet1 := i;
     wk.Set1H := H[i];
     wk.Set1L := L[i];
    End;
  End;

 Case wk.KzeTab Of
  0 : C:=2;
  1 : C:=1;
 End;

 If wk.StrtH>wk.EndL Then
   Begin
    wk.VctrLgt:= Sqrt(Sqr(wk.StrtH-wk.EndL)+Sqr(wk.CntEnd-wk.CntStrt))*C;
    wk.Strt := wk.StrtH;
    wk.Fctr := -1.0;
   End;
 If wk.StrtL<wk.EndL Then
   Begin
    wk.VctrLgt := Sqrt(Sqr(wk.EndH-Wk.StrtL) +Sqr(wk.CntEnd-wk.CntStrt))*C;
    wk.Strt := wk.StrtL;
    wk.Fctr := 1.0;
   End;

Eindlus := CreateSeries(9);
For j :=1 To 8 Do
 Begin
   Eindlus[j] := wk.Tab1[j];
 End;
wk.EL := (Ceil((Highest(Eindlus,0,8)*2)*wk.VctrLgt));

wk.El2 := wk.El-((BarCount-1)-wk.CntStrt);    // voor datum tabel

End;
//

{******************************************************************************}
{*************************** Tabel Fibonacci verdeling ************************}
Procedure TabelFib();
Var Phi:Extended;
Begin
Phi := (Sqrt(5)-1)/2;
wk.Tab1[1]:= 0.0000;
wk.Tab1[2]:= Sqr(Phi);
wk.Tab1[3]:= 0.5000;
wk.Tab1[4]:= Phi;
wk.Tab1[5]:= Sqrt(Phi);
wk.Tab1[6]:= 1.0000;
wk.Tab1[7]:= wk.VrKz1/1000.0;
wk.Tab1[8]:= wk.VrKz2/1000.0;
End;
//

{******************************************************************************}
{*************************** Tabel Eigen verdeling ************************}
Procedure TabelEigen();
Begin
wk.Tab1[1]:= wk.Zlf1;
wk.Tab1[2]:= wk.Zlf2;
wk.Tab1[3]:= wk.Zlf3;
wk.Tab1[4]:= wk.Zlf4;
wk.Tab1[5]:= wk.Zlf5;
wk.Tab1[6]:= wk.Zlf6;
wk.Tab1[7]:= wk.Zlf7;
wk.Tab1[8]:= wk.Zlf8;
End;
//

{******************************************************************************}
{**************************** Invullen Kleurtabel-1 ***************************}
Procedure Fill_Color_table_1();
Begin
wk.ClrTb1[1] := wk.Clr1;
wk.ClrTb1[2] := wk.Clr2;
wk.ClrTb1[3] := wk.Clr3;
wk.ClrTb1[4] := wk.Clr4;
wk.ClrTb1[5] := wk.Clr5;
wk.ClrTb1[6] := wk.Clr6;
wk.ClrTb1[7] := wk.Clr7;
wk.ClrTb1[8] := wk.Clr8;
End;
//

{******************************************************************************}
{***************************** Tekstweergave **********************************}
Procedure Tkst(X,Y:Integer;Tekst:String;Kleur:TColor);
Begin
 With CreateText(0,0,Tekst) DO
  Begin
    Color     := Kleur;
    X1pct     := X;
    Y1pct     := Y;
    Font.size := 8;
  End;
End;
//

{******************************************************************************}
{***************************** Tekstweergave % ********************************}
Procedure Tekst_proc();
Var j : Integer;
Begin
  For j:=1 To 8 Do Begin
   Tkst(94,98-(2*j),FormatFloat('00.00',(wk.Tab1[j]*100)),wk.ClrTb1[j]);
  End;

End;

//

{******************************************************************************}
{*********************** Weergave naam indicator ******************************}
Procedure naam();
Var Meld : String;
Begin
  Case wk.KzeRng Of
    0 : Meld := 'Full_Circle % ';
    1 : Meld := 'FMQ_Quarters % ';
    2 : Meld := 'Cowan PTV % ';
  End;
Tkst(88,100,Meld,ClAqua);
  
End;
//

{******************************************************************************}
{*************************** Vullen datum tabel *******************************}
Procedure Vul_DatTabel();
Var
D                   : Real;
i,j,Tlr,Tlr2,Hlp    : Integer;
datum,datum1,datum2 : TDateTime;

Begin

Case wk.KzeRng of
  0 :  Begin
       If wk.CntStrt>wk.El Then Begin
       For i:= (wk.CntStrt-wk.El) to BarCount-1 Do
         Begin
           wk.DatTb1[i-(wk.CntStrt-wk.El)] := DateTime[i];
           Tlr:=i-(wk.CntStrt-wk.El);
         End;
      End;
      End;
  1 : Begin
      For i:= (wk.CntStrt) to BarCount-1 Do
        Begin
          wk.DatTb1[i-(wk.CntStrt)] := DateTime[i];
          Tlr:=i-(wk.CntStrt);
        End;
      End;
End;

Datum:= wk.DatTb1[Tlr];
Hlp:=6-DayOfWeek(Datum);
Tlr2:=Tlr;
If Hlp>0 Then
Begin
 For j:=1 To Hlp Do
  Begin
   Datum2:=Datum+j;
   wk.DatTb1[Tlr+j]:= Datum2;
   Tlr2:=Tlr+j;
  End;
End;

D:=1;
Datum1 := wk.DatTb1[Tlr2]+2;
For j:=1 To wk.El2 Do
Begin
wk.DatTb1[Tlr2+j]:=Datum1+D;
D:=D+1;
If DayOfWeek(Datum1+D)=7 Then D:=D+2;
End;

End;
//

{******************************************************************************}
{************************* *Vullen Series Set-1  ******************************}
Procedure Fill_Series_Set1();
Var
j,Tlr             :Integer;
Start, Start2,pos : Real;
Begin
case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[1]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[1])>= Sqr(j) Then
    Begin
      wk.arr1[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[1])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr1[tlr+1] := Start;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[2]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[2])>= Sqr(j) Then
    Begin
      wk.arr2[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[2])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr2[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[3]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[3])>= Sqr(j) Then
    Begin
      wk.arr3[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[3])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr3[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[4]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[4])>= Sqr(j) Then
    Begin
      wk.arr4[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[4])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr4[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[5]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[5])>= Sqr(j) Then
    Begin
      wk.arr5[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[5])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr5[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[6]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[6])>= Sqr(j) Then
    Begin
      wk.arr6[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[6])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr6[tlr+1] := Start;
 
For j :=0 To Round(wk.Vctrlgt*wk.Tab1[7]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[7])>= Sqr(j) Then
    Begin
      wk.arr7[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[7])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr7[tlr+1] := Start;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[8]) Do
  Begin
   If Sqr(wk.Vctrlgt*wk.Tab1[8])>= Sqr(j) Then
    Begin
      wk.arr8[j] := Start+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[8])-Sqr(j)));
      Tlr:=j;
    End;
  End;
wk.arr8[tlr+1] := Start;
End;
//

{******************************************************************************}
{**************************  Series Copy-Set1 *********************************}
Procedure Fill_Series_Copy_set1();
Var
j,Tlr             :Integer;
Start, Start2,pos : Real;
Begin

case wk.Fctr Of
  1 : Begin
        Start := wk.StrtL;
        Start2:= wk.Set1L;
        pos   := 1.0;
      End;
 -1 : Begin
        Start := wk.StrtH;
        Start2:= wk.Set1H;
        pos   := -1.0;
      End;
 End;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[1]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[1])>= Sqr(j) Then
   Begin
     wk.arr9[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[1])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr9[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[2]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[2])>= Sqr(j) Then
   Begin
     wk.arr10[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[2])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr10[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[3]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[3])>= Sqr(j) Then
   Begin
     wk.arr11[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[3])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr11[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[4]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[4])>= Sqr(j) Then
   Begin
     wk.arr12[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[4])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr12[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[5]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[5])>= Sqr(j) Then
   Begin
     wk.arr13[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[5])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr13[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[6]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[6])>= Sqr(j) Then
   Begin
     wk.arr14[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[6])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr14[tlr+1] := Start2;

For j :=0 To Round(wk.Vctrlgt*wk.Tab1[7]) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[7])>= Sqr(j) Then
   Begin
     wk.arr15[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[7])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr15[tlr+1] := Start2;

For j :=0 To Round( wk.Vctrlgt*wk.Tab1[8]  ) Do
 Begin
  If Sqr(wk.Vctrlgt*wk.Tab1[8])>= Sqr(j) Then
   Begin
     wk.arr16[j] := Start2+Pos*(Sqrt(Sqr(wk.Vctrlgt*wk.Tab1[8])-Sqr(j)));
     Tlr:=j;
   End;
End;
wk.arr16[Tlr+1] := Start2;

End;
//

{******************************************************************************}
{****************************** Tekenen Trendlijn *****************************}
Procedure Lijn(DatBeg,DatEnd:TDateTime;LijnBeg,LijnEnd:Real;Kleur:TColor);
Begin
  With CreateTrendLine(DatBeg,LijnBeg,DatEnd,LijnEnd) Do
    Begin
      Color := Kleur      ;
      Style := Lijnsoort(wk.LynTp);
      Width := wk.Dik     ;
    End;
End;
//

{******************************************************************************}
{************************** Weergave Series Set-1 *****************************}
Procedure Teken_Series_Set1();
Var
j : Integer;

Begin
For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[1]) Do Begin
If (wk.Arr1[j+1]>0) And (wk.Tab1[1]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr1[j],wk.Arr1[j+1],wk.ClrTb1[1]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[2]) DO Begin
If (wk.Arr2[j+1]>0) And (wk.Tab1[2]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr2[j],wk.Arr2[j+1],wk.ClrTb1[2]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[3]) Do Begin
If (wk.Arr3[j+1]>0) And (wk.Tab1[3]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr3[j],wk.Arr3[j+1],wk.ClrTb1[3]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[4]) Do Begin
If (wk.Arr4[j+1]>0) And (wk.Tab1[4]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr4[j],wk.Arr4[j+1],wk.ClrTb1[4]); End;

For j := 0 To Ceil(wk.Vctrlgt*wk.Tab1[5]) Do Begin
If (wk.Arr5[j+1]>0) And (wk.Tab1[5]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr5[j],wk.Arr5[j+1],wk.ClrTb1[5]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[6]) Do Begin
If (wk.Arr6[j+1]>0) And (wk.Tab1[6]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr6[j],wk.Arr6[j+1],wk.ClrTb1[6]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[7]) Do Begin
If (wk.Arr7[j+1]>0) And (wk.Tab1[7]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr7[j],wk.Arr7[j+1],wk.ClrTb1[7]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[8]) Do Begin
If (wk.Arr8[j+1]>0) And (wk.Tab1[8]>0.0) Then
Lijn(wk.DatTb1[j],wk.DatTb1[j+1],wk.Arr8[j],wk.Arr8[j+1],wk.ClrTb1[8]); End;

End;
//

{******************************************************************************}
{************************** Weergave Copie_set-1 ******************************}
Procedure Teken_Copy_set1();
Var
j,FtrDat : Integer;

Begin
FtrDat:= Round(wk.CntSet1-wk.CntStrt);

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[1]) Do Begin
If (wk.Arr9[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[1]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr9[j],wk.Arr9[j+1],
                                                            wk.ClrTb1[1]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[2]) Do Begin
If (wk.Arr10[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[2]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr10[j],wk.Arr10[j+1],
                                                             wk.ClrTb1[2]); End;

For j:= 0 To Ceil(wk.VctrLgt*wk.Tab1[3]) Do Begin
If (wk.Arr11[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[3]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr11[j],wk.Arr11[j+1],
                                                             wk.ClrTb1[3]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[4]) Do Begin
If (wk.Arr12[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[4]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr12[j],wk.Arr12[j+1],
                                                             wk.ClrTb1[4]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[5]) Do Begin
If (wk.Arr13[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[5]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr13[j],wk.Arr13[j+1],
                                                             wk.ClrTb1[5]); End;

For j := 1 To Ceil(wk.VctrLgt*wk.Tab1[6]) Do Begin
If (wk.Arr14[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[6]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr14[j],wk.Arr14[j+1],
                                                             wk.ClrTb1[6]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[7]) Do Begin
If (wk.Arr15[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[7]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr15[j],wk.Arr15[j+1],
                                                             wk.ClrTb1[7]); End;

For j := 0 To Ceil(wk.VctrLgt*wk.Tab1[8]) Do Begin
If (wk.Arr16[j+1]>0) And (wk.DatTb1[j+FtrDat+1]>0) And (wk.Tab1[8]>0.0) Then
Lijn(wk.DatTb1[j+FtrDat],wk.DatTb1[j+FtrDat+1],wk.Arr16[j],wk.Arr16[j+1],
                                                             wk.ClrTb1[8]); End;

End;
//

{******************************************************************************}
{******************************* FMQ ******************************************}
Procedure FMQ();
Begin
Fill_Series_Set1();
Teken_Series_Set1();
If wk.CopSet1 Then Fill_Series_Copy_set1();
If wk.CopSet1 Then Teken_Copy_set1();
End;
//

{******************************************************************************}
{*************************** Teken Ellipse ************************************}
Procedure
Teken_Ellipse(Datbeg,DatEnd:TDateTime; H,L:Real;Kleur:TColor;Dik:Integer);

Begin
  With CreateEllipse(DatBeg,H,DatEnd,L) Do
    Begin
     Color := Kleur;
     Width := Dik;
     UseBkColor := False;
    End;
End;

//

{******************************************************************************}
{*************************** Volledige cirkel *********************************}
Procedure Full_Circle();
Var
j, FtrDat : Integer;
A,Wrde1,Wrde2 : Real;

Begin

If wk.StrtH>wk.EndL Then
Begin
  Wrde1 := wk.StrtH;
  Wrde2 := wk.Set1H;
End;

If wk.StrtL<wk.EndL Then
Begin
  Wrde1 := wk.StrtL;
  Wrde2 := wk.Set1L;
End;

For j:= 1 To 8 Do
Begin
A := wk.Vctrlgt*wk.Tab1[j];
Teken_Ellipse (wk.DatTb1[wk.El-Round(A)],wk.DatTb1[wk.El+Ceil(A)],
                               Wrde1+(A),Wrde1-(A),wk.ClrTb1[j],wk.Dik );
End;

If wk.CopRng Then
Begin
FtrDat:= Round(wk.CntSet1-wk.CntStrt);
For j:= 1 To 8 Do
Begin
A := wk.Vctrlgt*wk.Tab1[j];
Teken_Ellipse
(wk.DatTb1[wk.El-Round(A)+FtrDat],wk.DatTb1[wk.El+Ceil(A+FtrDat)],
                                Wrde2+(A),Wrde2-(A),wk.ClrTb1[j],wk.Dik );
End;
End;

End;
//

{******************************************************************************}
{************************ Weergave pijltjes ***********************************}
Procedure Pijltje(Dat:TDateTime;Waarde:Real;Dir:TArrowDirection);
Begin

  With CreateArrow(Dat,Waarde,Dir) Do
  Begin
  color:= wk.ClrPvt;
  Size := asSmall;
  End;

End;
//

{******************************************************************************}
{*********************** Lijn uitgangspunten **********************************}
Procedure lijnPvt(Start,Eind:TDateTime;wrde1,wrde2:Real);
Begin
   With CreateTrendLine(Start,wrde1,Eind,wrde2) Do
    Begin
     Color:= wk.ClrPvt;
     Width := 1;
     Style := Lijnsoort(wk.LynTp2);
    End;
End;
//

{******************************************************************************}
{********************** Aangave uitgangs punten *******************************}
Procedure Pivots();
Begin

Case wk.Fctr Of
  -1 : Begin
        LijnPvt(wk.StrtDat,wk.EndDat,wk.StrtH,wk.EndL);
        Pijltje(wk.StrtDat,wk.StrtH*1.005,AdDown);
        Pijltje(wk.EndDat ,wk.EndL *0.995,AdUp  );
        If ((wk.CopRng)And(wk.KzeRng=0)) Or ((wk.CopSet1)And(wk.KzeRng=1)) Then
        Pijltje(wk.DatSet1,wk.Set1H*1.005,AdDown);
       End;
   1 : Begin
        LijnPvt(wk.StrtDat,wk.EndDat,wk.StrtL,wk.EndH);
        Pijltje(wk.StrtDat,wk.StrtL*0.995,AdUp  );
        Pijltje(wk.EndDat ,wk.EndH *1.005,AdDown);
        If ((wk.CopRng)And(wk.KzeRng=0)) Or ((wk.CopSet1)And(wk.KzeRng=1)) Then
        Pijltje(wk.DatSet1,wk.Set1l*0.995,AdUp);
        
       End;
End;

End;
//

{******************************************************************************}
{*************************** Hoofdprogramma ***********************************}
Begin

Userchoices();
Initialisaties();

Case wk.KzeTab Of
   0: TabelFib();
   1: TabelEigen();
  {2: etc. volgt nog ..}    ////!
End;

GetData();
Vul_DatTabel();
Fill_Color_table_1();
If wk.KzeRng=0 Then Full_Circle();
If wk.KzeRng=1 Then FMQ();
If wk.WrgProc Then Tekst_proc();
If wk.WrgProc Then Tekst_proc();
Naam();
If wk.StrtPnt Then Pivots();

End.
////////////////////////////////////////////////////////////////////////////////

Een beknopte uitleg leest u op --> www.jstas.com/WUSK/wusk1_indicator.htm
Opmerkingen mogen naar Jan@Jstas.com
.

*
Vriendelijke groet,
JanS ;)

Plaats reactie