Allmänt meddelande

Collapse
No announcement yet.

Välja linje

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

  • Välja linje

    Rikard,
    jag försöker räkna ut differensen mellan 10 och 11 linjen, detta går ok
    enligt nedan.

    Steg 2 är att avgöra vilken stapel som är högst 10 eller 11 stapeln, ska detta göras med en IF eller AND?

    Tanken är om differens_kl10 är större än differens_kl11

    ska jag skicka in 2000 till high_kl11 och 10 till low_kl11

    och viceversa om differens_kl11 är större än differens_kl10,

    men jag får inte till det med AND eller IF, har du någon ide' hur man gör?




    {-- Räkna ut skillnaden mellan high och low -------------------------- }
    high_kl10:=GetGvar(403)
    low_kl10:=GetGvar(404)
    high_kl11:=GetGvar(405)
    low_kl11:=GetGvar(406)
    differens_kl10:=Sub(high_kl10,low_kl10)
    differens_kl11:=Sub(high_kl11,low_kl11)
    Last edited by jorgeng; 2009-02-09, 09:23.

  • #2
    Tanken är att lägga in en test om differens_kl10 är större än differens_kl11
    och då sätta test till 1 annars 100000 och sedan läsa av detta, men det fungerar inte.

    test:=IF(GT(differens_kl10,differens_kl11),1,100000)

    Om test är 1 ska high_kl11 få värde 2000 och low_kl11 få värde 10.

    Last edited by jorgeng; 2009-02-09, 09:56.

    Comment


    • #3
      Det här kollar nivåerna vid kl 10 och 11 och sista raden testar om diffen är högre på första stapeln än andra.
      Men vad ska hända i så fall menar du?

      Man kan ju ganska enkelt skjuta in ett värde i en cell om villkoret är uppfyllt, och ett annat värde ifall det inte är uppfyllt. SetGVarIf används i så fall.


      period1:=eqv(int(ref(d,1)),int(d))
      period2:=eqv(int(ref(d,2)),int(d))
      gräns10:=And(hhv(Not(period1),2),period1)
      gräns11:=And(hhv(Not(period2),2),period2)
      i60(
      hi10=Find(gräns10,10,Aref(h,1),1)
      lo10=Find(gräns10,10,Aref(l,1),1)
      hi11=Find(gräns11,10,Aref(h,1),1)
      lo11=Find(gräns11,10,Aref(l,1),1)
      diff10=Sub(hi10,lo10)
      diff11=Sub(hi11,lo11)
      test1=Gt(diff10,diff11)
      )

      Comment


      • #4
        Ursprungligen postat av Rikard Nilsson Visa inlägg
        Det här kollar nivåerna vid kl 10 och 11 och sista raden testar om diffen är högre på första stapeln än andra.
        Men vad ska hända i så fall menar du?

        Man kan ju ganska enkelt skjuta in ett värde i en cell om villkoret är uppfyllt, och ett annat värde ifall det inte är uppfyllt. SetGVarIf används i så fall.


        period1:=eqv(int(ref(d,1)),int(d))
        period2:=eqv(int(ref(d,2)),int(d))
        gräns10:=And(hhv(Not(period1),2),period1)
        gräns11:=And(hhv(Not(period2),2),period2)
        i60(
        hi10=Find(gräns10,10,Aref(h,1),1)
        lo10=Find(gräns10,10,Aref(l,1),1)
        hi11=Find(gräns11,10,Aref(h,1),1)
        lo11=Find(gräns11,10,Aref(l,1),1)
        diff10=Sub(hi10,lo10)
        diff11=Sub(hi11,lo11)
        test1=Gt(diff10,diff11)
        )
        Det som ska hända om kl.09 till 10-stapeln är STÖRRE än kl.10 till 11-stapeln
        är att low ska få värdet 10 på 11-stapeln och 2000 på high 11 staplen och vice versa.

        Jag har värdena redan i minnesceller i 4 andra script och refererar till dom här.

        Jag ska pröva ditt script med setgvarif.

        Comment


        • #5
          Så med andra ord ska alltså största stapeln avgöra entry-priset?

          Om du får en nollkurs precis vid öppningen då? Då blir ju den stapeln superstor och den andra stapeln triggar ingen signal.


          period1:=eqv(int(ref(d,1)),int(d))
          period2:=eqv(int(ref(d,2)),int(d))
          gräns10:=And(hhv(Not(period1),2),period1)
          gräns11:=And(hhv(Not(period2),2),period2)
          i60(
          hi10=Find(gräns10,10,Aref(h,1),1)
          lo10=Find(gräns10,10,Aref(l,1),1)
          hi11=Find(gräns11,10,Aref(h,1),1)
          lo11=Find(gräns11,10,Aref(l,1),1)
          diff10=Sub(hi10,lo10)
          diff11=Sub(hi11,lo11)
          test1=Gt(diff10,diff11)
          { Skriv värden till celler för första stapel om test1 är sant }
          SetGVarIf(hi10,30,1)
          SetGVarIf(2000,30,Not(test1))
          SetGVarIf(lo10,31,1)
          SetGVarIf(10,31,Not(test1))
          { Skriv värden till celler för andra stapel om test1 är falskt }
          SetGVarIf(hi11,32,1)
          SetGVarIf(2000,32,Not(test1))
          SetGVarIf(lo11,33,1)
          SetGVarIf(10,33,Not(test1))
          )

          Comment


          • #6
            Ursprungligen postat av Rikard Nilsson Visa inlägg
            Så med andra ord ska alltså största stapeln avgöra entry-priset?

            Om du får en nollkurs precis vid öppningen då? Då blir ju den stapeln superstor och den andra stapeln triggar ingen signal.


            period1:=eqv(int(ref(d,1)),int(d))
            period2:=eqv(int(ref(d,2)),int(d))
            gräns10:=And(hhv(Not(period1),2),period1)
            gräns11:=And(hhv(Not(period2),2),period2)
            i60(
            hi10=Find(gräns10,10,Aref(h,1),1)
            lo10=Find(gräns10,10,Aref(l,1),1)
            hi11=Find(gräns11,10,Aref(h,1),1)
            lo11=Find(gräns11,10,Aref(l,1),1)
            diff10=Sub(hi10,lo10)
            diff11=Sub(hi11,lo11)
            test1=Gt(diff10,diff11)
            { Skriv värden till celler för första stapel om test1 är sant }
            SetGVarIf(hi10,30,1)
            SetGVarIf(2000,30,Not(test1))
            SetGVarIf(lo10,31,1)
            SetGVarIf(10,31,Not(test1))
            { Skriv värden till celler för andra stapel om test1 är falskt }
            SetGVarIf(hi11,32,1)
            SetGVarIf(2000,32,Not(test1))
            SetGVarIf(lo11,33,1)
            SetGVarIf(10,33,Not(test1))
            )
            Tja, det problemet finns ju idag i Omx Wampa, inte så vanligt förekommande dock med nollkurs vid öppningen.

            Korrekt, största stapeln ska avgöra entry-priset.

            Dock skulle jag behöva ha scriptet med mätningar från mina celler

            high_kl10:=GetGvar(403)
            low_kl10:=GetGvar(404)
            high_kl11:=GetGvar(405)
            low_kl11:=GetGvar(406)

            då scriptet ska agera på dessa.

            Din kodning är snygg, men jag har redan värdena framtagna.

            Comment


            • #7
              Scriptet ska köras en gång kl.11, ej mer denna dagen, jag har tids-script sedan tidigare.

              Last edited by jorgeng; 2009-02-09, 21:39.

              Comment


              • #8
                Jag tog fram hi - lo för att slippa läsa av värden från celler där man sen ändrar värdena. Det eliminerar risken att man får någon typ av loop som bara står och spinner runt i evighet.

                Dessutom går det att backsimulera.

                Det är ju lätt att skicka tillbaka de nya värdena i cellerna när villkoren är uppfyllda så behöver man inte köra scriptet på någon speciell tidpunkt heller. Det stämmer hela tiden. Bara att kolla så att signalen genereras efter kl 10.

                Vet inte vilka cellnr du använder, men i exemplet tog jag 30-33, bara att ändra till dina vanlia nummer.

                Comment


                • #9
                  Så ditt script omvandlat med mina redan klara cell-värden blir så här?

                  high_kl10:=GetGvar(403)
                  low_kl10:=GetGvar(404)
                  high_kl11:=GetGvar(405)
                  low_kl11:=GetGvar(406)
                  i60(
                  differens_kl10=Sub(high_kl10,low_kl10)
                  differens_kl11=Sub(high_kl11,low_kl11)
                  test1=Gt(differens_kl10,differens_kl11)
                  { Skriv värden till celler för kl10-stapel om test1 är sant }
                  SetGVarIf(high_kl10,403,1)
                  SetGVarIf(2000,403,Not(test1))
                  SetGVarIf(low_kl10,404,1)
                  SetGVarIf(10,404,Not(test1))
                  { Skriv värden till celler för kl11-stapel om test1 är falskt }
                  SetGVarIf(high_kl11,405,1)
                  SetGVarIf(2000,405,Not(test1))
                  SetGVarIf(low_kl11,406,1)
                  SetGVarIf(10,406,Not(test1))
                  )


                  Om både kl10 och kl11 stapel är lika stora blir det problem, då måste jag välja någon av staplarna. Mitt val blir då att skicka 2000 och 10 till den stapel som just nu kl.11.00 när scriptet aktiveras och dagens 3:e 60min stapel skapas har sin close-kurs närmast nuvarande close-kurs.

                  Ex kl.9-10 staplen var 8,5 punkter stor, close-kurs 600.
                  kl.10-11-stapeln var 8,5 punkter stor, close-kurs 610
                  nuvarande kurs är 612

                  Värdena 2000 och 10 ska skickas till kl.10-11 stapeln som har close-kursen närmast nuvarande kurs.

                  Avancerad programmering, men det är nog bara i AT8 det går att lösa.

                  Hur kodar man detta?
                  Last edited by jorgeng; 2009-02-10, 08:16.

                  Comment


                  • #10
                    Rikard,
                    ovan modiferade script med cellerna i fungerar inte, inga linjer får nya värden, vad kan vara fel?

                    Comment


                    • #11
                      Du får en "loop" eftersom du använder samma celler för indata som utdata. Alltså, om stapel 1 är störst skrivs 2000 in för High och 10 för Low i stapel 2. Därmed är den helt plötsligt störst, och då skriver scriptet om så att stapel 1 får 2000 och 10 i värden. Så håller det på.

                      Det var just därför jag använde den andra koden för att ta fram hi/lo för att beräkna vilka värden som ska skickas till cellerna. Därefter kan övriga script läsa värdena och lägga order, rita etc. Klart enklaste lösningen.

                      Ett annat sätt är ju att använda en uppsättning celler för att lagra de ursprungliga värdena och en annan uppsättning för att lagra de "modifierade" värdena.

                      Comment


                      • #12
                        Ursprungligen postat av Rikard Nilsson Visa inlägg
                        Du får en "loop" eftersom du använder samma celler för indata som utdata. Alltså, om stapel 1 är störst skrivs 2000 in för High och 10 för Low i stapel 2. Därmed är den helt plötsligt störst, och då skriver scriptet om så att stapel 1 får 2000 och 10 i värden. Så håller det på.

                        Det var just därför jag använde den andra koden för att ta fram hi/lo för att beräkna vilka värden som ska skickas till cellerna. Därefter kan övriga script läsa värdena och lägga order, rita etc. Klart enklaste lösningen.

                        Ett annat sätt är ju att använda en uppsättning celler för att lagra de ursprungliga värdena och en annan uppsättning för att lagra de "modifierade" värdena.
                        Det borde vara så, men linjerna rör sig inte så något är logiskt fel.
                        Har du fått ditt script att fungera?

                        Jag ska pröva att flytta till nya unika celler.

                        Comment


                        • #13
                          Jag förenklade lite till och sparar värden i cell 30 och 31 endast. Värdet beror på villkoret som mäter vilken stapel som är högst. kl 10 sätts hi och lo, efter kl 11 testas om den stapeln är större, i så fall får cellerna värdena från den.

                          period1:=eqv(int(ref(d,1)),int(d))
                          period2:=eqv(int(ref(d,2)),int(d))
                          gräns10:=And(hhv(Not(period1),2),period1)
                          gräns11:=And(hhv(Not(period2),2),period2)
                          i60(
                          hi10=Find(gräns10,10,Aref(h,1),1)
                          lo10=Find(gräns10,10,Aref(l,1),1)
                          hi11=Find(gräns11,10,Aref(h,1),1)
                          lo11=Find(gräns11,10,Aref(l,1),1)
                          diff10=Sub(hi10,lo10)
                          diff11=Sub(hi11,lo11)
                          test1=Gt(diff10,diff11)
                          { Skriv värden till celler för första stapel om test1 är sant }
                          SetGVarIf(hi10,30,1)
                          SetGVarIf(hi11,30,Not(test1))
                          SetGVarIf(lo10,31,1)
                          SetGVarIf(lo11,31,Not(test1))

                          Draw(GetGVar(30),2,gqb)
                          Draw(GetGVar(31),3,rqb)
                          )
                          Attached Files

                          Comment


                          • #14
                            Vad var det Bruce Willis sa i Die Hard - Yippiyahh eeyyy keyy motherf---er,
                            det fungerade.

                            Hur jag gjorde:
                            De 4 vanliga scripten returnerar värden till cellerna 403, 404, 405, 406.

                            Koll-scriptet läser av 403, 404, 405, 406, gör beräkningarna och returnerar
                            de nya värdena giltiga eller 2000,10 till kl.10 eller 11-stapeln i nya celler
                            503, 504, 505, 506 som sedan läses av i de 4 vanliga scripten och gör draw.

                            Snyggt, tack för hjälpen Rikard.

                            Om du följer min webbplats kommer du se vad scripten ska användas till.

                            Last edited by jorgeng; 2009-02-11, 10:31.

                            Comment


                            • #15
                              Rikard,
                              har du något svar på det jag skrev tidigare?


                              "Om både kl10 och kl11 stapel är lika stora blir det problem, då måste jag välja någon av staplarna. Mitt val blir då att skicka 2000 och 10 till den stapel som just nu kl.11.00 när scriptet aktiveras och dagens 3:e 60min stapel skapas har sin close-kurs närmast nuvarande close-kurs.

                              Ex kl.9-10 staplen var 8,5 punkter stor, close-kurs 600.
                              kl.10-11-stapeln var 8,5 punkter stor, close-kurs 610
                              nuvarande kurs är 612

                              Värdena 2000 och 10 ska skickas till kl.10-11 stapeln som har close-kursen närmast nuvarande kurs."

                              Comment

                              Working...
                              X