TA-script.com forum index TA-script.com
Geavanceerde technische analyse - indicatoren en handelssystemen in TA-script

 FAQFAQ   ZoekenZoeken   GebruikerslijstGebruikerslijst   GebruikersgroepenGebruikersgroepen   RegistreerRegistreer 
 ProfielProfiel   Log in om je privé berichten te bekijkenLog in om je privé berichten te bekijken   InloggenInloggen 

MurreyMath Wie heeft deze ind. in TA of kan dat omzetten
Ga naar pagina Vorige  1, 2, 3, 4, 5  Volgende
 
Plaats nieuw bericht   Plaats reactie    TA-script.com forum index -> Vraag en antwoord
Vorige onderwerp :: Volgende onderwerp  
Auteur Bericht
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Di Mei 11, 2010 10:07 pm    Onderwerp: Reageer met quote

Paulkr,

De startdatum van het frame, wat bij mij reset datum wordt genoemd wordt elk jaar opnieuw vastgesteld, vandaar de geprogrammeerde mogelijkheid deze in te stellen.
Hoe wordt deze datum vastgesteld?
In het werk van Luc kun je daaromtrent lezen:
Quote:

Murrey plaats jaarlijks de tijd op nul. Dit gebeurd de eerste week van oktober op de dag dat de US treasury haar maandelijks en vier-maandelijkse veiling houdt. Vanaf dan mag je eenvoudig veelvouden van 4, 8, 16, 32, 64, 128 of 256 dagen dagen optellen.

Waarbij je dagen moet tellen als die dagen waarop handel plaats heeft gevonden.
In 2009 rolde daar de datum 09-Oktober-2009 uit, vandaar die ingegeven waarde in mijn stukje programma.
Murrey geeft elk jaar de datum vrij, dus de nieuwe datum krijgen we in Oktober dit jaar.... voor de tijd daarna.

Dan het prijsframe ... zoals ik al vermeldde, dat is nog lang niet compleet.
Ik was begonnen met het programmeren van de tijdlijnen, wat enkele aanpassingen vergt in ta-script.
Zolang er koersdata is kan worden gewerkt met de bar-teller, na de laatste koers moet echter worden gewerkt met de datum teller van Excel, en daarbij moet dan het aantal werkdagen wat volgt voor een bepaald tijdvenster van bijvoorbeeld 8 koersbars, telkens het er tussenliggende weekend en soms weekends worden meegeteld om een juist tijd frame voor de toekomst te krijgen / kunnen tekenen.
Of het bij bijvoorbeeld 8 dagen één weekend of twee weekends zijn hangt weer af van de dag waarop het 8-dagen frame start.
Ook is belangrijk of een vorig tijd-frame stopt op bijvoorbeeld vrijdag, want dan moet het nieuwe frame starten op Maandag, maar er moet wel ergens de twee dagen van het weekend tevoorschijn worden getoverd.
Enzovoort ...
Dit lijkt voor elkaar te zijn, het tijdframe lijkt te werken, er is nog 1 ding wat ik daaromtrent in de gaten moet houden.

Om echter dat tijdframe te kunnen tekenen had ik snel even wat waarden nodig voor de prijslijnen.
Daarvoor even snel een stukje code in elkaar gefrutseld, wat echter nog lang... lang .. niet datgene bevat wat het worden moet.
Daar moet ik dus nog mee aan de gang.
Het buiten het frame vallen van de koers, of het niet genoeg onderverdeeld zijn van het frame voor de lage waarden zoals benodigd voor de Forex trading etc. etc. rolt dus niet uit het onjuist toepassen van de reset datum, maar uit het krakkemikkige systeem van onder verdeling van het prijsframe zoals nu even snel is toegepast.
Dat is waar ik al voor waarschuwde, en dat is het volgende punt op de agenda Wink

Dan het eventueel instellen van een andere reset datum ...
tja, het MurreyMath systeem werkt met die datum voor de VS-markt.
In de loop van het jaar ontstaan er kleine verschillen met bijvoorbeeld onze index, doordat wij bijvoorbeeld dagen geen handel hebben waarop de VS wel handelt, maar die zijn er ook omgekeerd.
Ik heb nooit onderzocht of een andere datum iets extra's zou hebben opgeleverd over het gehele jaar.
Verder ben ik erg voorzichtig met het wijzigen van waarden die zijn 'uitgedokterd' bij het ontwerpen van een bepaald systeem.
Wanneer je dat toch doet verval je al snel in 'curve-fitting'... en dat is achteraf zelden succesvol, lichtjes uitgedrukt.
Liever leer ik te werken met de 'tekortkomingen' van een bepaalde instellng, voor zover je kan spreken over tekortkomingen .. liever spreek ik over 'het gedrag van de betreffende indicator'; want door ermee te werken leer je ermee om te gaan.
Zo laat ik bijvoorbeeld de RSI altijd op 14, je kan hem dan lezen en dromen, je weet waar de 'afwijkingen' liggen.
Zo laat ik ook de datum liggen op de 'reset-datum'.
Maar .. wellicht interessant: een onderzoek naar aanpassing van de datum, bijvoorbeeld aanpassing voor de Hang Seng, naar een bepaalde datum die daar overeenkomt met de wijze waarop Murrey de datum vaststeld...
.
Bedankt voor je vragen ...
Bedankt voor je opmerkingen ...
En aan het prijsframe ga ik werken zodra ik tijd over heb....
Loop ik muurvast, dan is daar ons lichtpunt in de duisternis ...Eric ! Smile

Heb je intussen nog dingen waar je tegenaan loopt, melden alsjeblieft.
Dat geldt ook voor de andere lezers !
.
_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Do Mei 13, 2010 9:06 am    Onderwerp: Reageer met quote

...
_________________
Vriendelijke groet,
JanS Wink


Laatst aangepast door Janus op Za Mei 15, 2010 8:58 pm, in totaal 2 keer bewerkt
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Do Mei 13, 2010 10:02 pm    Onderwerp: Reageer met quote

De Speedlines, de momentumlines en mini-Murrey-Math-Trading-Lines zijn toegevoegd aan het programma.
De laatste versie is nu 1.05, zie de topic hieronder
.
Hieronder enkele grafieken die met dit stukje programma zijn gemaakt.


De AEX met opgaande en dalende SpeedLines:



De AEX met de mini-Murrey-Math-Trading-Lines:



De AEX met MomentumLines:



De S&P500 met mini-Murrey-Math-Trading-Lines



De Euro / Dollar:


.
_________________
Vriendelijke groet,
JanS Wink


Laatst aangepast door Janus op Za Mei 15, 2010 8:57 pm, in totaal 1 keer bewerkt
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Za Mei 15, 2010 8:56 pm    Onderwerp: Reageer met quote

Laatste versie is nu 1.05
Enkele wijzigingen doorgevoerd en er kan nu ook worden gekozen voor prijsweergave bij de lijnen.
Opmerkingen welkom; hier in deze topic of onder jan@jstas.com
.
Versie 15-Mei-2010
.
Code:


{- Filename: MurreyMath Frame -}
{MurreyMath frame}
{ www.JSTAS.com }
// Versie 1.05

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;
     19: Result := RGB(196,196,0);
     else
       Result := clGray;
   end;
 End;
//
Procedure Ellips(X1,X2: TDateTime; Y1,Y2:Real;Kleur:Integer);
 Begin
   With CreateEllipse(X1,Y1,X2,Y2) Do
    Begin
      Color:= KleurSelec(Kleur);
      UseBkColor:= False;
      DrawBehindChart := True;
    End;
 End;
//
Procedure Speedlns(X1,X2: TDateTime;Y1,Y2:Real;dik,Klr,Lijnsoort:Integer);
 Begin
  With CreateTrendLine(X1,Y1,X2,Y2) Do
    Begin
      Color:=KleurSelec(Klr);
      Width := dik;
      DrawBehindChart :=True;
      If Lijnsoort=1 Then Style:=lsSolid;
      If Lijnsoort=2 THen Style:=lsDash ;
      If Lijnsoort=3 Then Style:=lsDot  ;
    End;
 End;
//
Var
KleurKeuzes, TijdFrm, WrdeTxt, MaandKeuze : String   ;
SetDate, LstDate, LstL                    : TDateTime;
i,j,K,ResetDag,ResetMaand,ResetJaar,TijdFrame,A,B,ZelfKleur,Kleur,KlrTxt,
Plaats,Rh1,Rh2,FrmeInFrctl,Q,FrmeInFrctl2,Wkndd,XWndd,KleurConc,KlrminiMur :Integer;
TijdH1,Space,FractlH,FractlL,SetUp, RHr1,RHr2, RHr3,uitk                   :Real;
ExtraText,ExtraTextV,TekstOn,SpeedLnsUp,SpeedLnsDw,
MiniMurrey,MomentmUp,MomentmDwn,Lijnwrde                                   :Boolean;
TijdH2     : Array[1..17] Of TDateTime;
Prijslijn  : Array[1..13] Of Real     ;
TekstTble  : Array[1..13] Of String   ;
TekstTbleT : Array[1..17] Of String   ;
ColorTbleP : Array[1..13] Of Integer  ;
ColorTbleT : Array[1..17] Of Integer  ;
sHH,SLL,sDIFF               :TSeries  ;

Begin
With Indicator Do
    Begin
      Shortname            := 'MurreyMath Frame';
      RequiredBars         := 300     ;
      Indicator.NewBand    := False   ;
      Indicator.ScaleRange := SrCommon;
    End;
Kleurkeuzes:='Aqua'#9'Black'#9'Blue'#9'DkGray' #9'Fuchsia'#9'Gray' #9'Green'
              #9'Lime'#9'LtGray'#9'Maroon'#9'Navy'#9'Olive'#9'Purple'#9'Red'
              #9'Silver'#9'Teal'#9'White'#9'Yellow'#9'Dark Yellow';
MaandKeuze := 'Januari'#9'Februari'#9'Maart'#9'April'#9'Mei'#9'Juni'#9'Juli'#9'Augustus'#9
                                                'September'#9'Oktober'#9'November'#9'December';
