Allmänt meddelande

Collapse
No announcement yet.

Script hjälp behövs för ordermodell

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

  • #31
    Hej Rikard

    Mycket bra svar med löpande förklaringar i texten.

    Här kommer lite nya frågor.
    1, Får inte scriptena att fungera med flaggorna, 20% höjd. Har jämför med andra script på forumet men kan inte se någon skillnad. Vad gör jag för fel?

    2, Fick ett köp script av dig. Gjorde om det andra till sälj. Är säljscriptet korrekt skrivet? Det blir grönt/rött i grafen och MACD kurvan skär där den skall.


    Köp script:
    inpådagen:=eqv(int(ref(d,3)),int(d))
    {Minutfilter}
    tidnu:=Frac(DATE())
    totalt:=Mult(tidnu,1440)
    rest:=Int(Mod(totalt,10))
    tidsignal:=Gt(rest,8)
    Köp:=Macd(b)
    signal:=And(tidsignal,köp)
    i10(Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}
    signal
    )
    mt1:=mult(sub(market(c),frac(d)),1440)
    mt2:=le(mt1,60)
    innehav:=Gt(Portfolio(v),0)
    sälj:=and(mt2,innehav)
    Mult(köp,10)



    Sälj script:
    inpådagen:=eqv(int(ref(d,3)),int(d))
    {Minutfilter}
    tidnu:=Frac(DATE())
    totalt:=Mult(tidnu,1440)
    rest:=Int(Mod(totalt,10))
    tidsignal:=Gt(rest,8)
    Sälj:=Macd(s)
    signal:=And(tidsignal,sälj)
    i10(Draw(Mult(sälj,20),2,rsbF) {röda flaggor 20% höjd i område kursstaplar}
    signal
    )
    mt1:=mult(sub(market(c),frac(d)),1440)
    mt2:=le(mt1,60)
    innehav:=Gt(Portfolio(v),0)
    Köp:=and(mt2,innehav)
    Mult(sälj,10)

    Nytt ämne *****************

    3, Vi har en funktion i ordermodellen "snabbvändning:=0 {1=JA 0=NEJ}"
    i en tidigare diskussion här på forumet. Om vi antar vi har en köpt position.
    1=JA. Sälj script säljer av innevarande köp och klipper till direkt på en blankning.

    0=Sälj script= Script som säljer av ett köp. Men väntar tills vi har någon mer signal från en annan modell innan någon ny position tages.

    Frågan blir då, är det med flera modeller inblandade som vi behöver ha script för blankning? Borde vara så eller är jag helt ute och snurrar.

    Mvh Magnus

    Comment


    • #32
      Hej Rikard

      Lite info om vad som hänt på morgonen. Jag har fått 3 st säljsignaler i egna larm. 09.02, 09.28, 10.16. MACD grafen låg redan i sälj. Det blev inte mer röda signaler än den som kom igår. Ditt script borde väl ha spärrat det? Kan ju vara så att jag har klantat mig när jag gjorde om scriptet. Köp till sälj igår kväll. Jag har kört på 10 min inställning.

      Jag hade också raden, inpådagen:=eqv(int(ref(d,10)),int(d)) i scriptet. Borde inte denna rad spärra dessa affärer?

      Kan också tillägga att mina ordermodeller inte varit anslutna sedan jag gjorde om scripten.

      Hej Igen 14.00

      Något är fel. Signaler fladdrar, finns/finns inte. Gäller sälj vad jag sett. Det har blivit en köp idag men den kom inte med i egna larm.

      Mvh Magnus
      Last edited by magjson; 2009-09-24, 14:31. Anledning: Nya saker efter 14.00

      Comment


      • #33
        Hej!

        Det är fel i scripten, jag tror du kanske missuppfattade det här med exit-signalerna. Det är alltså 4 separata triggerscript, men du har klistrat ihop den till två.

        Om vi tar köpscriptet först:

        Köp script:
        inpådagen:=eqv(int(ref(d,3)),int(d))
        {Minutfilter}
        tidnu:=Frac(DATE())
        totalt:=Mult(tidnu,1440)
        rest:=Int(Mod(totalt,10))
        tidsignal:=Gt(rest,8)
        Köp:=Macd(b)
        signal:=And(tidsignal,köp)
        i10(
        Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}
        signal
        )




        Nedanstående är triggerscript för exit 1 timme innan börsstängning. Det läggs i en egen ordermodell med egna antals- och prisscript.


        mt1:=mult(sub(market(c),frac(d)),1440)
        mt2:=le(mt1,60)
        innehav:=Gt(Portfolio(v),0)
        sälj:=and(mt2,innehav)
        Mult(köp,10)



        Om du kanske vill spärra köpsignal när det är mindre än 1 timme kvar till stängning kan man lägga in tidsspärren även i köpscriptet:

        inpådagen:=eqv(int(ref(d,3)),int(d))
        {Minutfilter}
        tidnu:=Frac(DATE())
        totalt:=Mult(tidnu,1440)
        rest:=Int(Mod(totalt,10))
        tidsignal:=Gt(rest,8)
        Köp:=Macd(b)
        mt1:=mult(sub(market(c),frac(d)),1440)
        öppet:=ge(mt1,60)
        signal:=And(And(tidsignal,köp),öppet)
        i10(
        Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}
        signal
        )


        Här testas om villkoren "tidsignal" , "köp" och "öppet" är sanna samtidigt, i så fall betyder det signal.

        "öppet" är sant så länge det är minst 60 minuter kvar till stängning.

        Comment


        • #34
          Hej Rikard

          Inte konstig att det inte fungerade. Förstod inte att det skulle infogas tillsammans med order modellen.

          Nedanstående är triggerscript för exit 1 timme innan börsstängning. Det läggs i en egen ordermodell med egna antals- och prisscript.


          mt1:=mult(sub(market(c),frac(d)),1440)
          mt2:=le(mt1,60)
          innehav:=Gt(Portfolio(v),0)
          sälj:=and(mt2,innehav)
          Mult(köp,10)

          Dessa kodade rader ovan skall finnas i order scriptet för både köp och blankning om jag nu fattat det rätt.

          Köp scriptet får jag göra om till ett sälj script.

          Tur att det är en kursdag bestämt nu. Den kommer att vara välbehövlig.

          Mvh Magnus

          Comment


          • #35
            Exit-scriptet är inte samma för att stänga köp och blankning. Innehavet mäts som antingen högre eller lägre än "noll" och då blir scripten olika:

            Stänga köp:

            mt1:=mult(sub(market(c),frac(d)),1440)
            mt2:=le(mt1,60)
            innehav:=Gt(Portfolio(v),0)
            sälj:=and(mt2,innehav)
            Mult(sälj,10)



            Stänga blankning:

            mt1:=mult(sub(market(c),frac(d)),1440)
            mt2:=le(mt1,60)
            innehav:=Lt(Portfolio(v),0)
            köp:=and(mt2,innehav)
            Mult(köp,10)



            Notera skillnaden på raden "innehav".

            Jo det är kul att kurserna är bokade nu. Kommer ni på kvällskursen eller heldagen?

            Comment


            • #36
              Hej

              Tack för kompletterande info. Det var behövligt annars hade det blivit fel igen. Provar och återkommer.

              Självklart skall vi göra allt för att komma till Stockholm. Det skall bli riktigt kul att träffa personer med samma intresse.

              Magnus

              Comment


              • #37
                Hej Rikard

                Du behöver sprida lite visdom över mitt problem ännu en gång. Det fungerar med sl scripten för köp och sälj. Tillhörande VA script fungerar också.

                Men det som inte fungerar är dina script "Stänga köp och Stänga blankning. Vi vet inte var de skall placeras. I en egen ordermodell (loopas detta till första ordermodellen) eller som 2 st sekvenser i befintligt ordermodell.


                Köp script

                inpådagen:=eqv(int(ref(d,3)),int(d))
                {Minutfilter}
                tidnu:=Frac(DATE())
                totalt:=Mult(tidnu,1440)
                rest:=Int(Mod(totalt,10))
                tidsignal:=Gt(rest,8)
                Köp:=Macd(b)
                mt1:=mult(sub(market(c),frac(d)),1440)
                öppet:=ge(mt1,30)
                signal:=And(And(tidsignal,köp),öppet)
                i10(
                Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}
                signal
                )

                Sälj script

                inpådagen:=eqv(int(ref(d,3)),int(d))
                {Minutfilter}
                tidnu:=Frac(DATE())
                totalt:=Mult(tidnu,1440)
                rest:=Int(Mod(totalt,10))
                tidsignal:=Gt(rest,8)
                Sälj:=Macd(s)
                mt1:=mult(sub(market(c),frac(d)),1440)
                öppet:=ge(mt1,30)
                signal:=And(And(tidsignal,Sälj),öppet)
                i10(
                Draw(Mult(Sälj,20),3,rsbF) {röda flaggor 20% höjd i område kursstaplar}
                signal
                )

                Va script Köp


                köpantal:=2
                snabbvändning:=0 {1=JA 0=NEJ}
                innehav:=Portfolio(v)
                nollställ:=And(Lt(innehav,0),Eqv(snabbvändning,0))
                i1(
                målantal=If(nollställ,0,köpantal)
                övermål=Ge(innehav,målantal)
                slutantal1=If(övermål,0,SUB(målantal,innehav))
                slutantal1)

                Va script Sälj



                blankantal=-2 {OBS minustecken framför}
                snabbvändning:=0 {1=JA 0=NEJ}
                innehav:=Portfolio(v)
                nollställ:=And(Gt(innehav,0),Eqv(snabbvändning,0))
                i1(
                målantal=If(nollställ,0,blankantal)
                undermål=Le(innehav,målantal)
                slutantal1=Abs(If(undermål,0,Sub(målantal,innehav)))
                slutantal1)

                Var lägger dessa script, det är det som är frågan.

                Stänga köp:

                mt1:=mult(sub(market(c),frac(d)),1440)
                mt2:=le(mt1,60)
                innehav:=Gt(Portfolio(v),0)
                sälj:=and(mt2,innehav)
                Mult(sälj,10)



                Stänga blankning:

                mt1:=mult(sub(market(c),frac(d)),1440)
                mt2:=le(mt1,60)
                innehav:=Lt(Portfolio(v),0)
                köp:=and(mt2,innehav)
                Mult(köp,10)

                Tacksam för ett pedagogiskt svar beskrivet steg för steg. Vi har kämpat med detta i 2 dagar och följt det i realtid. Vi har således INTE gett upp.

                Magnus

                Comment


                • #38
                  Ni är nära nu!

                  Tanken med Stäng-scripten är att de ska placeras i varsin egen ordermodell, som i sin tur ansluts parallellt med övriga ordermodeller. Då blir det alltså möjligt att välja om man vill ha stängning varje dag eller ej. Vill man inte det kopplar man bara bort dessa två nya ordermodeller.

                  De byggs på samma sätt som de andra modellerna, en sekvens som är loopad till sig själv. Antalscript är:

                  ABS(Portfoliov(v))

                  som gör att ordern fylls med det antal som finns på depån just nu, köpt eller blankat tack vare ABS()-funktionen.


                  Comment


                  • #39
                    Hej Rikard

                    Signalen kommer i orderkön så nu funkar det. Men vi har problem med att programmet larmar för FBINET.EXE varje gång det kommer en köp eller säljsignal. Då måste det startas om. Spelar ingen roll om vi kör på 15s eller 1min uppdatering. Vi kör i klienten. se skärmdump

                    Vid blankning så blir antalet noll när vi kontrollerar ordern. Köpordern visar 2 st så den funkar.

                    Gröna och Röda staplar blir över hela skärmen. De nedre 20 % blir tjockare. Förut försvann de "långa" strecken försvann. Ingen som är skitviktig i förhållande till det andra.



                    Förslag: skall vi använda logmein funktionen?

                    blankantal=-2 {OBS minustecken framför}
                    snabbvändning:=0 {1=JA 0=NEJ}
                    innehav:=Portfolio(v)
                    nollställ:=And(Gt(innehav,0),Eqv(snabbvändning,0))
                    i1(
                    målantal=If(nollställ,0,blankantal)
                    undermål=Le(innehav,målantal)
                    slutantal1=Abs(If(undermål,0,Sub(målantal,innehav)))
                    slutantal1)

                    Magnus
                    Attached Files

                    Comment


                    • #40
                      Om ni får krasch i samband med larm skulle jag misstänka något med E-larmet. Prova att stänga av det (om det är aktivt alltså) under Inställningar > Inställningar GSM-larm > GSM-larm aktivt

                      Man kan också kolla värdena under Inställningar > Preferenser > Övrigt >

                      Max anrop = sätt 3000 här
                      Max datastack = sätt 100 000 här

                      Prova med det så får vi se om det slutar krascha.

                      Comment


                      • #41
                        Ok Vi provar i morgon bitti.

                        Magnus

                        Comment


                        • #42
                          Ursprungligen postat av Rikard Nilsson Visa inlägg
                          Om ni får krasch i samband med larm skulle jag misstänka något med E-larmet. Prova att stänga av det (om det är aktivt alltså) under Inställningar > Inställningar GSM-larm > GSM-larm aktivt

                          Man kan också kolla värdena under Inställningar > Preferenser > Övrigt >

                          Max anrop = sätt 3000 här
                          Max datastack = sätt 100 000 här

                          Prova med det så får vi se om det slutar krascha.

                          Rikard,
                          som du vet kraschar min at8 också någon gång per dag,
                          Hos mig stod det 8000 resp 80000.

                          Vad betyder värdena?
                          Max anrop till vad?

                          Har Lars Fossum lämnat någon dokumentation vad värdena betyder?

                          Jag har ändrat till 3000 resp 100.000 får se om det hjälper, kör också email-larm.

                          Comment


                          • #43
                            Som jag skrev på ditt forum tror jag så gissar jag att dina krascher beror på kombinationen av för långa scriptnamn ihop med e-larmet. Provade du att korta ner namnen radikalt?

                            Värdena för Max anrop och Datastack används av AT för att reservera minne för scriptkompilatorn. En del script kan sluka en hel del minne om man tex använder referenser många perioder bakåt osv. Då kan det vara nödvändigt att skruva upp värdena. Vi har redan gjort det i installationerna jämfört med tidigare, men det kanske inte alltid räcker ändå.

                            Jag tror iofs inte att det är felet i just det här fallet, scripten är ju ganska korta ändå. Det skulle kunna vara någon databas-skada som märks först när scripten larmar, tex MESS.DBF eller nåt sånt. I så fall får vi prova att byta ut den mot en tom databas.

                            Comment


                            • #44
                              Hej Rikard

                              Vi pratade om att jag kan få en signal exv. köpsignal som håller sig till sista minuten, skicka ordern men att signalen går tillbaka om index sjunker kraftigt.

                              För att lösa problemet så kan jag använda funktionen Cross. Kommer signalen då i början av nästa stapel? Har gjort om scriptet. Är det rätt? Testa syntax stämmer och det ser rätt ut i diagrammet men var snäll och kolla så allt är ok.

                              Gammalt script

                              {Minutfilter}
                              tidnu:=Frac(DATE())
                              totalt:=Mult(tidnu,1440)
                              rest:=Int(Mod(totalt,6))
                              tidsignal:=Gt(rest,4)
                              Köp:=Macd(b)
                              innehav:=Le(Portfolio(v),0)

                              i6(
                              Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}

                              And(And(innehav,tidsignal),köp)
                              )

                              Nytt script
                              Köp:=Macd(b)
                              innehav:=Le(Portfolio(v),0)

                              i6(
                              Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}

                              And(And(Cross(innehav,),köp))
                              )

                              Magnus

                              Comment


                              • #45
                                Nja, Cross-funktionen kollar om korsning sker "just nu", men det är samma sak även här att signal kan uppkomma någonstans i en period för att försvinna nästa insamling.

                                Ett effektivt sätt att spärra bort sånt är att kolla om signal fanns i förra perioden, så vet man att man bara agerar på det som verkligen blev noterat som slutgiltigt resultat för förra perioden:

                                Hhv(signal,2)

                                kollar om signal varit sant någon gång senaste två perioderna, alltså innevarande och nuvarande. Det kan användas för att kolla om slutet på förra stapeln verkligen genererade en signal. Men, vi måste spärra bort innevarande stapels signal eftersom om den är sann betyder det ju inte att det var sant även förra stapeln. När man använder MACD finns ju den slutgiltiga korsningen bara i en period, och om det var förra kan vi alltså säga att den inte får finnas i nuvarande stapel också:

                                And(Hhv(signal,2),Not(signal))

                                Det här kollar så att det fanns signal i slutet av förra stapeln men inte i nuvarande. Då blir det sant och du får larm. Det kan ske i första insamlingen efter förra periodens slut tex.


                                Nytt script


                                Köp:=Macd(b)
                                innehav:=Le(Portfolio(v),0)

                                i6(
                                signal=And(Hhv(köp,2),Not(köp))
                                Draw(Mult(köp,20),2,gsbF) {gröna flaggor 20% höjd i område kursstaplar}
                                signal
                                )

                                Comment

                                Working...
                                X