Allmänt meddelande

Collapse
No announcement yet.

Exit baserad på vinst och tid?

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

  • #46
    Det är väldigt vad det ekar i den här tråden.
    Allt vad som sagts idag har redan sagts tidigare längre upp.


    Larry, fungerar inte det jag tipsade om i inlägg #41?

    Comment


    • #47
      Man får lägga till lite saker i scriptet. Här får du lite grejor som du kan använda för både köp- och säljstoppar.

      lt1=LastTrade(B,D)
      lt2=LastTrade(S,D)
      minSedanKöp=mult(sub(date(),lt1),1440)
      minSedanSälj=mult(sub(date(),lt2),1440)

      köptid_ok=le(minSedanKöp,60)
      säljtid_ok=le(minSedansälj,60)

      cover1=gt(s,nivå)
      cover2=and(or(cover1,kors),köptid_ok)
      cover3=and(cover2,innehav)

      Comment


      • #48
        Ursprungligen postat av larry
        Hej, Vill utveckla min blank-stoploss som bygger på att när priset går över moving average så "säljer" den. Vill nu få den till att olika moving average stoploss aktiveras beroende på hur lång tid priset har hållt sig under
        Från vilken tidpunkt skall tidmätningen börja?
        Från den tidpunkt du blankade eller någon annan tidpunkt?

        Comment


        • #49
          Ursprungligen postat av LillWicke Visa inlägg
          Från vilken tidpunkt skall tidmätningen börja?
          Från den tidpunkt du blankade eller någon annan tidpunkt?
          Ifrån tidpunkten då kurserna har varit under.

          Comment


          • #50
            Du menar att tidmätningen skall starta från den tidpunkt som kursen skar respektive medelvärde ovanifrån?

            Comment


            • #51
              Ok, återkommer lite senare med en lösning.
              Här får man använda sig av ett gäng globala variabler för att hålla koll på tidpunkterna.
              Du vill förmodligen också kunna köra scripten live med diagramritning påslagen och även kunna simulera i bänken? Detta kräver i så fall lite speciell scriptning.

              Comment


              • #52
                Nja, jag skulle nog försöka lösa det utan globala celler. Find() och Topbars() löser det mesta. Det är ganska enkelt att få fram tidpunkten eller antal staplar sedan ett visst villkor uppfylldes senast osv.

                Comment


                • #53
                  Det räckte med LLV() och AREF():

                  procent:=0.20

                  minuter_innan_stäng:=10

                  stängning:=le(mult(1440,sub(market(c),frac(date()))),minuter_innan_stäng)

                  inköpspris:=lasttrade(s,p)
                  gräns:=add(1,div(procent,100))
                  nivå:=mult(inköpspris,gräns)
                  innehav:=lt(portfolio(v),0)


                  i1(
                  draw(nivå,2,dgqb)

                  { definiera medelvärde }

                  mv1=mov(c,200,s)
                  mv2=mov(c,80,s)
                  mv3=mov(c,40,s)
                  mv4=mov(c,20,s)
                  mv5=mov(c,10,s)

                  draw(mv1,2,bqb)
                  draw(mv2,3,dcqb)
                  draw(mv3,4,mqb)
                  draw(mv4,5,dgqb)
                  draw(mv5,6,rqb)

                  nedanför1=aref(lt(c,mv1),1)
                  nedanför2=aref(llv(lt(c,mv2),120),1)
                  nedanför3=aref(llv(lt(c,mv3),80),1)
                  nedanför4=aref(llv(lt(c,mv4),40),1)
                  nedanför5=aref(llv(lt(c,mv5),35),1)

                  stopp1=and(gt(c,mv1),nedanför1)
                  stopp2=and(gt(c,mv2),nedanför2)
                  stopp3=and(gt(c,mv3),nedanför3)
                  stopp4=and(gt(c,mv4),nedanför4)
                  stopp5=and(gt(c,mv5),nedanför5)

                  cover1=or(or(stopp1,or(stopp2,stopp3)),or(stopp4,stopp5))
                  cover2=and(cover1,innehav)


                  mult(cover2,10)
                  )

                  Comment


                  • #54
                    Ursprungligen postat av Rikard Nilsson Visa inlägg
                    Det räckte med LLV() och AREF():

                    )
                    Det var snabbt, tackar så mycket!. Hoppas det fungerar nu.
                    För att få till samma på uppåtskriptet, är det bara att ändra llv till hhv och gt till lt?
                    Last edited by larry; 2013-06-24, 21:52.

                    Comment


                    • #55
                      Nja, LLV behövs fortfarande till att testa hur länge kursen varit på "rätt" sida kurvorna.

                      Comment


                      • #56
                        larry,
                        Tänk på att den här lösningen som Rikard presenterat, fungerar endast om du kör i intraday-upplösningen en minut, dvs. i1(. Vill du prova att köra i någon annan upplösning fungerar inte scripten som tänkt i nuvarande form.

                        Comment


                        • #57
                          Din senaste fråga Larry har du i princip löst själv under förutsättning av att scripten körs i 1-minutsupplösning.

                          Du skriver:
                          rc1=roc(close,5)
                          rc_under1=lt(rc1,aref(rc1,5))

                          Comment


                          • #58
                            Hoppas ni har överseende med mina nybörjarfrågor.

                            Vill ta blankningsignal när lutningskoefficienten är fallande och har gått ner de senaste minuten/minuterna. Vill inte blanka då den är stigande. Hur går jag tillväga att scripta ihop något sådant?
                            LinReg(C,5,-1)

                            Comment


                            • #59
                              Ursprungligen postat av larry
                              Ah ok, saknades bara en parantes

                              Nedanför har jag räknat ut antal roc1 perioder som varit mer än 0,04, de senaste 20 minuterna.
                              Nu vill jag få att det måste ha varit färre än 7 stycken på 20 minuter de senaste 40 minuterna. Har försökt med rc_stark2=lt(aref(antalroc,7,40) men får det inte riktigt att fungera.

                              rocantal=hhv(aref(roc(close,1),1),1)
                              rc_under2=gt(rocantal,0.04)
                              antalroc=sum(rc_under2,20)
                              rc_stark2=lt(aref(antalroc,7,40)
                              Hej Larry,

                              Det var inte bara en parantes som saknades i ditt förra uttryck, det var någonting att jämföra med också.


                              Ser att du utelämnar parametrar i många funktioner och då blir det ju knas då funktionernas definitioner därmed inte följs.

                              Du får studera varje funktion noggrant i scriptmanualen så att varje funktion får de antal parametrar den ska ha. Ett tips när du felkollar är att du går inifrån och utåt i varje uttryck du skriver. Man bygger upp uttrycken som funktioner i funktionerna, om du fårstår vad jag menar. En länk till scriptmanualen har du säkert redan men lägger upp den här ändå för säkerhets skull.
                              http://www.autostock.se/NATscriptref/


                              För att återgå till din fråga:

                              Du har ju redan en definition på rc1
                              rc1=roc(close,5)

                              Att rc1 är större än 0.04 skiver man så här:
                              rc_över2=gt(rc1,0.04)

                              Om du vill summera det antal gånger som rc1 är över 0.04 de senaste 20 minuterna skriver du:
                              antalroc1=sum(rc_över2,20)

                              Men om du istället vill veta hur många gånger rc1 varit över 0.04 de senaste 40 minuterna skriver du:
                              antalroc2=sum(rc_över2,40)

                              Om du vill att dessa ska vara färre än 7 de senaste 40 minuterna skriver du:
                              rc_starkt2=lt(antalroc2,7)


                              Comment


                              • #60
                                Ursprungligen postat av larry Visa inlägg
                                Hoppas ni har överseende med mina nybörjarfrågor.

                                Vill ta blankningsignal när lutningskoefficienten är fallande och har gått ner de senaste minuten/minuterna. Vill inte blanka då den är stigande. Hur går jag tillväga att scripta ihop något sådant?
                                LinReg(C,5,-1)
                                Alla har vi varit nybörjare någon gång, så både nybörjarfrågor som lite mer avancerade frågor har alla sin plats på forumet.


                                Precis som du skriver definierar ju LinReg(), som du skrivit den, lutningskoefficienten på Linreg-kurvan som bildas av close på ett 5-minutersintervall (i ditt fall). Tycker du att LinReg(c,5)-kurvan ser bra ut för dina syften (du kanske vill ha ett längre eller kortare intervall än 5), kan du expreimentera ut ett lutningsvärde på denna som du tycker är lämplig. Därefter tar du det värdet som utgångspunkt som ett villkor att gå in.

                                Exempelvis:
                                lutning=LinReg(C,5,-1)
                                blanka_ok=lt(lutning,värde)

                                Comment

                                Working...
                                X