TijdFrm    := '8'#9'16'#9'32'#9'64'#9'128'#9'256';
ResetDag   := CreateparameterInteger('Reset-Dag',1,31,9,False);
ResetMaand := 1+CreateparameterSelect('Reset-Maand',MaandKeuze,9,False);
ResetJaar  := CreateParameterInteger('Reset-Jaar',2009,2100,2009,False);
SetDate    := Encodedate(ResetJaar,ResetMaand,ResetDag);
Tijdframe  := CreateparameterSelect('Maak keuze Tijdframe',TijdFrm,3,False);
MiniMurrey := CreateParameterBoolean('mini-MurreyMathlines weergeven ?',False,False);
SpeedlnsUp := CreateparameterBoolean('SpeedLines omhoog weergeven ?',False,False);
SpeedLnsDw := CreateParameterBoolean('SpeedLines omlaag weergeven ?',False,False);
MomentmUp  := CreateParameterBoolean('Momentumlines omhoog weergeven ?',False,False);
MomentmDwn := CreateParameterBoolean('Momentumlines omlaag weergeven ?',False,False);
KlrminiMur := 1+CreateParameterSelect('Kleur extra-lijnen',KleurKeuzes,3,False);
Lijnwrde   := CreateParameterBoolean('Lijn waarde in grafiek ?',True,False);
ExtraText  := CreateParameterBoolean('Extra vermelding Horizontale tekst',False,False);
ExtraTextV := CreateParameterBoolean('Extra vermelding Verticale   tekst',False,False);
ZelfKleur  := CreateParameterSelect('Welk kleurpatroon ?','Volgens MurreyMath'#9'Eén zelf op te geven kleur',0,False);
Kleur      := 1+CreateParameterSelect('Geef kleur Murrey-Matrix :',Kleurkeuzes,3,False);
KleurConc  := 1+CreateParameterSelect('Kleur -Circles of Conflict:',Kleurkeuzes,15,False);
TekstOn    := CreateParameterBoolean('Indicatornaam weergeven?',True,False);
Plaats     := CreateParameterInteger('Plaats van de Indicatornaam',1,100,95,False);
KlrTxt     := 1+CreateParameterSelect('Geef kleur Naam weergave :',Kleurkeuzes,13,False);
Wkndd :=2;
Case Tijdframe of
  0: Space:= 8.0 ;   1: Space:= 16.0;   2: Space:= 32.0;
  3: Space:=64.0 ;   4: Space:=128.0;   5: Space:=256.0;
End;

//********************************************************************************
//Berekenen Prijslijnen en vullen prijs-array

sHH := HighSeries(High,Trunc(Space));
sLL := LowSeries (Low ,Trunc(SPace));
sDIFF := SubtractSeries(sHH,sLL);

For i:= 1 To BarCount-1 Do
Begin
 If i = BarCount-1 Then
   Begin
     FractlH := 100000 ;
     If sHH[i] < 25000 Then FractlH := 10000;  If sHH[i] <  2500 Then FractlH :=  1000;
     If sHH[i] <   250 Then FractlH :=   100;  If sHH[i] < 12.50 Then FractlH := 12.50;
     FractlL := 100000 ;
     If sLL[i] < 25000 Then FractlL := 10000;  If sLL[i] <  2500 Then FractlL :=  1000;
     If sLL[i] <   250 Then FractlL :=   100;  If sLL[i] < 12.50 Then FractlL := 12.50;
     RHr2:=4.0
     For j:=1 to 32 Do
      Begin
        If Trunc((FractlH/8.0)/sDIFF[i])=j Then uitk := j;
      End;
     If uitk =1  Then RHr2 :=  8.0;
     If uitk =2  Then RHr2 := 16.0;
     If (uitk >2) And (uitk<= 4) Then RHr2 :=  32.0;
     If (uitk >4) And (uitk<= 8) Then RHr2 :=  64.0;
     If (uitk >8) And (uitk<=16) Then RHr2 := 128.0;
     If (uitk>16) And (uitk<=32) Then RHr2 := 256.0;
     
     FrmeInFrctl := Ceil(sHH[i]/(FractlH/RHr2));
       If (Frac(sHH[i]/(FractlH/RHr2)))<= 0.3125 Then FrmeInFrctl:=FrmeInFrctl-1;
     FrmeInFrctl2 := Ceil(sLL[i]/(FractlH/RHr2));
       If (Frac(sLL[i]/(FractlH/RHr2))) >= 0.6875 Then FrmeInFrctl2 := FrmeInFrctl2+1;
     RHr1:=8.0
       If FrmeInFrctl2 < FrmeInFrctl Then RHr1 := 4.0;
     SetUp := (FractlH/RHr2)*FrmeInFrctl+((FractlH/RHr2)/RHr1)*2;
     For j:= 1 To 13 Do
       Begin
         Prijslijn[j]:= Setup - (j-1)*((FractlH/RHr2)/RHr1);
         If (Prijslijn[j]<(FractlH/4.0)) And (FractlH>100) Then Prijslijn[j] :=( Prijslijn[j-1]-((FractlH/10)/RHr1));
       End;
  End;
End;

//********************************
// Berekening tijd-lijnen van het tijd-frame en vullen tijdlijn array

For i := 1 to BarCount-1 Do Begin
   If Trunc(DateTime[i])= Trunc(Setdate) Then A :=i; End;
//
TijdH1 := ((BarCount-1)-A) /Space ;
For i := 1 To BarCount-1 Do   Begin
    If( i= (A + (Trunc(TijdH1)*Trunc(Space)))) Then
      Begin
        TijdH2[5]:=Trunc(DateTime[i]);
        B := i;
      End;       End;
//
For i:= 1 To BarCount-1 Do  Begin
    For j:=1 To 4 Do
      Begin
        If (i= B-(Space/8)*j) Then TijdH2[5-j] := Trunc(DateTime[i]);
     End;   End;
//
For i:= B to (BarCount-1) Do   Begin
    For j:= 6 to ((Trunc(((BarCount-1)-B)/(Space/8)))+5) Do
      Begin
        K:=j-5;
        If (i= B+(Space/8)*K) Then   TijdH2[j]  := Trunc(DateTime[i]);
      End;      End;
//
For i:= 1 To BarCount-1 Do   Begin
    If ((Trunc(DateTime[i])) = (TijdH2[5+K])) Then Rh1 := i;
    If i=Barcount-1 Then LstDate := Trunc(DateTime[i]);     End;
Rh2 := (BarCount-1)-Rh1;
 If   (((Space/8.0)-Rh2)  <= (6-DayOfWeek(LstDate))) Then Wkndd :=0;
TijdH2[5+K+1]:= LstDate + Trunc(Space/8)-Rh2+(Trunc(((Trunc(Space/8)-Rh2)-(6-DayOfWeek(LstDate)))/5.0))*2+Wkndd  ;
LstL := TijdH2[5+K+1];
//
 For j:=1 To (12-K-1) Do
  Begin
    Wkndd:=0;
    XWndd:=0;
    If DayOfWeek(LstL) = 6 Then Wkndd:=2;
    If ((Space/8)=32.0) Then If DayOfWeek(LstL)=5 Then Xwndd :=2;
    If ((Space/8)=8.0)Then
      Begin
        If (DayOfWeek(LstL)=4) Or (DayOfWeek(LstL)=5) Then Xwndd:=2;
      End;
    If ((Space/8)=4.0) THen
      Begin
      If (DayOfWeek(LstL)=3) Or (DayOfWeek(LstL)=4) Or (DayOfWeek(LstL)=5) Then Xwndd :=2;
      End;
    If ((Space/8)=2.0) Then If DayOfWeek(LstL)= 5 Then Xwndd :=2;
    TijdH2[5+K+1+J] := LstL + (Space/8) + Wkndd + Xwndd + ((Trunc((Space/8)/5))*2) ;
    LstL := TijdH2[5+K+1+J];
  End;
 //********************************************************
 
//Vullen tekst en kleur arrays
//Kleurtabel Prijslijnen
ColorTbleP[ 1] :=  14;   ColorTbleP[ 2] :=  19;   ColorTbleP[ 3] :=   3;
ColorTbleP[ 4] :=  19;   ColorTbleP[ 5] :=  14;   ColorTbleP[ 6] :=   7;
ColorTbleP[ 7] :=   3;   ColorTbleP[ 8] :=   7;   ColorTbleP[ 9] :=  14;
ColorTbleP[10] :=  19;   ColorTbleP[11] :=   3;   ColorTbleP[12] :=  19;
ColorTbleP[13] :=  14;
If (ZelfKleur=1) Then Begin
    For j:=1 to 13 Do
      Begin
        ColorTbleP[j]:= Kleur;
      End;  End;
 
//KleurTabel Tijdlijnen
ColorTbleT[ 1] :=  3;   ColorTbleT[ 2] :=  7;   ColorTbleT[ 3] := 14;
ColorTbleT[ 4] := 19;   ColorTbleT[ 5] :=  3;   ColorTbleT[ 6] := 19;
ColorTbleT[ 7] := 14;   ColorTbleT[ 8] :=  7;   ColorTbleT[ 9] :=  3;
ColorTbleT[10] :=  7;   ColorTbleT[11] := 14;   ColorTbleT[12] := 19;
ColorTbleT[13] :=  3;   ColorTbleT[14] := 19;   ColorTbleT[15] := 14;
ColorTbleT[16] :=  7;   ColorTbleT[17] :=  3;
If (ZelfKleur=1) Then  Begin
    For j:=1 to 17 Do
      Begin
        ColorTbleT[j]:= Kleur;
      End;  End;

//TekstTble   tekst voor prijslijnen
TekstTble[ 1] :='+2/8';  TekstTble[ 2] :='+1/8'; TekstTble [3] :=' 8/8';
TekstTble[ 4] :=' 7/8';  TekstTble[ 5] :=' 6/8'; TekstTble[ 6] :=' 5/8';
TekstTble[ 7] :=' 4/8';  TekstTble[ 8] :=' 3/8'; TekstTble[ 9] :=' 2/8';
TekstTble[10] :=' 1/8';  TekstTble[11] :=' 0/8'; TekstTble[12] :='-1/8';
TekstTble[13] :='-2/8';
//TekstTbleT tekst voor tijdlijnen
TekstTbleT[ 1] :='4/8';  TekstTbleT[ 2] :='5/8';  TekstTbleT[ 3] :='6/8';
TekstTbleT[ 4] :='7/8';  TekstTbleT[ 5] :='0/8';  TekstTbleT[ 6] :='1/8';
TekstTbleT[ 7] :='2/8';  TekstTbleT[ 8] :='3/8';  TekstTbleT[ 9] :='4/8';
TekstTbleT[10] :='5/8';  TekstTbleT[11] :='6/8';  TekstTbleT[12] :='7/8';
TekstTbleT[13] :='8/8';  TekstTbleT[14] :='1/8';  TekstTblet[15] :='2/8';
TekstTbleT[16] :='3/8';  TekstTbleT[17] :='4/8';

 //**********************************************************
 //  Tekenwerk
 
 // Plaatsen SpeedLines
  If SpeedLnsUp Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[3],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[11],Prijslijn[3],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[11],Prijslijn[3],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[11],Prijslijn[3],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[5],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[9],1,10,1);
    End;
  If SpeedLnsDw Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[11],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[3],Prijslijn[11],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[3],Prijslijn[11],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[3],Prijslijn[11],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 9],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 5],1,10,1);
    End;
 
