Allmänt meddelande

Collapse
No announcement yet.

Problem med sekvenser

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

  • Problem med sekvenser

    Jag har en handelsmodell som består av fyra ordermodeller. I en av ordermodellerna, ”Entry lång”, har jag två sekvenser, den första gör beräkningar för att uppskatta styrkan i trenden, ett sk. trendfilter, och skriver sedan ett värde i en global variabel. I nästa sekvens ligger själva triggerscriptet som, om allt är sant, ger signal för entry lång. De tre andra ordermodellerna ligger alla med bara en sekvens vardera, Exit lång, Entry kort samt Exit kort.

    Entry lång-ordermodellen fungerade bra innan jag lade till sekvensen som räknar på trendstyrkan. Då jag lade till denna sekvens, innan Entry lång-sekvensen i ordermodellen, så utförs aldrig Entry lång-sekvensen. Beräkningen i den första sekvensen fungerar bra, men sekvens 2 ger aldrig signal. Sekvens 1 slutar med st) Stega till sekvens 2 och sekvens 2 slutar med st) Stega till sekvens 1.

    Vad gör jag för fel?

  • #2
    Har du sparat ordermodellen i sin helhet efter ändringen? Det vanligaste är att man gör en ändring i sekvensen men glömmer spara ordermodellen.

    Annars kan det ju vara något med triggerscriptet i sekvens 2, och då skulle man kunna prova med att sätta det skriptet till "alltid sant" för att se att en order triggas.

    Comment


    • #3
      Jag har sparat resp sekvens, sparat hela ordermodellen samt frigjort/återanslutit ordermodellen till instrumentet i orderläggningsfönstret.

      Beräkningarna i sekvens 1 avslutas med ADD(0,0). Jag provade att lägga in ADD(1,1) som sista rad i triggerscriptet i sekvens 2, men ändå ingen signal. Följaktligen så körs aldrig scriptet. Är det så att bara sekvens 1 körs och att ordermodellen sedan stängs av? Kopierade in en screenshot nedan...
      Attached Files
      Last edited by Christer; 2012-09-24, 15:27.

      Comment


      • #4
        Aha, men om triggerscriptet i sekvens 1 aldrig blir sant stegar modellen inte vidare till sekvens2. Det måste finnas ett triggerscript som blir sant för att det ska gå vidare.
        Jag skulle nog föreslå att du lägger in villkoren i trendfiltret direkt i triggerscriptet i sekvens 2 så att du kan ta bort hela sekvens 1.


        Comment


        • #5
          Jaha, det förklarar ju saken. Jag kände på mig att det var något elementärt fel i mitt scriptande!

          Var skulle du rent generellt rekommendera att jag lägger en beräkning som skriver till en global variabel (i mitt fall "Trendfilter"-beräkningen) och som senare används som parameter i triggerscripen, som sekvens i en ordermodell eller som ett script kopplat till instrumentdiagrammet?

          Comment


          • #6
            Christer, du skulle också kunna lägga ditt trendfilterscript som ett eget "parallellt" script, frikopplat från ordermodellen. Scriptet kan då också körsas i en annan upplösning om du vill, samtidigt som det kontinuerligt skickar signaler till triggerscriptet. Själv kör jag med flera sådana "kontrollscript" till mina modeller.

            Comment


            • #7
              Ursprungligen postat av LillWicke Visa inlägg
              ...som ett eget "parallellt" script, frikopplat från ordermodellen.
              Ursprungligen hade jag denna beräkning i ett separat script som låg och körde i ett diagram, ej kopplat till någon ordermodell annat än via en global variabel. Dock så fick jag falska signaler som troligtvis uppstod pga diagramritningen. LillWicke, skulle detta lösas med ditt "block_diag_skriv"-script som återfinns i nedanstående tråd?

              http://www.autostock.se/vbulletin/showthread.php?t=2779

              Comment


              • #8
                Genom att ansluta scriptet till diagrammet och välja bort visa diagram så körs scriptet endast då ny data kommer in. Det falaska signalerna borde då försvinna. Viktigt är dock att scriptet är larmbevakat för att köras utan att visas i diagrammet. Ska det aldrig bli signal kan skriptet tex avslutas med add(0,0).

                Comment


                • #9
                  Henric, scriptet i fråga ska aldrig ge signal, utan bara göra vissa beräkningar och sedan skriva 0 eller 1 i en global cell. Kan jag då köra scriptet enligt följande: 1) scriptet kopplat till ett diagram (istället för att ligga i en ordermodell), 2) Båda visa i Diagram, Dagskurser och Intraday, omarkerade i dialogfönstret Anslutna script, 3) Larmbevakat i dialogfönstret Anslutna script markerat (så att scriptet körs), samt 4) avsluta med ADD(0,0) eftersom ingen signal ska ges. Kommer detta fungera?

                  Comment


                  • #10
                    Jag kör på detta sätt. En fördel är att scriptet körs före ordermodellerna.
                    Se bara till att det inte blir orderskurar om srciptet ofta kan skifta mellan 0 och 1.
                    Det beror även på triggers i ordermodellerna.
                    Last edited by Henric; 2012-09-24, 21:36.

                    Comment


                    • #11
                      Använd gärna ett villkor enligt nedan för att isolera bort effekter av eventuell körning i samband med diagramritning:

                      Setgvarif(värde,200,eqv(cum(1),1))

                      Eftersom cum(1) ackumulerar värdet 1 för varje stapel i diagram kan man vara tämligen säker på att det rör sig om en live-situation om värdet bara är 1. Vid högre värden rör det sig om en diagramkörning och den skrivningen kan man därmed isolera bort.

                      Comment


                      • #12
                        Ursprungligen postat av Christer Visa inlägg
                        LillWicke, skulle detta lösas med ditt "block_diag_skriv"-script som återfinns i nedanstående tråd?

                        http://www.autostock.se/vbulletin/showthread.php?t=2779
                        Ja, antingen med den eller med Henrics metod, eller om du lyckas skriva om dina villkor på så sätt att du kan skriva en etta i villkorsdelen på setgvarif()

                        Comment


                        • #13
                          Ursprungligen postat av Rikard Nilsson Visa inlägg
                          Använd gärna ett villkor enligt nedan för att isolera bort effekter av eventuell körning i samband med diagramritning:

                          Setgvarif(värde,200,eqv(cum(1),1))

                          Hur tänker du nu Rikard? Var ska han skriva in sitt villkor någonstans?
                          Dessutom är din lösning sann för första stapeln under diagramkörningen, vilket ju ev. kan skapa problem i vissa situationer, detta har du också själv påpekat i en tidigare diskussion.

                          Comment


                          • #14
                            Villkoret läggs in i SetGVarIf()-satsen i scriptet som gör beräkningarna för trendfiltret. Har man bara någon eller ett par dagar uppe i diagrammet blir sannolikheten väldigt låg att oavsiktlig skrivning sker pga diagramritning.

                            Vill man vara helt säker kan man även testa att lägga dit kontroll av databastid och systemtid:

                            Setgvarif(värde,200,and(eqv(int(d),int(date()),eqv(cum(1),1))))


                            vilket bara tillåter skrivning av "värde" till cell 200 om det inte är en diagramkörning. Ser man till att ha minst 2 dagar uppe i diagrammet blir det här "foolproof" eftersom diagrammets första stapel hamnar minst "igår" eller längre tillbaka, och alltså aldrig kan vara sant samtidigt som testen med cum(1) utom om det verkligen rör sig om en live-situation där scriptet körs "nu".

                            Senaste programversionen som ligger ute inofficiellt nu har rättad hantering av databastid även för papper som inte har någon volym innevarande dag.

                            Comment


                            • #15
                              Ursprungligen postat av Rikard Nilsson Visa inlägg
                              Rikard skrev en massa saker i inlägg 14.

                              Men Rikard det var ju just detta Christer hänvisade till i inlägg #7

                              Comment

                              Working...
                              X