Allmänt meddelande

Collapse
No announcement yet.

MACD/Histogram Script

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • MACD/Histogram Script

    Hej!
    Finns det någon som skulle kunna hjälpa mig med att skapa ett script som kan göra ett MACD/Histogram, 60 minutersperoder.
    Modellinställningar:
    MV1 längd: 13
    MV2 längd: 55
    MV MACD signalkurva:3
    Linjär skala.

    När Histogrametsstapel är större än eller lika med 0,2 ska en köpsignalflagga ritas och när den är mindre än eller lika med -0,2 så ska en säljsignal flagga ritas.

    Vore ytterst tacksam om jag kan få tips på hur detta skulle kunna göras.
    Bif bild.
    Mvh
    Benjamin
    Attached Files

  • #2
    Tänkte du något i den här stilen?
    Den vanliga macd-funktionen verkar inte vara ställbar, om det inte görs via macd i vänsterkanten förstås.

    Kod:
    { MACD modifierat  köp eller sälj }
    divGräns:=0.4
    p1:=13
    p2:=55
    p3:=3
    mvTyp:=s
    
    mv1:=mov(c,p1,mvTyp)
    mv2:=mov(c,p2,mvTyp)
    MacdLine:=sub(mv1,mv2)
    SignalLine:=mov(MacdLine,p3,mvTyp)
    Diff:=sub(MacdLine,SignalLine)
    
    divOk:=ge(abs(Diff),divGräns)
    macdX:=cross(MacdLine,SignalLine)
    macdB:=and(macdX,gt(MacdLine,SignalLine))
    macdS:=and(macdX,lt(MacdLine,SignalLine))
    
    posLång:=and(macdB,divOk)
    posKort:=and(macdS,divOk)
    
    draw(MacdLine,1,maA)
    draw(SignalLine,2,raA)
    draw(Diff,3,dyaAF)
    draw(macdB,4,baAF)
    draw(macdS,5,raAF)
    
    i60(
    mult(posLång,5)	 { posKort om sälj }
    )
    Må gott
    **Vincent

    Comment


    • #3
      Hej Vincnet!
      Precis så tänkte jag. Jag har noterat att man kan använda MACD i vänsterkanten men jag har försökt att få till ett Histogran som ska ge signal vid större än eller lika med +/- -. Tusen tack för hjälpen!
      Mvh
      Benji

      Comment


      • #4
        Ingen signal i cellen

        Varför får jag ingen 1 i cell 200 vid signal ? Får flagga och larm i larmfönstret, har även provat med LillWicke block_diagram_skriv men inget hjälper.

        { MACD modifierat köp }

        divGräns:=0.4
        p1:=15
        p2:=55
        p3:=3
        mvTyp:=s

        mv1:=mov(c,p1,mvTyp)
        mv2:=mov(c,p2,mvTyp)
        MacdLine:=sub(mv1,mv2)
        SignalLine:=mov(MacdLine,p3,mvTyp)
        Diff:=sub(MacdLine,SignalLine)

        divOk:=ge(abs(Diff),divGräns)
        macdX:=cross(MacdLine,SignalLine)
        macdB:=and(macdX,gt(MacdLine,SignalLine))

        posLång:=and(macdB,divOk)

        draw(MacdLine,1,maA)
        draw(SignalLine,2,raA)
        draw(Diff,3,dyaAF)
        draw(macdB,4,gaAF)

        i30(
        köp1=and(posLång,1)

        setgvarif(köp1,200,eqv(cum(1),1))

        mult(köp1,10)
        )

        Comment


        • #5
          Uteslut aldrig fjärde parametern i setgvarif() är min erfarenhet.
          Om du inte är ute efter något mer komplext, utan bara vill ha en etta eller nolla i cellen allteftersom köp1 ändrar sig räcker det med att skriva:

          setgvarif(köp1,200,1,T)

          Comment


          • #6
            Det är ändå rätt konstigt då jag har ett annat skript som ligger och ändrar vid köp och sälj där skrivningen till cellen är densamma, naturligtvis annat cellnummer.

            Kan en cell på något vis bli förstörd och inte kommunicera längre ?

            Comment


            • #7
              Har aldrig hört talas om att cellen kan bli förstörd, men vem vet, cellen ligger ju på hårddisken så rent teoretiskt kan det ju hända.

              Prova ett annat cellnummer, stäng av diagramvisningen och ha bara larm påslaget, så får vi se om det blir någon skillnad.

              Hur ser du vad det är för siffra i cellen föresten?

              Comment


              • #8
                Genom kalkylforskaren, har lagt upp celler som jag använder enligt ditt tipps. Har råkat ut tidigare att jag inte fått igenom signaler och kollat allt i skriptet utan att hitta något fel men som sista lösning bytt cellnummer och då har det blivit signal.

                Det är nog mina Gremlins som ställer till det.

                Comment


                • #9
                  Det finns ju både elaka, busiga och snälla Gremlings har jag hört.

                  Kan det vara så att någon busig Gremling har kört igång ett annat script som också använder cell 200?

                  Comment


                  • #10
                    I så fall kör han igång skript med alla nummer jag ändrar till, har provat flera.
                    Det går väl inte att testa förrän börsen öppnar imorgon ? Det konstiga är att det bara är detta skriptet som krånglar.

                    Comment


                    • #11
                      Har tittat lite i ditt script och kört det nu.
                      Det som händer är att du inte får några köp alls och alltså ingen etta i cell 200 utan en nolla.

                      Problemet är den här raden som aldrig blir sann:
                      posLång:=and(macdB,divOk)
                      Ändra den till:
                      posLång:=and(macdB,1)

                      Därefter har du ett problem till att tampas med. Eftersom köpsignalen endast inträder under en kort tid och därefter slår om till noll får du inget bestående värde av en etta i cell 200, utan den slår snabbt om till noll.
                      Detta kan man ändra på genom att skriva:
                      setgvarif(1,200,köp1,T)
                      Men då måste du ha en motsvarande rad i säljskriptet som säkerställer att cell 200 nollställs när scriptet slår om till sälj.
                      setgvarif(0,200,sälj1,T)

                      Ändrar du enligt ovanstående har du satt Gremlinen på pottkanten och du får din etta i cell 200.

                      Last edited by LillWicke; 2013-03-04, 23:14.

                      Comment


                      • #12
                        Har provat och jag får köpflaggor men ingen 1 i cell 200. Dessutom har hela arbetsytan blivit vansinnig och tutar så fort man klickar på något, som det hängt sig, och två medelvärden som ritas i ett annat skript ritas inte längre.

                        Jag får släcka ner detta och se om Gremlingarna har somnat till imorgon.

                        Comment


                        • #13
                          Ops vi körde om varann. Får väl jaga en stund till.

                          Comment


                          • #14
                            Ändrat så här och då får jag 1 i cell 201 alltså sälj.
                            i30(
                            köp1=and(macdB,1)
                            setgvarif(1,200,köp1,T)
                            setgvarif(0,201,köp1,T)
                            mult(köp1,10)
                            )
                            Varför finns denna raden i skriptet om den aldrig blir sann ?
                            posLång:=and(macdB,divOk)

                            Har kopierat skriptet från denna tråden och som delsignal till ett annat skript så hade det hittills gett ca 70 pkt på C-terminen men det var väl bara en dröm.

                            Arbetsytan är fortfarande något fel på, får se till imorgon när PC-en sovit i natt.

                            Comment


                            • #15
                              Ursprungligen postat av ali Visa inlägg
                              Ändrat så här och då får jag 1 i cell 201 alltså sälj.
                              i30(
                              köp1=and(macdB,1)
                              setgvarif(1,200,köp1,T)
                              setgvarif(0,201,köp1,T)
                              mult(köp1,10)
                              )
                              Genom de ändringar du gjort, kan cell 201 inte påverkas på så sätt att det skrivs en etta där, det är det något annat script som gör.
                              Är köp1 sann skrivs en etta i cell 200 med de ändringar du gjort, det gör det hos mig.

                              Ursprungligen postat av ali Visa inlägg
                              Varför finns denna raden i skriptet om den aldrig blir sann ?
                              posLång:=and(macdB,divOk)
                              MacdLine och SignalLine-kurvorna ligger för tätt för att divOk ska bli sann.
                              Men om du exempelvis ändrar p3 till 10 istället så blir villkoret uppfyllt.

                              Comment

                              Working...
                              X