// Tekenen Mini-Murrey-Math Lines mMMTL
If MiniMurrey Then
  Begin
    For j:= 1 To 12 Do Begin
        RHr3 :=((Prijslijn[j] + PrijsLijn[j+1])/2);
        SpeedLns(TijdH2[1],TijdH2[17],RHr3,RHr3,1,KlrMiniMur,3);
      End              End;

// Tekenen Momentum lijnen omhoog
If MomentmUp Then  Begin
   For j:=1 to 9 Do
    Begin
      SpeedLns(TijdH2[4+j], TijdH2[1],Prijslijn[1],Prijslijn[4+j],1,KlrMiniMur,2);
    End;
   For j:=1 to 4 Do
    Begin
      SpeedLns(TijdH2[13+j],TijdH2[1+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:=1 To 11 Do
    Begin
      SpeedLns(TijdH2[17],TijdH2[5+j],Prijslijn[1+j], Prijslijn[13],1,KlrMiniMur,2);
    End;           End;
 
// Tekenen Momentum lijnen omlaag
If MomentmDwn Then Begin
   For j:= 1 To 5 Do
    Begin
      SpeedLns(TijdH2[0+j],TijdH2[12+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[5+j],TijdH2[17],Prijslijn[1],Prijslijn[13-j],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[1], TijdH2[13-j],Prijslijn[1+j],Prijslijn[13],1,KlrMinimur,2);
    End;           End;

//Tekenen Tijd lijnen van het Frame.
For j:=1 to 17 Do  Begin
    With CreateTrendLine(TijdH2[j],Prijslijn[1],TijdH2[j],Prijslijn[13])DO
     Begin
      Color:= KleurSelec(ColorTbleT[j]);
      If (j=5) Or (j=13) Then Width:=2;
      DrawBehindChart:=True;
     End;          End;

//  Plaatsen 'Circles of conflict'
Ellips(TijdH2[8],TijdH2[10],Prijslijn[6],PrijsLijn[8], KleurConc);
Q:=2;
For j:= 1 To 4 Do
Begin
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[4], PrijsLijn[6],KleurConc);
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[8], PrijsLijn[10],KleurConc);
  Q:=Q+4
End;
 
// Tekenen Prijslijnen van het Frame:
For j:= 1 to 13 Do Begin
    With CreateTrendline(TijdH2[1],Prijslijn[j],TijdH2[17],Prijslijn[j]) Do
    Begin
      Color:= KleurSelec(ColorTbleP[j]);
      If (j=3) Or (j=11) Then Width:= 2;
      DrawBehindChart := True;
    End;           End;

// Plaatsen tekst Prijslijnen en extra tekst prijslijnen
For  j:=1 to 12 Do
  Begin
    CreateText(TijdH2[16]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
    If ExtraTextV Then
    CreateText(TijdH2[ 9]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
  End;
 
// Plaatsen tekst tijdlijnen
For j:=1 to 15 Do
  Begin
    CreateText(TijdH2[j],Prijslijn[13],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
    If ExtraText Then
    CreateText(TijdH2[j],Prijslijn[ 7],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
  End;
   
// Plaatsen lijn waarde
  If Lijnwrde Then Begin
      For j:=1 To 13 Do
        Begin
          WrdeTxt:=FormatFloat('0.00',(Round(Prijslijn[j]*100))/100);
          If (FractlH=12.50) Then WrdeTxt:=FormatFloat('0.000',(Round(Prijslijn[j]*1000))/1000);
          CreateText(TijdH2[17],Prijslijn[j],WrdeTxt).Color:=KleurSelec(ColorTbleP[j]);
        End;       End;

 {$IFDEF SCRIPTVERSION-4}
    If tekston Then Begin
     With CreateText(0,0,Instrument.ID+' MurreyMath '+ IntToStr(Trunc(Space))+' -Koers-Bar frame'+ ' www.JSTAS.com' ) Do
      Begin
         Y1Pct := Plaats;
        X1Pct :=  1;
        VertPosition := vpTop;
        Color:=KleurSelec(KlrTxt);
        Font.Size:=8;
      End;          End;
   {$ENDIF}
End.

LET OP !!
Omdat het tekenwerk lineair verloopt dient u logaritmische grafiek weergave UIT te schakelen.


_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
paulkr



Geregistreerd op: 25-6-2007
Berichten: 131

BerichtGeplaatst: Za Mei 15, 2010 9:10 pm    Onderwerp: Reageer met quote

JanS,
Bedankt voor de update met de nieuwe mogelijkheden en verbeteringen. Geen kei in programmeren … je krijgt het toch mooi allemaal voor elkaar.

Hierbij nog even snel een bevinding ; de indicator wordt momenteel niet zichtbaar, wanneer toegepast op het aandeel Air France (Dit is ook het geval bij eerdere versies van het script). Indien men 8 selecteert voor het tijdframe dan wordt het frame zichtbaar, echter (nog) niet op een wijze dat deze bruikbaar is. Hoop dat je hiermee iets kan om de indicator verder te verbeteren.

Gr. Paul
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Za Mei 15, 2010 9:15 pm    Onderwerp: Reageer met quote

Paul
Dat probleem zou met versie 1.05 verholpen moeten zijn, er stond een ís gelijk teken' teveel in de code voor de berekening, vandaar dat die fout optrad.
.

.
.
_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
paulkr



Geregistreerd op: 25-6-2007
Berichten: 131

BerichtGeplaatst: Za Mei 15, 2010 9:35 pm    Onderwerp: Reageer met quote

Dat is snel ! werk nu prima.

Een ander dingetje dat opvalt en weet niet zeker of hier alles precies volgens het boekje verloopt (oogt wat vreemd) .
Wanneer we de indicator (256 tijdframe) op Arcelor Mitt toegepassen, dan zou men als conclusie kunnen trekken dat het aandeel ondergewaardeerd is…., dit in vergelijking met de overige AEX aandelen waar zij zich in hun frame bevinden. Hoe kijk jij hier tegen aan op basis van Murreymath?
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Zo Mei 16, 2010 11:19 pm    Onderwerp: Reageer met quote

Fijn dat het nu bij jou ook werkt Paul.
*
Dan je opmerking over Arcelor Mittal.
Pak je het 128 dagen frame, dan zie je dat de koers ruwweg heen en weer stuiterd tussen de 6/8 en 1/8 lijn.
Pak je het 256 dagen tijdframe, dan zie je dat het de koers ondanks twee pogingen daartoe niet gelukt is in de trading range ( 3/8 - 5/8 ) te komen.
Na een zijwaartse periode van maanden ( in 2009 ) lijkt de uitbraak in December 2009 dus te mislukken.
Het koersverloop ligt er zwak bij.
Wellicht begrijp ik je verkeerd, maar vergelijking van Arcelo Mittal met de andere aandelen uit de AEX is een beetje moeilijk, omdat het allemaal andere sectoren zijn waarin ze opereren.
Het gedrag zal dus afwijken wat 'm.i. normaal is.
Wanneer je de RSI even on der de MurreyMath grafiek plakt, dan zie je dat deze nog wat hoop biedt op een positief vervolg ... maar wanneer de koers verder daalt is dat snel vervlogen ..
.
Vriendelijke groet,
JanS Wink
_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Ma Mei 17, 2010 9:37 pm    Onderwerp: Reageer met quote

Ik heb de code even wat gewijzigd, de instelling van de reset datum is naar onder in het parameter scherm verplaatst omdat deze instelling maar 1X per jaar benodigd is.
De meest gebruikte instellingen staan nu bovenaan in het parameterscherm
Verder kwam ik er achter ... ja nu al ..., dat er een prachtige instellingsmogelijkheid in TA script is ingebouwd om een datum in te geven.
Minder variabelen en een snellere ingave mogelijkheid.
Dit is dan ook gewijzigd.

Indien u na installeren van deze code het frame in al bestaande grafieken mist, moet u even de MurreyMath indicator selecteren ( in WallStreet via F4) en kiezen voor 'reset parameters' onder in het schermpje.
Code:


{- Filename: MurreyMath Frame -}
{MurreyMath frame}
{ www.JSTAS.com }
// Versie 1.06a

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;
     19: Result := RGB(196,196,0);
     else
       Result := clGray;
   end;
 End;
//
Procedure Ellips(X1,X2: TDateTime; Y1,Y2:Real;Kleur,Dikte:Integer);
 Begin
   With CreateEllipse(X1,Y1,X2,Y2) Do
    Begin
      Color:= KleurSelec(Kleur);
      UseBkColor:= False;
      DrawBehindChart := True;
      Width:=Dikte;
    End;
 End;
//
Procedure Speedlns(X1,X2: TDateTime;Y1,Y2:Real;dik,Klr,Lijnsoort:Integer);
 Begin
  With CreateTrendLine(X1,Y1,X2,Y2) Do
    Begin
      Color:=KleurSelec(Klr);
      Width := dik;
      DrawBehindChart :=True;
      If Lijnsoort=1 Then Style:=lsSolid;
      If Lijnsoort=2 THen Style:=lsDash ;
      If Lijnsoort=3 Then Style:=lsDot  ;
    End;
 End;
//
Var
KleurKeuzes, TijdFrm, WrdeTxt : String   ;
SetDate, LstDate, LstL        : TDateTime;
i,j,K,TijdFrame,A,B,ZelfKleur,Kleur,KlrTxt,Plaats,Rh1,Rh2,
FrmeInFrctl,Q,FrmeInFrctl2,Wkndd,XWndd,KleurConc,KlrminiMur  :Integer;
TijdH1,Space,FractlH,FractlL,SetUp, RHr1,RHr2, RHr3,uitk     :Real;
ExtraText,ExtraTextV,TekstOn,SpeedLnsUp,SpeedLnsDw,
MiniMurrey,MomentmUp,MomentmDwn,Lijnwrde                     :Boolean;
TijdH2     : Array[1..17] Of TDateTime;
Prijslijn  : Array[1..13] Of Real     ;
TekstTble  : Array[1..13] Of String   ;
TekstTbleT : Array[1..17] Of String   ;
ColorTbleP : Array[1..13] Of Integer  ;
ColorTbleT : Array[1..17] Of Integer  ;
sHH,SLL,sDIFF               :TSeries  ;

Begin
With Indicator Do
    Begin
      Shortname            := 'MurreyMath Frame';
      RequiredBars         := 300     ;
      Indicator.NewBand    := False   ;
      Indicator.ScaleRange := SrCommon;
    End;
Kleurkeuzes:='Aqua'#9'Black'#9'Blue'#9'DkGray' #9'Fuchsia'#9'Gray' #9'Green'
              #9'Lime'#9'LtGray'#9'Maroon'#9'Navy'#9'Olive'#9'Purple'#9'Red'
              #9'Silver'#9'Teal'#9'White'#9'Yellow'#9'Dark Yellow';
TijdFrm    := '8'#9'16'#9'32'#9'64'#9'128'#9'256';
Tijdframe  := CreateparameterSelect('Maak keuze Tijdframe',TijdFrm,3,False);
MiniMurrey := CreateParameterBoolean('mini-MurreyMathlines weergeven ?',False,False);
SpeedlnsUp := CreateparameterBoolean('SpeedLines omhoog weergeven ?',False,False);
SpeedLnsDw := CreateParameterBoolean('SpeedLines omlaag weergeven ?',False,False);
MomentmUp  := CreateParameterBoolean('Momentumlines omhoog weergeven ?',False,False);
MomentmDwn := CreateParameterBoolean('Momentumlines omlaag weergeven ?',False,False);
KlrminiMur := 1+CreateParameterSelect('Kleur extra-lijnen',KleurKeuzes,3,False);
Lijnwrde   := CreateParameterBoolean('Lijn waarde in grafiek ?',True,False);
ExtraText  := CreateParameterBoolean('Extra vermelding Horizontale tekst',False,False);
ExtraTextV := CreateParameterBoolean('Extra vermelding Verticale   tekst',False,False);
ZelfKleur  := CreateParameterSelect('Welk kleurpatroon ?','Volgens MurreyMath'#9'Eén zelf op te geven kleur',0,False);
Kleur      := 1+CreateParameterSelect('Geef kleur Murrey-Matrix :',Kleurkeuzes,3,False);
KleurConc  := 1+CreateParameterSelect('Kleur -Circles of Conflict:',Kleurkeuzes,15,False);
TekstOn    := CreateParameterBoolean('Indicatornaam weergeven?',True,False);
Plaats     := CreateParameterInteger('Plaats van de Indicatornaam',1,100,95,False);
KlrTxt     := 1+CreateParameterSelect('Geef kleur Naam weergave :',Kleurkeuzes,13,False);
SetDate    := CreateParameterDate('Geef reset-datum',EncodeDate(2009,10,09));
Wkndd :=2;
Case Tijdframe of
  0: Space:= 8.0 ;   1: Space:= 16.0;   2: Space:= 32.0;
  3: Space:=64.0 ;   4: Space:=128.0;   5: Space:=256.0;
End;

//********************************************************************************
//Berekenen Prijslijnen en vullen prijs-array

sHH := HighSeries(High,Trunc(Space));
sLL := LowSeries (Low ,Trunc(SPace));
sDIFF := SubtractSeries(sHH,sLL);

For i:= 1 To BarCount-1 Do
Begin
 If i = BarCount-1 Then
   Begin
     FractlH := 100000 ;
     If sHH[i] < 25000 Then FractlH := 10000;  If sHH[i] <  2500 Then FractlH :=  1000;
     If sHH[i] <   250 Then FractlH :=   100;  If sHH[i] < 12.50 Then FractlH := 12.50;
     FractlL := 100000 ;
     If sLL[i] < 25000 Then FractlL := 10000;  If sLL[i] <  2500 Then FractlL :=  1000;
     If sLL[i] <   250 Then FractlL :=   100;  If sLL[i] < 12.50 Then FractlL := 12.50;
     RHr2:=4.0
     For j:=1 to 32 Do
      Begin
        If Trunc((FractlH/8.0)/sDIFF[i])=j Then uitk := j;
      End;
     If uitk =1  Then RHr2 :=  8.0;
     If uitk =2  Then RHr2 := 16.0;
     If (uitk >2) And (uitk<= 4) Then RHr2 :=  32.0;
     If (uitk >4) And (uitk<= 8) Then RHr2 :=  64.0;
     If (uitk >8) And (uitk<=16) Then RHr2 := 128.0;
     If (uitk>16) And (uitk<=32) Then RHr2 := 256.0;
     
     FrmeInFrctl := Ceil(sHH[i]/(FractlH/RHr2));
       If (Frac(sHH[i]/(FractlH/RHr2)))<= 0.3125 Then FrmeInFrctl:=FrmeInFrctl-1;
     FrmeInFrctl2 := Ceil(sLL[i]/(FractlH/RHr2));
       If (Frac(sLL[i]/(FractlH/RHr2))) >= 0.6875 Then FrmeInFrctl2 := FrmeInFrctl2+1;
     RHr1:=8.0
       If FrmeInFrctl2 < FrmeInFrctl Then RHr1 := 4.0;
     SetUp := (FractlH/RHr2)*FrmeInFrctl+((FractlH/RHr2)/RHr1)*2;
     For j:= 1 To 13 Do
       Begin
         Prijslijn[j]:= Setup - (j-1)*((FractlH/RHr2)/RHr1);
         If (Prijslijn[j]<(FractlH/4.0)) And (FractlH>100) Then Prijslijn[j] :=( Prijslijn[j-1]-((FractlH/10)/RHr1));
       End;
  End;
End;

//********************************
// Berekening tijd-lijnen van het tijd-frame en vullen tijdlijn array

For i := 1 to BarCount-1 Do Begin
   If Trunc(DateTime[i])= Trunc(Setdate) Then A :=i; End;
//
TijdH1 := ((BarCount-1)-A) /Space ;
For i := 1 To BarCount-1 Do   Begin
    If( i= (A + (Trunc(TijdH1)*Trunc(Space)))) Then
      Begin
        TijdH2[5]:=Trunc(DateTime[i]);
        B := i;
      End;       End;
//
For i:= 1 To BarCount-1 Do  Begin
    For j:=1 To 4 Do
      Begin
        If (i= B-(Space/8)*j) Then TijdH2[5-j] := Trunc(DateTime[i]);
     End;   End;
//
For i:= B to (BarCount-1) Do   Begin
    For j:= 6 to ((Trunc(((BarCount-1)-B)/(Space/8)))+5) Do
      Begin
        K:=j-5;
        If (i= B+(Space/8)*K) Then   TijdH2[j]  := Trunc(DateTime[i]);
      End;      End;
//
For i:= 1 To BarCount-1 Do   Begin
    If ((Trunc(DateTime[i])) = (TijdH2[5+K])) Then Rh1 := i;
    If i=Barcount-1 Then LstDate := Trunc(DateTime[i]);     End;
Rh2 := (BarCount-1)-Rh1;
 If   (((Space/8.0)-Rh2)  <= (6-DayOfWeek(LstDate))) Then Wkndd :=0;
TijdH2[5+K+1]:= LstDate + Trunc(Space/8)-Rh2+(Trunc(((Trunc(Space/8)-Rh2)-(6-DayOfWeek(LstDate)))/5.0))*2+Wkndd  ;
LstL := TijdH2[5+K+1];
//
 For j:=1 To (12-K-1) Do
  Begin
    Wkndd:=0;
    XWndd:=0;
    If DayOfWeek(LstL) = 6 Then Wkndd:=2;
    If ((Space/8)=32.0) Then If DayOfWeek(LstL)=5 Then Xwndd :=2;
    If ((Space/8)=8.0)Then
      Begin
        If (DayOfWeek(LstL)=4) Or (DayOfWeek(LstL)=5) Then Xwndd:=2;
      End;
    If ((Space/8)=4.0) THen
      Begin
      If (DayOfWeek(LstL)=3) Or (DayOfWeek(LstL)=4) Or (DayOfWeek(LstL)=5) Then Xwndd :=2;
      End;
    If ((Space/8)=2.0) Then If DayOfWeek(LstL)= 5 Then Xwndd :=2;
    TijdH2[5+K+1+J] := LstL + (Space/8) + Wkndd + Xwndd + ((Trunc((Space/8)/5))*2) ;
    LstL := TijdH2[5+K+1+J];
  End;
 //********************************************************
 
//Vullen tekst en kleur arrays
//Kleurtabel Prijslijnen
ColorTbleP[ 1] :=  14;   ColorTbleP[ 2] :=  19;   ColorTbleP[ 3] :=   3;
ColorTbleP[ 4] :=  19;   ColorTbleP[ 5] :=  14;   ColorTbleP[ 6] :=   7;
ColorTbleP[ 7] :=   3;   ColorTbleP[ 8] :=   7;   ColorTbleP[ 9] :=  14;
ColorTbleP[10] :=  19;   ColorTbleP[11] :=   3;   ColorTbleP[12] :=  19;
ColorTbleP[13] :=  14;
If (ZelfKleur=1) Then Begin
    For j:=1 to 13 Do
      Begin
        ColorTbleP[j]:= Kleur;
      End;  End;
 
//KleurTabel Tijdlijnen
ColorTbleT[ 1] :=  3;   ColorTbleT[ 2] :=  7;   ColorTbleT[ 3] := 14;
ColorTbleT[ 4] := 19;   ColorTbleT[ 5] :=  3;   ColorTbleT[ 6] := 19;
ColorTbleT[ 7] := 14;   ColorTbleT[ 8] :=  7;   ColorTbleT[ 9] :=  3;
ColorTbleT[10] :=  7;   ColorTbleT[11] := 14;   ColorTbleT[12] := 19;
ColorTbleT[13] :=  3;   ColorTbleT[14] := 19;   ColorTbleT[15] := 14;
ColorTbleT[16] :=  7;   ColorTbleT[17] :=  3;
If (ZelfKleur=1) Then  Begin
    For j:=1 to 17 Do
      Begin
        ColorTbleT[j]:= Kleur;
      End;  End;

//TekstTble   tekst voor prijslijnen
TekstTble[ 1] :='+2/8';  TekstTble[ 2] :='+1/8'; TekstTble [3] :=' 8/8';
TekstTble[ 4] :=' 7/8';  TekstTble[ 5] :=' 6/8'; TekstTble[ 6] :=' 5/8';
TekstTble[ 7] :=' 4/8';  TekstTble[ 8] :=' 3/8'; TekstTble[ 9] :=' 2/8';
TekstTble[10] :=' 1/8';  TekstTble[11] :=' 0/8'; TekstTble[12] :='-1/8';
TekstTble[13] :='-2/8';
//TekstTbleT tekst voor tijdlijnen
TekstTbleT[ 1] :='4/8';  TekstTbleT[ 2] :='5/8';  TekstTbleT[ 3] :='6/8';
TekstTbleT[ 4] :='7/8';  TekstTbleT[ 5] :='0/8';  TekstTbleT[ 6] :='1/8';
TekstTbleT[ 7] :='2/8';  TekstTbleT[ 8] :='3/8';  TekstTbleT[ 9] :='4/8';
TekstTbleT[10] :='5/8';  TekstTbleT[11] :='6/8';  TekstTbleT[12] :='7/8';
TekstTbleT[13] :='8/8';  TekstTbleT[14] :='1/8';  TekstTblet[15] :='2/8';
TekstTbleT[16] :='3/8';  TekstTbleT[17] :='4/8';

 //**********************************************************
 //  Tekenwerk
 
 // Plaatsen SpeedLines
  If SpeedLnsUp Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[3],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[11],Prijslijn[3],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[11],Prijslijn[3],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[11],Prijslijn[3],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[5],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[9],1,10,1);
    End;
  If SpeedLnsDw Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[11],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[3],Prijslijn[11],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[3],Prijslijn[11],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[3],Prijslijn[11],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 9],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 5],1,10,1);
    End;
 
// Tekenen Mini-Murrey-Math Lines mMMTL
If MiniMurrey Then
  Begin
    For j:= 1 To 12 Do Begin
        RHr3 :=((Prijslijn[j] + PrijsLijn[j+1])/2);
        SpeedLns(TijdH2[1],TijdH2[17],RHr3,RHr3,1,KlrMiniMur,3);
      End              End;

// Tekenen Momentum lijnen omhoog
If MomentmUp Then  Begin
   For j:=1 to 9 Do
    Begin
      SpeedLns(TijdH2[4+j], TijdH2[1],Prijslijn[1],Prijslijn[4+j],1,KlrMiniMur,2);
    End;
   For j:=1 to 4 Do
    Begin
      SpeedLns(TijdH2[13+j],TijdH2[1+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:=1 To 11 Do
    Begin
      SpeedLns(TijdH2[17],TijdH2[5+j],Prijslijn[1+j], Prijslijn[13],1,KlrMiniMur,2);
    End;           End;
 
// Tekenen Momentum lijnen omlaag
If MomentmDwn Then Begin
   For j:= 1 To 5 Do
    Begin
      SpeedLns(TijdH2[0+j],TijdH2[12+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[5+j],TijdH2[17],Prijslijn[1],Prijslijn[13-j],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[1], TijdH2[13-j],Prijslijn[1+j],Prijslijn[13],1,KlrMinimur,2);
    End;           End;

//Tekenen Tijd lijnen van het Frame.
For j:=1 to 17 Do  Begin
    With CreateTrendLine(TijdH2[j],Prijslijn[1],TijdH2[j],Prijslijn[13])DO
     Begin
      Color:= KleurSelec(ColorTbleT[j]);
      If (j=5) Or (j=13) Then Width:=2;
      DrawBehindChart:=True;
     End;          End;

//  Plaatsen 'Circles of conflict'
Ellips(TijdH2[8],TijdH2[10],Prijslijn[6],PrijsLijn[8], KleurConc,2);
Q:=2;
For j:= 1 To 4 Do
Begin
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[4], PrijsLijn[6],KleurConc,1);
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[8], PrijsLijn[10],KleurConc,1);
  Q:=Q+4
End;
 
// Tekenen Prijslijnen van het Frame:
For j:= 1 to 13 Do Begin
    With CreateTrendline(TijdH2[1],Prijslijn[j],TijdH2[17],Prijslijn[j]) Do
    Begin
      Color:= KleurSelec(ColorTbleP[j]);
      If (j=3) Or (j=11) Then Width:= 2;
      DrawBehindChart := True;
    End;           End;

// Plaatsen tekst Prijslijnen en extra tekst prijslijnen
For  j:=1 to 12 Do
  Begin
    CreateText(TijdH2[16]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
    If ExtraTextV Then
    CreateText(TijdH2[ 9]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
  End;
 
// Plaatsen tekst tijdlijnen
For j:=1 to 15 Do
  Begin
    CreateText(TijdH2[j],Prijslijn[13],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
    If ExtraText Then
    CreateText(TijdH2[j],Prijslijn[ 7],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
  End;
   
// Plaatsen lijn waarde
  If Lijnwrde Then Begin
      For j:=1 To 13 Do
        Begin
          WrdeTxt:=FormatFloat('0.00',(Round(Prijslijn[j]*100))/100);
          If (FractlH=12.50) Then WrdeTxt:=FormatFloat('0.000',(Round(Prijslijn[j]*1000))/1000);
          CreateText(TijdH2[17]+1,Prijslijn[j],WrdeTxt).Color:=KleurSelec(ColorTbleP[j]);
        End;       End;

 {$IFDEF SCRIPTVERSION-4}
    If tekston Then Begin
     With CreateText(0,0,Instrument.ID+' MurreyMath '+ IntToStr(Trunc(Space))+' -Koers-Bar frame'+ ' www.JSTAS.com' ) Do
      Begin
        Y1Pct := Plaats;
        X1Pct := 1;
        VertPosition := vpTop;
        Color:=KleurSelec(KlrTxt);
        Font.Size:=8;
      End;          End;
   {$ENDIF}
End.

LET OP !!
Omdat het tekenwerk lineair verloopt dient u logaritmische grafiek weergave UIT te schakelen.
Resetdatum moet elk jaar opnieuw worden ingegeven in de maand Oktober.
Neem contact op met jan@jstas.com wanneer u de nieuwe datum niet weet.
.


_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Ma Mei 17, 2010 11:54 pm    Onderwerp: Reageer met quote

Korte update van de weekend update onder de link:

http://www.jstas.com/2009/Dageljiks%20verloop%20van%20de%20AEX%20grafieken.htm

Succes gewenst ...
_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Wo Mei 19, 2010 11:29 pm    Onderwerp: Reageer met quote

Het belang van het juiste frame op de juiste plek:

http://www.jstas.com/2010/MurreyFrame_juiste_plek.htm

*

*

.
_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Eric



Geregistreerd op: 10-9-2005
Berichten: 1412
Woonplaats: Den Haag

BerichtGeplaatst: Do Mei 20, 2010 12:32 pm    Onderwerp: Reageer met quote

Respect voor het bouwen van het script Janus, je mag dan geen programmeur zijn maar je bent desondanks niet bang om zoiets aan te pakken, en met succes. Ik heb het script bekeken, maar heb geen echt rare dingen gezien.

Om mijn reputatie als programmeur in elk geval hoog te houden Wink ben ik wel even met het berekenen van de tijdlijnen gaan stoeien, dat kwam op mij wat complex over. Ik heb het teruggebracht tot dit, wat volgens mij hetzelfde doet.

Code:
{- Filename: MurreyMath Frame -}
{MurreyMath frame}
{ www.JSTAS.com }
// Versie 1.06a

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 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;
     19: Result := RGB(196,196,0);
     else
       Result := clGray;
   end;
 End;
//
Procedure Ellips(X1,X2: TDateTime; Y1,Y2:Real;Kleur,Dikte:Integer);
 Begin
   With CreateEllipse(X1,Y1,X2,Y2) Do
    Begin
      Color:= KleurSelec(Kleur);
      UseBkColor:= False;
      DrawBehindChart := True;
      Width:=Dikte;
    End;
 End;
//
Procedure Speedlns(X1,X2: TDateTime;Y1,Y2:Real;dik,Klr,Lijnsoort:Integer);
 Begin
  With CreateTrendLine(X1,Y1,X2,Y2) Do
    Begin
      Color:=KleurSelec(Klr);
      Width := dik;
      DrawBehindChart :=True;
      If Lijnsoort=1 Then Style:=lsSolid;
      If Lijnsoort=2 THen Style:=lsDash ;
      If Lijnsoort=3 Then Style:=lsDot  ;
    End;
 End;
//
Var
KleurKeuzes, TijdFrm, WrdeTxt : String   ;
SetDate, LstDate, LstL        : TDateTime;
i,j,K,TijdFrame,A,B,X,ZelfKleur,Kleur,KlrTxt,Plaats,Rh1,Rh2,
FrmeInFrctl,Q,FrmeInFrctl2,Wkndd,XWndd,KleurConc,KlrminiMur  :Integer;
TijdH1,Space,FractlH,FractlL,SetUp, RHr1,RHr2, RHr3,uitk     :Real;
ExtraText,ExtraTextV,TekstOn,SpeedLnsUp,SpeedLnsDw,
MiniMurrey,MomentmUp,MomentmDwn,Lijnwrde                     :Boolean;
TijdH2     : Array[1..17] Of TDateTime;
Prijslijn  : Array[1..13] Of Real     ;
TekstTble  : Array[1..13] Of String   ;
TekstTbleT : Array[1..17] Of String   ;
ColorTbleP : Array[1..13] Of Integer  ;
ColorTbleT : Array[1..17] Of Integer  ;
sHH,SLL,sDIFF               :TSeries  ;

Begin
With Indicator Do
    Begin
      Shortname            := 'MurreyMath Frame';
      RequiredBars         := 300     ;
      Indicator.NewBand    := False   ;
      Indicator.ScaleRange := SrCommon;
    End;
Kleurkeuzes:='Aqua'#9'Black'#9'Blue'#9'DkGray' #9'Fuchsia'#9'Gray' #9'Green'
              #9'Lime'#9'LtGray'#9'Maroon'#9'Navy'#9'Olive'#9'Purple'#9'Red'
              #9'Silver'#9'Teal'#9'White'#9'Yellow'#9'Dark Yellow';
TijdFrm    := '8'#9'16'#9'32'#9'64'#9'128'#9'256';
Tijdframe  := CreateparameterSelect('Maak keuze Tijdframe',TijdFrm,3,False);
MiniMurrey := CreateParameterBoolean('mini-MurreyMathlines weergeven ?',False,False);
SpeedlnsUp := CreateparameterBoolean('SpeedLines omhoog weergeven ?',False,False);
SpeedLnsDw := CreateParameterBoolean('SpeedLines omlaag weergeven ?',False,False);
MomentmUp  := CreateParameterBoolean('Momentumlines omhoog weergeven ?',False,False);
MomentmDwn := CreateParameterBoolean('Momentumlines omlaag weergeven ?',False,False);
KlrminiMur := 1+CreateParameterSelect('Kleur extra-lijnen',KleurKeuzes,3,False);
Lijnwrde   := CreateParameterBoolean('Lijn waarde in grafiek ?',True,False);
ExtraText  := CreateParameterBoolean('Extra vermelding Horizontale tekst',False,False);
ExtraTextV := CreateParameterBoolean('Extra vermelding Verticale   tekst',False,False);
ZelfKleur  := CreateParameterSelect('Welk kleurpatroon ?','Volgens MurreyMath'#9'Eén zelf op te geven kleur',0,False);
Kleur      := 1+CreateParameterSelect('Geef kleur Murrey-Matrix :',Kleurkeuzes,3,False);
KleurConc  := 1+CreateParameterSelect('Kleur -Circles of Conflict:',Kleurkeuzes,15,False);
TekstOn    := CreateParameterBoolean('Indicatornaam weergeven?',True,False);
Plaats     := CreateParameterInteger('Plaats van de Indicatornaam',1,100,95,False);
KlrTxt     := 1+CreateParameterSelect('Geef kleur Naam weergave :',Kleurkeuzes,13,False);
SetDate    := CreateParameterDate('Geef reset-datum',EncodeDate(2009,10,09));
Wkndd :=2;
Case Tijdframe of
  0: Space:= 8.0 ;   1: Space:= 16.0;   2: Space:= 32.0;
  3: Space:=64.0 ;   4: Space:=128.0;   5: Space:=256.0;
End;

//********************************************************************************
//Berekenen Prijslijnen en vullen prijs-array

sHH := HighSeries(High,Trunc(Space));
sLL := LowSeries (Low ,Trunc(SPace));
sDIFF := SubtractSeries(sHH,sLL);

For i:= 1 To BarCount-1 Do
Begin
 If i = BarCount-1 Then
  begin
     i := BarCount-1;

     FractlH := 100000 ;
     If sHH[i] < 25000 Then FractlH := 10000;  If sHH[i] <  2500 Then FractlH :=  1000;
     If sHH[i] <   250 Then FractlH :=   100;  If sHH[i] < 12.50 Then FractlH := 12.50;
     FractlL := 100000 ;
     If sLL[i] < 25000 Then FractlL := 10000;  If sLL[i] <  2500 Then FractlL :=  1000;
     If sLL[i] <   250 Then FractlL :=   100;  If sLL[i] < 12.50 Then FractlL := 12.50;
     RHr2:=4.0
     For j:=1 to 32 Do
      Begin
        If Trunc((FractlH/8.0)/sDIFF[i])=j Then uitk := j;
      End;
     If uitk =1  Then RHr2 :=  8.0;
     If uitk =2  Then RHr2 := 16.0;
     If (uitk >2) And (uitk<= 4) Then RHr2 :=  32.0;
     If (uitk >4) And (uitk<= 8) Then RHr2 :=  64.0;
     If (uitk >8) And (uitk<=16) Then RHr2 := 128.0;
     If (uitk>16) And (uitk<=32) Then RHr2 := 256.0;

     FrmeInFrctl := Ceil(sHH[i]/(FractlH/RHr2));
       If (Frac(sHH[i]/(FractlH/RHr2)))<= 0.3125 Then FrmeInFrctl:=FrmeInFrctl-1;
     FrmeInFrctl2 := Ceil(sLL[i]/(FractlH/RHr2));
       If (Frac(sLL[i]/(FractlH/RHr2))) >= 0.6875 Then FrmeInFrctl2 := FrmeInFrctl2+1;
     RHr1:=8.0
       If FrmeInFrctl2 < FrmeInFrctl Then RHr1 := 4.0;
     SetUp := (FractlH/RHr2)*FrmeInFrctl+((FractlH/RHr2)/RHr1)*2;
     For j:= 1 To 13 Do
       Begin
         Prijslijn[j]:= Setup - (j-1)*((FractlH/RHr2)/RHr1);
         If (Prijslijn[j]<(FractlH/4.0)) And (FractlH>100) Then Prijslijn[j] :=( Prijslijn[j-1]-((FractlH/10)/RHr1));
       End;
  End;
End;

//********************************
// Berekening tijd-lijnen van het tijd-frame en vullen tijdlijn array

For i := 1 to BarCount-1 Do Begin
   If Trunc(DateTime[i])= Trunc(Setdate) Then A :=i;
   If i=Barcount-1 Then LstDate := Trunc(DateTime[i]);
End;

TijdH1 := ((BarCount-1)-A) /Space ;
B := A + Trunc(TijdH1)*Trunc(Space);
for j:=1 to 17 do
begin
  i := Trunc(B + (j-5)*Space/8);
  if (i >= 0) and (i < BarCount) then
  begin
{ tijdlijn valt binnen de grafiek, neem de bar datum }
    TijdH2[j] := Trunc(DateTime[i]);
  end else
  begin
{ tijdlijn valt buiten de grafiek, bereken de datum op basis van de laatste bar }
    TijdH2[j] := AddWorkDays(LstDate, i-(BarCount-1));
  end;
end;

//Vullen tekst en kleur arrays
//Kleurtabel Prijslijnen
ColorTbleP[ 1] :=  14;   ColorTbleP[ 2] :=  19;   ColorTbleP[ 3] :=   3;
ColorTbleP[ 4] :=  19;   ColorTbleP[ 5] :=  14;   ColorTbleP[ 6] :=   7;
ColorTbleP[ 7] :=   3;   ColorTbleP[ 8] :=   7;   ColorTbleP[ 9] :=  14;
ColorTbleP[10] :=  19;   ColorTbleP[11] :=   3;   ColorTbleP[12] :=  19;
ColorTbleP[13] :=  14;
If (ZelfKleur=1) Then Begin
    For j:=1 to 13 Do
      Begin
        ColorTbleP[j]:= Kleur;
      End;  End;

//KleurTabel Tijdlijnen
ColorTbleT[ 1] :=  3;   ColorTbleT[ 2] :=  7;   ColorTbleT[ 3] := 14;
ColorTbleT[ 4] := 19;   ColorTbleT[ 5] :=  3;   ColorTbleT[ 6] := 19;
ColorTbleT[ 7] := 14;   ColorTbleT[ 8] :=  7;   ColorTbleT[ 9] :=  3;
ColorTbleT[10] :=  7;   ColorTbleT[11] := 14;   ColorTbleT[12] := 19;
ColorTbleT[13] :=  3;   ColorTbleT[14] := 19;   ColorTbleT[15] := 14;
ColorTbleT[16] :=  7;   ColorTbleT[17] :=  3;
If (ZelfKleur=1) Then  Begin
    For j:=1 to 17 Do
      Begin
        ColorTbleT[j]:= Kleur;
      End;  End;

//TekstTble   tekst voor prijslijnen
TekstTble[ 1] :='+2/8';  TekstTble[ 2] :='+1/8'; TekstTble [3] :=' 8/8';
TekstTble[ 4] :=' 7/8';  TekstTble[ 5] :=' 6/8'; TekstTble[ 6] :=' 5/8';
TekstTble[ 7] :=' 4/8';  TekstTble[ 8] :=' 3/8'; TekstTble[ 9] :=' 2/8';
TekstTble[10] :=' 1/8';  TekstTble[11] :=' 0/8'; TekstTble[12] :='-1/8';
TekstTble[13] :='-2/8';
//TekstTbleT tekst voor tijdlijnen
TekstTbleT[ 1] :='4/8';  TekstTbleT[ 2] :='5/8';  TekstTbleT[ 3] :='6/8';
TekstTbleT[ 4] :='7/8';  TekstTbleT[ 5] :='0/8';  TekstTbleT[ 6] :='1/8';
TekstTbleT[ 7] :='2/8';  TekstTbleT[ 8] :='3/8';  TekstTbleT[ 9] :='4/8';
TekstTbleT[10] :='5/8';  TekstTbleT[11] :='6/8';  TekstTbleT[12] :='7/8';
TekstTbleT[13] :='8/8';  TekstTbleT[14] :='1/8';  TekstTblet[15] :='2/8';
TekstTbleT[16] :='3/8';  TekstTbleT[17] :='4/8';

 //**********************************************************
 //  Tekenwerk

 // Plaatsen SpeedLines
  If SpeedLnsUp Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[3],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[11],Prijslijn[3],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[11],Prijslijn[3],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[11],Prijslijn[3],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[5],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[9],1,10,1);
    End;
  If SpeedLnsDw Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[11],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[3],Prijslijn[11],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[3],Prijslijn[11],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[3],Prijslijn[11],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 9],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 5],1,10,1);
    End;

// Tekenen Mini-Murrey-Math Lines mMMTL
If MiniMurrey Then
  Begin
    For j:= 1 To 12 Do Begin
        RHr3 :=((Prijslijn[j] + PrijsLijn[j+1])/2);
        SpeedLns(TijdH2[1],TijdH2[17],RHr3,RHr3,1,KlrMiniMur,3);
      End              End;

// Tekenen Momentum lijnen omhoog
If MomentmUp Then  Begin
   For j:=1 to 9 Do
    Begin
      SpeedLns(TijdH2[4+j], TijdH2[1],Prijslijn[1],Prijslijn[4+j],1,KlrMiniMur,2);
    End;
   For j:=1 to 4 Do
    Begin
      SpeedLns(TijdH2[13+j],TijdH2[1+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:=1 To 11 Do
    Begin
      SpeedLns(TijdH2[17],TijdH2[5+j],Prijslijn[1+j], Prijslijn[13],1,KlrMiniMur,2);
    End;           End;

// Tekenen Momentum lijnen omlaag
If MomentmDwn Then Begin
   For j:= 1 To 5 Do
    Begin
      SpeedLns(TijdH2[0+j],TijdH2[12+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[5+j],TijdH2[17],Prijslijn[1],Prijslijn[13-j],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[1], TijdH2[13-j],Prijslijn[1+j],Prijslijn[13],1,KlrMinimur,2);
    End;           End;

//Tekenen Tijd lijnen van het Frame.
For j:=1 to 17 Do  Begin
    With CreateTrendLine(TijdH2[j],Prijslijn[1],TijdH2[j],Prijslijn[13])DO
     Begin
      Color:= KleurSelec(ColorTbleT[j]);
      If (j=5) Or (j=13) Then Width:=2;
      DrawBehindChart:=True;
     End;          End;

//  Plaatsen 'Circles of conflict'
Ellips(TijdH2[8],TijdH2[10],Prijslijn[6],PrijsLijn[8], KleurConc,2);
Q:=2;
For j:= 1 To 4 Do
Begin
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[4], PrijsLijn[6],KleurConc,1);
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[8], PrijsLijn[10],KleurConc,1);
  Q:=Q+4
End;

// Tekenen Prijslijnen van het Frame:
For j:= 1 to 13 Do Begin
    With CreateTrendline(TijdH2[1],Prijslijn[j],TijdH2[17],Prijslijn[j]) Do
    Begin
      Color:= KleurSelec(ColorTbleP[j]);
      If (j=3) Or (j=11) Then Width:= 2;
      DrawBehindChart := True;
    End;           End;

// Plaatsen tekst Prijslijnen en extra tekst prijslijnen
For  j:=1 to 12 Do
  Begin
    CreateText(TijdH2[16]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
    If ExtraTextV Then
    CreateText(TijdH2[ 9]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
  End;

// Plaatsen tekst tijdlijnen
For j:=1 to 15 Do
  Begin
    CreateText(TijdH2[j],Prijslijn[13],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
    If ExtraText Then
    CreateText(TijdH2[j],Prijslijn[ 7],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
  End;

// Plaatsen lijn waarde
  If Lijnwrde Then Begin
      For j:=1 To 13 Do
        Begin
          WrdeTxt:=FormatFloat('0.00',(Round(Prijslijn[j]*100))/100);
          If (FractlH=12.50) Then WrdeTxt:=FormatFloat('0.000',(Round(Prijslijn[j]*1000))/1000);
          CreateText(TijdH2[17]+1,Prijslijn[j],WrdeTxt).Color:=KleurSelec(ColorTbleP[j]);
        End;       End;

 {$IFDEF SCRIPTVERSION-4}
    If tekston Then Begin
     With CreateText(0,0,Instrument.ID+' MurreyMath '+ IntToStr(Trunc(Space))+' -Koers-Bar frame'+ ' www.JSTAS.com' ) Do
      Begin
        Y1Pct := Plaats;
        X1Pct := 1;
        VertPosition := vpTop;
        Color:=KleurSelec(KlrTxt);
        Font.Size:=8;
      End;          End;
   {$ENDIF}
End.

LET OP !!
Omdat het tekenwerk lineair verloopt dient u logaritmische grafiek weergave UIT te schakelen.
Resetdatum moet elk jaar opnieuw worden ingegeven in de maand Oktober.
Neem contact op met jan@jstas.com wanneer u de nieuwe datum niet weet.


---
Eric
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Do Mei 20, 2010 8:31 pm    Onderwerp: Reageer met quote

Bedankt voor de aanpassing Eric, dat ziet er een stuk duidelijker uit inderdaad.

Er is nu voor zover ik kan zien nog maar één probleempje in het script.

Namelijk wanneer er nog geen koersen zijn zoals bij een FTI Mei het geval is in bijvoorbeeld Januari van dit jaar, wordt het frame nog niet juist getekend in de periode voordat er koersen aanwezig zijn.

Heb je daar nog een elegante oplossing voor ? Wink
.
_________________
Vriendelijke groet,
JanS Wink


Laatst aangepast door Janus op Vr Mei 21, 2010 10:03 pm, in totaal 1 keer bewerkt
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Janus



Geregistreerd op: 30-1-2008
Berichten: 301

BerichtGeplaatst: Do Mei 20, 2010 10:57 pm    Onderwerp: Reageer met quote

Korte update geplaatst,
-->
http://www.jstas.com/2009/Dageljiks%20verloop%20van%20de%20AEX%20grafieken.htm
->
Succes !
.
_________________
Vriendelijke groet,
JanS Wink
Naar boven
Bekijk gebruikers profiel Stuur privé bericht Verstuur e-mail Bekijk de homepage
Eric



Geregistreerd op: 10-9-2005
Berichten: 1412
Woonplaats: Den Haag

BerichtGeplaatst: Vr Mei 21, 2010 2:14 am    Onderwerp: Reageer met quote

Janus schreef:
Heb je daar nog een elegante oplossing voor ? Wink
.


Ik denk dat dit wel werkt:

Code:
{- Filename: MurreyMath Frame -}
{MurreyMath frame}
{ www.JSTAS.com }
// Versie 1.06a

function AddWorkDays(Date: TDateTime; WorkDays: integer): TDateTime;
var
  n: integer;
begin
  if WorkDays > 0 then
  begin
    n := DayOfWeek(Date)-2;
    WorkDays := WorkDays + n;
    Result := (Date-n) + (WorkDays div 5) * 7 + (WorkDays mod 5);
  end else
  begin
    n := DayOfWeek(Date)-6;
    WorkDays := WorkDays + n;
    Result := (Date-n) + (WorkDays div 5) * 7 + (WorkDays mod 5);
  end;
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;
     19: Result := RGB(196,196,0);
     else
       Result := clGray;
   end;
 End;
//
Procedure Ellips(X1,X2: TDateTime; Y1,Y2:Real;Kleur,Dikte:Integer);
 Begin
   With CreateEllipse(X1,Y1,X2,Y2) Do
    Begin
      Color:= KleurSelec(Kleur);
      UseBkColor:= False;
      DrawBehindChart := True;
      Width:=Dikte;
    End;
 End;
//
Procedure Speedlns(X1,X2: TDateTime;Y1,Y2:Real;dik,Klr,Lijnsoort:Integer);
 Begin
  With CreateTrendLine(X1,Y1,X2,Y2) Do
    Begin
      Color:=KleurSelec(Klr);
      Width := dik;
      DrawBehindChart :=True;
      If Lijnsoort=1 Then Style:=lsSolid;
      If Lijnsoort=2 THen Style:=lsDash ;
      If Lijnsoort=3 Then Style:=lsDot  ;
    End;
 End;
//
Var
KleurKeuzes, TijdFrm, WrdeTxt : String   ;
SetDate, LstDate, FirstDate   : TDateTime;
i,j,TijdFrame,A,B,ZelfKleur,Kleur,KlrTxt,Plaats,
FrmeInFrctl,Q,FrmeInFrctl2,Wkndd,KleurConc,KlrminiMur        :Integer;
TijdH1,Space,FractlH,FractlL,SetUp, RHr1,RHr2, RHr3,uitk     :Real;
ExtraText,ExtraTextV,TekstOn,SpeedLnsUp,SpeedLnsDw,
MiniMurrey,MomentmUp,MomentmDwn,Lijnwrde                     :Boolean;
TijdH2     : Array[1..17] Of TDateTime;
Prijslijn  : Array[1..13] Of Real     ;
TekstTble  : Array[1..13] Of String   ;
TekstTbleT : Array[1..17] Of String   ;
ColorTbleP : Array[1..13] Of Integer  ;
ColorTbleT : Array[1..17] Of Integer  ;
sHH,SLL,sDIFF               :TSeries  ;

Begin
With Indicator Do
    Begin
      Shortname            := 'MurreyMath Frame';
      RequiredBars         := 300     ;
      Indicator.NewBand    := False   ;
      Indicator.ScaleRange := SrCommon;
    End;
Kleurkeuzes:='Aqua'#9'Black'#9'Blue'#9'DkGray' #9'Fuchsia'#9'Gray' #9'Green'
              #9'Lime'#9'LtGray'#9'Maroon'#9'Navy'#9'Olive'#9'Purple'#9'Red'
              #9'Silver'#9'Teal'#9'White'#9'Yellow'#9'Dark Yellow';
TijdFrm    := '8'#9'16'#9'32'#9'64'#9'128'#9'256';
Tijdframe  := CreateparameterSelect('Maak keuze Tijdframe',TijdFrm,3,False);
MiniMurrey := CreateParameterBoolean('mini-MurreyMathlines weergeven ?',False,False);
SpeedlnsUp := CreateparameterBoolean('SpeedLines omhoog weergeven ?',False,False);
SpeedLnsDw := CreateParameterBoolean('SpeedLines omlaag weergeven ?',False,False);
MomentmUp  := CreateParameterBoolean('Momentumlines omhoog weergeven ?',False,False);
MomentmDwn := CreateParameterBoolean('Momentumlines omlaag weergeven ?',False,False);
KlrminiMur := 1+CreateParameterSelect('Kleur extra-lijnen',KleurKeuzes,3,False);
Lijnwrde   := CreateParameterBoolean('Lijn waarde in grafiek ?',True,False);
ExtraText  := CreateParameterBoolean('Extra vermelding Horizontale tekst',False,False);
ExtraTextV := CreateParameterBoolean('Extra vermelding Verticale   tekst',False,False);
ZelfKleur  := CreateParameterSelect('Welk kleurpatroon ?','Volgens MurreyMath'#9'Eén zelf op te geven kleur',0,False);
Kleur      := 1+CreateParameterSelect('Geef kleur Murrey-Matrix :',Kleurkeuzes,3,False);
KleurConc  := 1+CreateParameterSelect('Kleur -Circles of Conflict:',Kleurkeuzes,15,False);
TekstOn    := CreateParameterBoolean('Indicatornaam weergeven?',True,False);
Plaats     := CreateParameterInteger('Plaats van de Indicatornaam',1,100,95,False);
KlrTxt     := 1+CreateParameterSelect('Geef kleur Naam weergave :',Kleurkeuzes,13,False);
SetDate    := CreateParameterDate('Geef reset-datum',EncodeDate(2009,10,09));
Wkndd :=2;
Case Tijdframe of
  0: Space:= 8.0 ;   1: Space:= 16.0;   2: Space:= 32.0;
  3: Space:=64.0 ;   4: Space:=128.0;   5: Space:=256.0;
End;

//********************************************************************************
//Berekenen Prijslijnen en vullen prijs-array

sHH := HighSeries(High,Trunc(Space));
sLL := LowSeries (Low ,Trunc(SPace));
sDIFF := SubtractSeries(sHH,sLL);

For i:= 1 To BarCount-1 Do
Begin
 If i = BarCount-1 Then
  begin
     i := BarCount-1;

     FractlH := 100000 ;
     If sHH[i] < 25000 Then FractlH := 10000;  If sHH[i] <  2500 Then FractlH :=  1000;
     If sHH[i] <   250 Then FractlH :=   100;  If sHH[i] < 12.50 Then FractlH := 12.50;
     FractlL := 100000 ;
     If sLL[i] < 25000 Then FractlL := 10000;  If sLL[i] <  2500 Then FractlL :=  1000;
     If sLL[i] <   250 Then FractlL :=   100;  If sLL[i] < 12.50 Then FractlL := 12.50;
     RHr2:=4.0
     For j:=1 to 32 Do
      Begin
        If Trunc((FractlH/8.0)/sDIFF[i])=j Then uitk := j;
      End;
     If uitk =1  Then RHr2 :=  8.0;
     If uitk =2  Then RHr2 := 16.0;
     If (uitk >2) And (uitk<= 4) Then RHr2 :=  32.0;
     If (uitk >4) And (uitk<= 8) Then RHr2 :=  64.0;
     If (uitk >8) And (uitk<=16) Then RHr2 := 128.0;
     If (uitk>16) And (uitk<=32) Then RHr2 := 256.0;

     FrmeInFrctl := Ceil(sHH[i]/(FractlH/RHr2));
       If (Frac(sHH[i]/(FractlH/RHr2)))<= 0.3125 Then FrmeInFrctl:=FrmeInFrctl-1;
     FrmeInFrctl2 := Ceil(sLL[i]/(FractlH/RHr2));
       If (Frac(sLL[i]/(FractlH/RHr2))) >= 0.6875 Then FrmeInFrctl2 := FrmeInFrctl2+1;
     RHr1:=8.0
       If FrmeInFrctl2 < FrmeInFrctl Then RHr1 := 4.0;
     SetUp := (FractlH/RHr2)*FrmeInFrctl+((FractlH/RHr2)/RHr1)*2;
     For j:= 1 To 13 Do
       Begin
         Prijslijn[j]:= Setup - (j-1)*((FractlH/RHr2)/RHr1);
         If (Prijslijn[j]<(FractlH/4.0)) And (FractlH>100) Then Prijslijn[j] :=( Prijslijn[j-1]-((FractlH/10)/RHr1));
       End;
  End;
End;

//********************************
// Berekening tijd-lijnen van het tijd-frame en vullen tijdlijn array

For i := 0 to BarCount-1 Do Begin
   If Trunc(DateTime[i])= Trunc(Setdate) Then A :=i;
   if i=0 then FirstDate := Trunc(DateTime[i]);
   If i=Barcount-1 Then LstDate := Trunc(DateTime[i]);
End;

TijdH1 := ((BarCount-1)-A) /Space ;
B := A + Trunc(TijdH1)*Trunc(Space);
for j:=1 to 17 do
begin
  i := Trunc(B + (j-5)*Space/8);
  if (i >= 0) and (i < BarCount) then
{ tijdlijn valt binnen de grafiek, neem de bar datum }
    TijdH2[j] := Trunc(DateTime[i])
  else if i < 0 then
{ tijdlijn valt links buiten de grafiek, bereken de datum op basis van de eerste bar }
    TijdH2[j] := AddWorkDays(FirstDate, i)
  else
{ tijdlijn valt rechts buiten de grafiek, bereken de datum op basis van de laatste bar }
    TijdH2[j] := AddWorkDays(LstDate, i-(BarCount-1));
end;

//Vullen tekst en kleur arrays
//Kleurtabel Prijslijnen
ColorTbleP[ 1] :=  14;   ColorTbleP[ 2] :=  19;   ColorTbleP[ 3] :=   3;
ColorTbleP[ 4] :=  19;   ColorTbleP[ 5] :=  14;   ColorTbleP[ 6] :=   7;
ColorTbleP[ 7] :=   3;   ColorTbleP[ 8] :=   7;   ColorTbleP[ 9] :=  14;
ColorTbleP[10] :=  19;   ColorTbleP[11] :=   3;   ColorTbleP[12] :=  19;
ColorTbleP[13] :=  14;
If (ZelfKleur=1) Then Begin
    For j:=1 to 13 Do
      Begin
        ColorTbleP[j]:= Kleur;
      End;  End;

//KleurTabel Tijdlijnen
ColorTbleT[ 1] :=  3;   ColorTbleT[ 2] :=  7;   ColorTbleT[ 3] := 14;
ColorTbleT[ 4] := 19;   ColorTbleT[ 5] :=  3;   ColorTbleT[ 6] := 19;
ColorTbleT[ 7] := 14;   ColorTbleT[ 8] :=  7;   ColorTbleT[ 9] :=  3;
ColorTbleT[10] :=  7;   ColorTbleT[11] := 14;   ColorTbleT[12] := 19;
ColorTbleT[13] :=  3;   ColorTbleT[14] := 19;   ColorTbleT[15] := 14;
ColorTbleT[16] :=  7;   ColorTbleT[17] :=  3;
If (ZelfKleur=1) Then  Begin
    For j:=1 to 17 Do
      Begin
        ColorTbleT[j]:= Kleur;
      End;  End;

//TekstTble   tekst voor prijslijnen
TekstTble[ 1] :='+2/8';  TekstTble[ 2] :='+1/8'; TekstTble [3] :=' 8/8';
TekstTble[ 4] :=' 7/8';  TekstTble[ 5] :=' 6/8'; TekstTble[ 6] :=' 5/8';
TekstTble[ 7] :=' 4/8';  TekstTble[ 8] :=' 3/8'; TekstTble[ 9] :=' 2/8';
TekstTble[10] :=' 1/8';  TekstTble[11] :=' 0/8'; TekstTble[12] :='-1/8';
TekstTble[13] :='-2/8';
//TekstTbleT tekst voor tijdlijnen
TekstTbleT[ 1] :='4/8';  TekstTbleT[ 2] :='5/8';  TekstTbleT[ 3] :='6/8';
TekstTbleT[ 4] :='7/8';  TekstTbleT[ 5] :='0/8';  TekstTbleT[ 6] :='1/8';
TekstTbleT[ 7] :='2/8';  TekstTbleT[ 8] :='3/8';  TekstTbleT[ 9] :='4/8';
TekstTbleT[10] :='5/8';  TekstTbleT[11] :='6/8';  TekstTbleT[12] :='7/8';
TekstTbleT[13] :='8/8';  TekstTbleT[14] :='1/8';  TekstTblet[15] :='2/8';
TekstTbleT[16] :='3/8';  TekstTbleT[17] :='4/8';

 //**********************************************************
 //  Tekenwerk

 // Plaatsen SpeedLines
  If SpeedLnsUp Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[3],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[11],Prijslijn[3],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[11],Prijslijn[3],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[11],Prijslijn[3],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[5],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[11],Prijslijn[9],1,10,1);
    End;
  If SpeedLnsDw Then
    Begin
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[11],2, 3,1);
      SpeedLns(TijdH2[5],TijdH2[11],Prijslijn[3],Prijslijn[11],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[ 9],Prijslijn[3],Prijslijn[11],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[ 7],Prijslijn[3],Prijslijn[11],1,10,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 9],1,10,2);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 7],1, 3,1);
      SpeedLns(TijdH2[5],TijdH2[13],Prijslijn[3],Prijslijn[ 5],1,10,1);
    End;

// Tekenen Mini-Murrey-Math Lines mMMTL
If MiniMurrey Then
  Begin
    For j:= 1 To 12 Do Begin
        RHr3 :=((Prijslijn[j] + PrijsLijn[j+1])/2);
        SpeedLns(TijdH2[1],TijdH2[17],RHr3,RHr3,1,KlrMiniMur,3);
      End              End;

// Tekenen Momentum lijnen omhoog
If MomentmUp Then  Begin
   For j:=1 to 9 Do
    Begin
      SpeedLns(TijdH2[4+j], TijdH2[1],Prijslijn[1],Prijslijn[4+j],1,KlrMiniMur,2);
    End;
   For j:=1 to 4 Do
    Begin
      SpeedLns(TijdH2[13+j],TijdH2[1+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:=1 To 11 Do
    Begin
      SpeedLns(TijdH2[17],TijdH2[5+j],Prijslijn[1+j], Prijslijn[13],1,KlrMiniMur,2);
    End;           End;

// Tekenen Momentum lijnen omlaag
If MomentmDwn Then Begin
   For j:= 1 To 5 Do
    Begin
      SpeedLns(TijdH2[0+j],TijdH2[12+j],Prijslijn[1],Prijslijn[13],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[5+j],TijdH2[17],Prijslijn[1],Prijslijn[13-j],1,KlrMiniMur,2);
    End;
   For j:= 1 To 11 Do
    Begin
      SpeedLns(TijdH2[1], TijdH2[13-j],Prijslijn[1+j],Prijslijn[13],1,KlrMinimur,2);
    End;           End;

//Tekenen Tijd lijnen van het Frame.
For j:=1 to 17 Do  Begin
    With CreateTrendLine(TijdH2[j],Prijslijn[1],TijdH2[j],Prijslijn[13])DO
     Begin
      Color:= KleurSelec(ColorTbleT[j]);
      If (j=5) Or (j=13) Then Width:=2;
      DrawBehindChart:=True;
     End;          End;

//  Plaatsen 'Circles of conflict'
Ellips(TijdH2[8],TijdH2[10],Prijslijn[6],PrijsLijn[8], KleurConc,2);
Q:=2;
For j:= 1 To 4 Do
Begin
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[4], PrijsLijn[6],KleurConc,1);
  Ellips(TijdH2[Q],TijdH2[Q+2],PrijsLijn[8], PrijsLijn[10],KleurConc,1);
  Q:=Q+4
End;

// Tekenen Prijslijnen van het Frame:
For j:= 1 to 13 Do Begin
    With CreateTrendline(TijdH2[1],Prijslijn[j],TijdH2[17],Prijslijn[j]) Do
    Begin
      Color:= KleurSelec(ColorTbleP[j]);
      If (j=3) Or (j=11) Then Width:= 2;
      DrawBehindChart := True;
    End;           End;

// Plaatsen tekst Prijslijnen en extra tekst prijslijnen
For  j:=1 to 12 Do
  Begin
    CreateText(TijdH2[16]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
    If ExtraTextV Then
    CreateText(TijdH2[ 9]+1,PrijsLijn[j],TekstTble[j]).Color:= KleurSelec(ColorTbleP[j]);
  End;

// Plaatsen tekst tijdlijnen
For j:=1 to 15 Do
  Begin
    CreateText(TijdH2[j],Prijslijn[13],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
    If ExtraText Then
    CreateText(TijdH2[j],Prijslijn[ 7],TekstTbleT[j]).Color:= KleurSelec(ColorTbleT[j]);
  End;

// Plaatsen lijn waarde
  If Lijnwrde Then Begin
      For j:=1 To 13 Do
        Begin
          WrdeTxt:=FormatFloat('0.00',(Round(Prijslijn[j]*100))/100);
          If (FractlH=12.50) Then WrdeTxt:=FormatFloat('0.000',(Round(Prijslijn[j]*1000))/1000);
          CreateText(TijdH2[17]+1,Prijslijn[j],WrdeTxt).Color:=KleurSelec(ColorTbleP[j]);
        End;       End;

 {$IFDEF SCRIPTVERSION-4}
    If tekston Then Begin
     With CreateText(0,0,Instrument.ID+' MurreyMath '+ IntToStr(Trunc(Space))+' -Koers-Bar frame'+ ' www.JSTAS.com' ) Do
      Begin
        Y1Pct := Plaats;
        X1Pct := 1;
        VertPosition := vpTop;
        Color:=KleurSelec(KlrTxt);
        Font.Size:=8;
      End;          End;
   {$ENDIF}
End.

LET OP !!
Omdat het tekenwerk lineair verloopt dient u logaritmische grafiek weergave UIT te schakelen.
Resetdatum moet elk jaar opnieuw worden ingegeven in de maand Oktober.
Neem contact op met jan@jstas.com wanneer u de nieuwe datum niet weet.


---
Eric
Naar boven
Bekijk gebruikers profiel Stuur privé bericht
Berichten van afgelopen:   
Plaats nieuw bericht   Plaats reactie    TA-script.com forum index -> Vraag en antwoord Tijden zijn in GMT + 1 uur
Ga naar pagina Vorige  1, 2, 3, 4, 5  Volgende
Pagina 2 van 5

 
Ga naar:  
Je mag geen nieuwe onderwerpen plaatsen
Je mag geen reacties plaatsen
Je mag je berichten niet bewerken
Je mag je berichten niet verwijderen
Ja mag niet stemmen in polls



Powered by phpBB © 2001, 2005 phpBB Group