Allmänt meddelande

Collapse
No announcement yet.

Ej många köp i rad utan sälj

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

  • Ej många köp i rad utan sälj

    Glad påsk på Er;

    Här är jag uppe med tuppen och försöker skriva ett script
    som inte ger köpsignal flera gånger i rad, utan det ska bara
    ge köpsignal om jag har fått säljsignal emellan.
    ( Ligger jag redan i köp vill jag inte köpa ännu mera )


    Tyvärr får jag det inte att fungera, kan någon
    hjälpa mej med detta ?
    Tack !

    Kent


    Jag har följande med infällda kommentarer :

    ...
    ...

    i10
    (

    { Man kan aldrig få köpsignal och säljsignal samtidigt }
    { Tror även att jag måste fått en säljsignal tidigare då jag sätter innehav = 0 }

    köpsignal=funktion1(...)
    säljsignal=funktion2(...)

    {
    Sätt innehav till 1 om ( köpsignal och inget innehav ) :

    if ( ( köpsignal > 0 ) && ( innehav == 0 ) )
    innehav := 1;
    else
    innehav := 0;
    }

    innehav=IF(AND(köpsignal,NOT(innehav)),1,0)

    {
    Om säljsignal sätt innehav till 0

    if( säljsignal > 0 )
    innehav := 0;
    else
    /* ingenting vilket innebär innehav := innehav */
    }

    innehav=IF(säljsignal,0,innehav)

    { Förmodligen får jag inte ha "innehav" i högerledet ovan av någon anledning ????? }

    MULT(innehav,100)
    )

  • #2
    Hej på dig Kent

    Om jag tar fasta på din formulering
    "( Ligger jag redan i köp vill jag inte köpa ännu mera )" tycker jag inte att det här är något problem.

    Antag att du har väl fungerande köp och säljscript. Problemet är bara att det så att säga kan komma flera köpsignaler på raken.
    I så fall är allt enkelt. När du bygger din ordermodell låter du första sekvensen ta hand om köpaktiviteten. När detta är gjort stegar ordermodellen automatiskt till nästa sekvens och där ligger ju säljaktiviteten.

    D.v.s det finns ingen risk för att programmet skall utföra flera "köp" bara för att triggersignalen kommer.

    Är du med på idéen?

    Comment


    • #3
      Hej Torsten,

      Jag är inte riktigt med på hur Du menar ......

      Jag använder 5 olika script :

      * ritar triggergraf
      * aktiverar köpsignal ( köper terminer )
      * aktiverar neutralt läge från köp ( nettar ut mej från köp )
      * aktiverar säljsignal ( säljer terminer )
      * aktiverar neutralt läge från sälj ( nettar ut mej från sälj )

      Varje script som aktiverar något skickar larm
      till min mobiltelefon, varvid en de flesta larm egentligen
      inte betyder något i handling.

      T.ex. då jag får flera köpsignaler i rad,
      flera säljsignaler i rad o.s.v.
      varför jag tänkte eliminera dessa signaler .......

      Kan jag göra detta på något smartare sätt än
      att skriva om scripten menar Du ?

      Med vänlig hälsning

      Kent

      Comment


      • #4
        Du kan mycket väl göra som Torsten föreslog om det är så att det som scripten gör mycket väl kan göras i sekvens, med endast ett givet utfall i taget, JA eller NEJ.

        Om du parallellt måste köra alla varje kursinsamling för att välja ett av flera tänkbara utfall behöver du få in lite logik i scripten i sig.

        Dock är det två aber som du gjort hittills:

        1. Du använder en variabel som inte finns första gången du hänvisar till den. Dvs den finns först efter första returvärdet.

        Vet inte vad du skall detta 'innehav' till men jag antar att du tänker bygga på scriptet med flera saker där.

        2. Scriptspråket stödjer inte multipla initieringar av samma variabel.

        Prova följande:

        köpsignal:=1
        säljsignal:=1
        innehav=add(0,0)
        ihk=IF(AND(köpsignal,NOT(innehav)),1,0)
        ihs=IF(säljsignal,0,ihk)
        MULT(ihs,100)

        Detta borde funka dock om jag förstod det hela.

        Om programmet läser din Nordnet-depå hela dagen så den får in korrekta värden på ditt innehav från order du lägger från annan plats så kan du göra så här:

        köpsignal:=1
        säljsignal:=1
        innehav=Portfolio(v)
        ihk=IF(AND(köpsignal,NOT(innehav)),1,0)
        ihs=IF(säljsignal,0,ihk)
        MULT(ihs,100)

        eller för att inte slentrianmässigt förbruka minnesreferenser:

        köpsignal:=1
        säljsignal:=1
        ihk=IF(AND(köpsignal,NOT(Portfolio(v))),1,0)
        ihs=IF(säljsignal,0,ihk)
        MULT(ihs,100)


        eller

        köpsignal:=1
        säljsignal:=1
        ihs=IF(säljsignal,0,AND(köpsignal,NOT(Portfolio(v))))
        MULT(ihs,100)

        Det borde funka.

        Comment


        • #5
          Hej Lasse,
          Tack för ditt försök att hjälpa mej, tyvärr har vi nog
          missuppfattat varandra. Ska nedan med ett exempel
          vara lite tydligare med vad jag menar.

          Jag har funderat vidare, men kommit fram till att jag
          inte klarar av att lösa detta utan att införa någon
          hjälpvariabel, och det kan/får man väl inte göra ?

          Så som jag definierar problemet här kan det lösas på
          Torstens sätt ovan, men jag kan ha flera parallella script
          som ger resultat oberoende av varandra, så det sättet
          är inte aktuellt denna gången.

          ---------------------------------------

          { Enkelt script för köp }
          { Köpsignal när kursen passerar 300 underifrån }
          { Säljsignal när kursen passerar 295 uppifrån }

          { Resultatet av scriptet ska första gången ge "Köpråd", när "Köpsignal" är sann. }
          { För att ge nästa "Köpråd" måste dels "Köpsignal" vara sann, OCH "Säljsignal" någon }
          { gång varit sann sedan förra "Köpråd" var sann }

          {
          Kurs
          298
          301 Köpsignal och Köpråd
          299
          303 Köpsignal, inget Köpråd
          298
          293 Säljsignal
          303 Köpsignal och Köpråd
          }

          ----------------

          Köpgräns:=300
          Säljgräns:=295


          i5
          (
          Testvärde=ADD(C,0)
          Forraclose=LLV(Testvärde,2)
          Forraminlika=LE(Forraclose,Köpgräns)
          Dennaclose=HHV(Testvärde,1)
          Dennastörre=GT(Dennaclose,Köpgräns)
          Köpsignal=AND(Forraminlika,Dennastörre)

          Testvärde=ADD(C,0)
          Forraclose=HHV(Testvärde,2)
          Forrastölika=GE(Forraclose,Säljgräns)
          Dennaclose=LLV(Testvärde,1)
          Dennamindre=LT(Dennaclose,Säljgräns)
          Säljsignal=AND(Forrastölika,Dennamindre)

          { Här kommer mystisk kod :- }

          ....
          ....
          ....
          ....
          Köpråd=........

          MULT(Köpråd,100)
          )

          Comment


          • #6
            Det är viktigt att ha klart för sig hur det fungerar i en graf med script.

            Scriptet körs en gång för varje period från vänster till höger.

            Perspektivet ett script har är innevarande period och bakåt.

            Om det skulle vara en funktion som är användbar för de saker du nämner så är det TopBars().

            T.ex
            tittabakåt:=96
            köpsignal:= ditt köptscript här
            säljsignal:= ditt säljscript här

            {hur långt är det till senaste köp}
            buyat:=topbars(köpsignal,tittabakåt,1)

            {hur långt är det till senaste sälj}
            sellat:=topbars(säljsignal,tittabakåt,1)


            {hur långt är det till förrförra köp}
            buy2at:=topbars(köpsignal,tittabakåt,2)

            [Säljsignalen ligger mellan den två senaste köp]
            köpråd:=and(lt(sellat,buy2at),gt(sellat,buyat))

            Dessa funktioner för toppar bottnar fungerar alltså lika bra på logiska värden.

            Det typiska för en topp är ett högre värde en period än på omgivande sidor, och ETT omgivet av noll uppfyller detta.

            Det fina här är också att du kan ange en specifik topp bakåt med sista parametern. Kom bara ihåg att en skog att flaggor(signaler) utan falsk emellan är en enda topp. Värdet som returneras är dock till den första påträffade bakåt.

            Alla xxxBars()-funktioner returnerar noll för innevarande period, och 1 förgående period osv.

            Var god

            Comment


            • #7
              Strålande Lasse !

              Ja, nu är jag glad, det fungerar som
              jag har tänkt mej.

              Funktionen topbars löste ju alla problem.
              Hade missat att jag kunde använda
              variablerna Köpsignal och Säljsignal
              som dataserie/referens till andra funktioner.
              Man lär sig .....

              Dina sista hjälprader behövdes att
              modifieras något, har fler följt tråden är
              nedanstående det jag var ute efter :


              tittabakåt:=100

              ...
              ...

              { Här är den mystiska koden :- }

              buyat=topbars(Köpsignal,tittabakåt,0)
              buy2at=topbars(Köpsignal,tittabakåt,1)
              sellat=topbars(Säljsignal,tittabakåt,0)

              Köpråd=AND(LT(sellat,buy2at),Köpsignal)


              Hälsningar

              Kent

              Comment


              • #8
                Ändra bara till följande:
                buyat=topbars(Köpsignal,tittabakåt,1)
                buy2at=topbars(Köpsignal,tittabakåt,2)
                sellat=topbars(Säljsignal,tittabakåt,1)

                Du adresserar vilken topp i ordningen du vill få med sista parametern.

                Skulle du få träff precis i nuvarande period får du noll tillbaks.

                'tittabakåt' behöver du då ta till så det sträcker sig förbi två köptillfällen i 'buy2at'. Annars räcker det med ett tillfälle bakåt.

                95 perioder som jag skrev var ju bara exempel på en dags 5-minuters perioder, dvs funktionerna skulle söka bakåt en dag.

                Så öka på så det täcker in ditt verkliga fall i hur täta affärer du har.

                Comment


                • #9
                  Hej igen Lasse,

                  Mina datasatser nedan fungerar alldedes utmärkt :-)
                  Se bifogad bild.

                  buyat=topbars(Köpsignal,tittabakåt,0)
                  buy2at=topbars(Köpsignal,tittabakåt,1)
                  sellat=topbars(Säljsignal,tittabakåt,0)

                  Med Dina datasatser kommer "Köpråd" en
                  köpsignal försent ......


                  Ska man vara riktigt petig så är

                  Köpråd=AND(LE(sellat,buy2at),Köpsignal)

                  något bättre än

                  Köpråd=AND(LT(sellat,buy2at),Köpsignal)

                  om "tittabakåt" inte räcker till.

                  Själv har jag satt "tittabakåt" till ett värde lite
                  mindre än när jag får "stack overflow" när
                  syntaxen testas.

                  ( Testar man inte syntaxen först och har för stort
                  värde på "tittabakåt" kraschar programmet, men
                  vad gör väl det. Lite kan man ju tänka sig för :-) )


                  Vänliga hälsningar


                  Kent


                  PS. Tittade som hastigast på nyheterna i AT 6.0, det ser
                  lovande ut, och framför allt Lycka till med den nya versionen.

                  Comment


                  • #10
                    I min föregående kommentar tror jag mej
                    bifoga en bild, hur kan jag titta på hur
                    det blev ?

                    MVH.

                    Kent

                    Comment


                    • #11
                      Noll som sistnämnda parametern här är likadan funktion som 1. Parametervärde noll ökas internt alltid till ett.

                      Så buyat och buy2at gör exakt samma sak då.

                      Just i 'köpråd' används det inte, men bara så du vet.

                      Comment

                      Working...
                      X