Allmänt meddelande

Collapse
No announcement yet.

Flytande stoploss

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

  • #16
    OK va bra.

    Det jag vill göra är att köpa Bull och Bear instrument men analysera på index. Saken varför jag vill ha stoplossen på varje instrument är för att jag under lång tid har hittat en bra flytande stoplossgräns som passar mig. och den är svårare att få till på index:et.

    Skulle det vara möjligt att få in close kursen på bull och bear till trigger skriptet istället, så att man kan ha stoplossen i det stora skriptet?

    Finns det någon bra sträng på forumet som förklarar Cmpref() för det låter intressant och jag vill gärna lära mig.

    Går det att använda samma globala celler flera gånger:
    Exempel:

    Det startar från trigger skriptet
    köp:=xxx
    Köpindikator:=setGvarIf(1,100,köp)

    till köskript
    köper:=SetGvar(100)
    till stoploss
    köpentry:=SetGvar(100)
    Last edited by bombaybom; 2010-03-11, 12:28.

    Comment


    • #17
      Men i så fall kan du ju ta in kurserna från index direkt till scriptet som är kopplat till Bull resp Bear och göra analysen direkt. Stoppen kan också vara kopplad till Bull och Bear precis som vanligt.

      Exempel:

      index:=CmpRef(c,A,0)
      {här kommer ditt script med analys etc där "index" nu motsvarar Close eftersom det är den dataserien vi tar in med CmpRef()}
      köpvillkor1:=Gt(index,Aref(index,1))
      Mult(köpvillkor,10)

      {@A(5,OMX Stock )}


      Notera sista raden i scriptet som definierar vilket instrument som ska tas in som extra objekt, samt i vilken upplösning. I det här fallet är det OMXS30-index i 5 minuters upplösning. Det går att välja det enkelt via menyn Extra objekt i scriptdialogen.

      Comment


      • #18
        hej tack för exemplet

        nu när jag kör skriptet på simulering med ordermodellerna kommer dessa larma upp
        14:30 Segmentet har redan ignorerats och kan inte låsas.
        14:30 C:\Program\AutostockTrader\Data\SUB017\F00883.FI

        Är det det något jag borde vara orolig för innan jag använder det skarpt?

        Comment


        • #19
          Det tyder på databas-skada. Ofta räcker det med att starta om AT och vänta någon dag, men i värsta fall får man radera hela Data-katalogen, starta om AT så att en ny tom databas bildas och därefter hämta in kurser från Kundservice på nytt.

          Det är bra att ta backup på Data-katalogen med jämna mellanrum.

          Comment


          • #20
            Hej Rikard

            jag får inte signalerna att gå till mitt skript som ska köpa. kan du se om jag gjort för fel?

            Signalen från första skriptet går jätte bra, så det är något med de globala cellerna...

            värde1:=20
            LångtMV:=mov(C,värde1,s)
            korsar:=cross(c,långtMV)
            uppåt:=GT(c,långtMV)
            del1:=AND(korsar,uppåt)
            Skickaköp:=SetGvarIf(1,204,del1) ----> skickar till mitt köpt skript
            mult(del1,25)



            StockAmount:=Portfolio(v)
            nGlobBullBuy:=GetGVar(204) <----- tar emot singnalen
            nGlobBullSell:=GetGVar(205)
            BuySignal:=And(And(Eqv(StockAmount,0),Eqv(nGlobBullBuy,1)),Eqv(nGlobBullSell,0))
            Stoploss:=SetGvarIf(1,207,BuySignal)
            Mult(BuySignal,5)

            Comment


            • #21
              Hm, frågan är vad som nollställer signalen när det inte finns signal? Du behöver en SetGVarIf() som sätter en nolla i cellen när det inte finns signal. Annars blir det satt första gången, och därefter ligger "ettan" kvar.

              Comment


              • #22
                ok nu testade jag idag med det du sa, så jag har en 1 i cell 204 när det är köp och en 0 där när det är sälj

                men det fungerar fortfarande inte, förstår inte vad det är som är fel...

                StockAmount:=Portfolio(v)
                nGlobBullBuy:=GetGVar(204)
                BuySignal:=And(Eqv(StockAmount,0),Eqv(nGlobBullBuy,1))

                i1(
                Mult(BuySignal,5)
                )


                StockAmount:=Portfolio(v)
                nGlobBullSell:=GetGVar(204)
                SellSignal:=And(Gt(StockAmount,0),Eqv(nGlobBullSell,0))

                i1(
                Mult(SellSignal,5)
                )

                Comment


                • #23
                  Ursprungligen postat av bombaybom Visa inlägg
                  ok nu testade jag idag med det du sa, så jag har en 1 i cell 204 när det är köp och en 0 där när det är sälj

                  men det fungerar fortfarande inte, förstår inte vad det är som är fel...

                  StockAmount:=Portfolio(v)
                  nGlobBullBuy:=GetGVar(204)
                  BuySignal:=And(Eqv(StockAmount,0),Eqv(nGlobBullBuy,1))

                  i1(
                  Mult(BuySignal,5)
                  )


                  StockAmount:=Portfolio(v)
                  nGlobBullSell:=GetGVar(204)
                  SellSignal:=And(Gt(StockAmount,0),Eqv(nGlobBullSell,0))

                  i1(
                  Mult(SellSignal,5)
                  )

                  Kan inte se några fel i det här, så frågan är om du verkligen fått in värdet 1 i cellen, eller om det är något när du testar scripten som blir fel. De borde absolut larma.

                  Man får tänka på att om du har ett verkligt innehav när du testar köpsignalen så kommer köpscriptet inte att larma som det är skrivet eftersom villkoret med Stockamount inte blir sant. Men i så fall borde säljscriptet larma vid värde noll i cellen.

                  Comment


                  • #24
                    Hej

                    Nä, själv hittar jag inget fel, det är det som gör mig tokig...

                    Jag har inget av det värde pappret.

                    Spelar det någon roll om man har olika perioder på de olika skripten, så att de kan komma i otakt eller likande?


                    Går det att titta vad cell 204 har för värde och se om det ändras när det kommer en signal? och när det har kommit? Samt kan jag ändra det till ett annat värde för att ex se om jag kan börja om?




                    värde1:=20
                    LångtMV:=mov(C,värde1,s)
                    korsar:=cross(c,långtMV)
                    uppåt:=GT(c,långtMV)
                    del1:=AND(korsar,uppåt)
                    Skickaköp:=SetGvarIf(1,204,del1) ----> skickar till mitt köpt skript

                    mult(del1,25)


                    StockAmount:=Portfolio(v)
                    nGlobBullBuy:=GetGVar(204) <---- borde ta emot signalen
                    BuySignal:=And(Eqv(StockAmount,0),Eqv(nGlobBullBuy,1))

                    i1(
                    Mult(BuySignal,5) -----> med det här borde det väll bli ett streck i diagrammet samt en signal bland egna larm? (Larm Autobevakat ikryssat)
                    )
                    Last edited by bombaybom; 2010-03-16, 20:15.

                    Comment


                    • #25
                      Finns det möjligen något annat script som skickar något till cell 204, även på andra papper? Om det ligger kvar bortglömt men anslutet ställer det garanterat till problem. Du kan ju alltid börja om med en annan cell som du aldrig använt, så är det problemet lätt att konstatera.


                      Jag skulle nog lagt till en ändring som gör att kod 1 betyder köp, kod 2 betyder sälj och kod 0 betyder "ingen signal". Dessutom brukar jag alltid göra SetGVarIf() som minnesreferenser:

                      värde1:=20
                      LångtMV:=mov(C,värde1,s)
                      korsar:=cross(c,långtMV)
                      uppåt:=GT(c,långtMV)
                      del1:=AND(korsar,uppåt)
                      Nollställ=SetGVarIf(0,204,1) ----> Sätter alltid värdet till 0 först
                      Skickaköp=SetGvarIf(1,204,del1) ----> skickar till mitt köpt skript om signal finns

                      mult(del1,25)


                      StockAmount:=Portfolio(v)
                      nGlobBullBuy:=GetGVar(204) <---- borde ta emot signalen
                      BuySignal:=And(Eqv(StockAmount,0),Eqv(nGlobBullBuy,1))

                      i1(
                      Mult(BuySignal,5)
                      )


                      Comment


                      • #26
                        ok tack för hjälpen, ska försöka med det i morgon

                        Comment


                        • #27
                          Hej Rikard jag får det fortfarande inte att fungera.

                          jag testade och köpa manuellt och då visades sälj skriptet i fönstret att den ville sälja. Så felet måste finnas bland köp skriptet, kan det vara något med portföljen eller likande som spökar.

                          {Köp skript}
                          Nollställ=SetGVarIf(2,104,1)
                          klart:=när skriptet triggas blir det här en etta (vilket fungerar på diagrammet)
                          {Singnalskrpt till underliggande}
                          Skickaköp:=SetGvarIf(1,104,klart) ----> skickar till buybull
                          Skickaköp:=SetGvarIf(1,106,klart) ----> skickar till stoplossen att starta


                          i10(
                          mult(klart,25)
                          )

                          sl) BuyBull


                          StockAmount:=Portfolio(v)
                          nGlobBullBuy:=GetGVar(104)
                          BuySignal:=And(Eqv(StockAmount,0),Eqv(nGlobBullBuy,1))

                          i1(
                          Mult(BuySignal,5)
                          )

                          Det här skriptet visar inget på diagrammet och larmar aldrig....

                          Jag tror det skulle vara en fördel om man kunde se vilket värde det finns i en cell?

                          Hållit på i flera dagar nu men får det fortfarande inte att fungera..

                          Detta kom som felmeddelande, är det något som är dåligt
                          09:35 Fel vid öppning av Datafile2ListView fil C:\Program\AUTOST~1\ttrealt.log
                          09:35 Det går inte att hitta filen.
                          Last edited by bombaybom; 2010-03-17, 12:19.

                          Comment


                          • #28
                            Det finns ett litet fel i köpscriptet:

                            {Köp skript}
                            Nollställ=SetGVarIf(2,104,1)
                            klart:=när skriptet triggas blir det här en etta (vilket fungerar på diagrammet)
                            {Singnalskrpt till underliggande}
                            Skickaköp:=SetGvarIf(1,104,klart) ----> skickar till buybull
                            Skickaköp:=SetGvarIf(1,106,klart) ----> skickar till stoplossen att starta

                            Båda variablerna heter samma sak. Det går inte.

                            Nästa problem är att stoplossen inte får info om tidpunkten som det skickas nu. Men i verkligheten vid "livekörning" är det inget problem eftersom man kan använda LastTrade() och få ut både entrypris och tidpunkt. Då funkar stoppen perfekt.

                            Comment


                            • #29
                              Hej

                              nu fungerar det att skripten köper och säljer, äntligen. Det var lättare att använda flera olika globala celler än att ha samma fast med olika värden.

                              Nu försöker jag igen få till säljskriptet med din flytande stoploss. dock får jag den att ge ifrån sig signaler lite när den själv vill och inte när den ska.

                              Har försökt två saker antingen att den startar med en egen global cell

                              eller att jag har lackt den i skriptet på index
                              -Köpskript
                              -Stoploss

                              Men den vill inte sluta ge ifrån sig larm. även fast den ritar jätte snygga stop kurvor där man ser var den borde ge ifrån sig larm.

                              Köpskript

                              värde1:=20
                              LångtMV:=mov(C,värde1,s)
                              korsar:=cross(c,långtMV)
                              uppåt:=GT(c,långtMV)
                              köpentry:=AND(korsar,uppåt)

                              mult(köpentry,25)



                              { STOPLOSS }
                              flytnivå:=11
                              bakåt1:=480
                              lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
                              efterinköp=if(ge(d,getval(3)),h,0)
                              highlevelb=hhv(efterinköp,bakåt1)
                              stoppok=gt(getval(3),getval(4))
                              köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
                              stoppkurva=sub(highlevelb,flytnivå)
                              stoppsälj=and(stoppok,le(l,stoppkurva))
                              lasttrades=Retval(if(And(stoppsälj,gt(getval(3),getval(4))),D,Getval(4)),4)
                              draw(if(stoppok,stoppkurva,0),2,rqb)


                              (utan det här ritar den snyggt)
                              Nollställ:=SetGVarIf(0,605,1)
                              Skickasälj:=SetGvarIf(1,605,stoppsälj)

                              mult(stoppsälj,25)

                              Finns det något sett man kan göra det tydligare när den ska på och av:

                              Mitt mål är att jag ska ha en flytande stoploss som går igång när köpskriptet köper och sedan stänga positionen när Close kursen bryter flyt nivån

                              Comment


                              • #30
                                Aha! Jag ser ett fel, längst ner:

                                (utan det här ritar den snyggt)
                                Nollställ:=SetGVarIf(0,605,1)
                                Skickasälj:=SetGvarIf(1,605,stoppsälj)


                                Du har kolon med i definitionen, och det är inte tillåtet nedanför första minnesreferensen. Och hela flytstoppen är full med minnesreferenser, så om du tar bort kolon blir även dessa minnesreferenser och då fungerar scriptet lite bättre.

                                Comment

                                Working...
                                X