Allmänt meddelande

Collapse
No announcement yet.

Flaggor

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

  • Flaggor

    Detta är kanske mest en fråga till Lasse:

    Om man tittar på ett intradaydiagram (10 min upplösn), och har signal från ett script på olika ställen, hur ska man tolka tidpunkten i varje period? Alltså:

    1. En flagga betyder att scriptet löst ut nån gång under perioden, kanske bara under en enda minut i perioden, (tex 4:e eller nåt)

    2. En flagga betyder att det finns signal på sista minuten i perioden.

    3. Kan script lösa ut vid nåt tillfälle i perioden utan att flagga syns i efterhand?

    Jag filtrerar signalerna enligt nedan så att de bara släpps igenom i 9:e och 10:e minuten i varje period, detta för att alla medelvärden och riktningar på olika kurvor inte ska vara missvisande.
    Jag har dock tex 4 gröna streck på ett ställe, men det var först det 3:e som resulterade i larm. Jag förstår inte riktigt varför.

    tidnu:=frac(DATE())
    totalt:=Mult(tidnu,1440)
    rest:=mod(totalt,10)
    tidsignal:=GT(rest,8)
    Signal:=And(tidsignal, xxxxx)

  • #2
    1. Nej. Det skulle kräva någon slags animering av varje stapel.
    2. Ja.
    3. Ja, när man använder Close som parameter i några funktioner som ingår i scriptet.

    Delvis kan man åtgärda backtesting så den visar så nära verkligheten som det går.

    Om du skall testa att något är under en nivå använd inte Close utan använd Low.

    level:=
    Lt(L,level)

    Detta kommer alltid att visa korrekt i backtesting och online i verkliga fallet.

    Och tvärtom då att använda High när du skall testa om högre än en nivå.


    I scriptexemplet använder du Date() för att få systemtiden nu. Denna funkar ju inte för backtesting. Det är bara i verkliga online-fallet detta visar rätt.

    Men jag kanske missförstod och det var verkligt fall online du menade att du hade 4 signaler?

    Eller kollade du flaggor just i 9:e minuten?

    Det gäller för denna testen att du verkligen får in data varje minut, annars kan det falera.

    Ovanstående princip funkar också säkert endast om vald periodtid är jämnt delbar med 1440.

    Vill man ha det för sista minuten oavsett periodtid(ja 8:an får man redigera då):


    tidnu:=sub(frac(DATE()),frac(d))
    diffmin:=Mult(tidnu,1440)
    tidsignal:=Gt(diffmin,8)
    Sig1:=And(tidsignal,xxxxx)
    i10(sig1)

    Jag ändrade 'Signal' i namnet eftersom det skulle bli delnamn av 'tidsignal' annars. Det görs sök-ersätt från ':=' och i resten av scriptet.

    Denna princip funkar intraday bara.
    Per dagskurser ger konstanten D senaste kursdatatillfället hela tiden.

    Comment


    • #3
      Ok, då har jag lite mer kött på benen.
      Jag menade ett fall där jag har 4 streck tidigare på dagen som jag kan se nu, men det var först det 3:e som hade skickat en order. Det är antalsscripten jag syftar på.
      De skickar ju nollorder utom när det finns signal. Och jag använder samma script i grafen för att signalera, det funkar fint.

      Kurser får jag ju in varje minut, det är väldigt sällan det är nån felkod i larmfönstret.

      Jag har byggt min modell så att ett spinnande triggerscript löser ut den 9:e minuten i varje period, alltså tex kl 11:28, 11:38 osv..
      Nästa sekvens innehåller "Alltid sant" som trigger och mina antalsscript. Dessa exekveras alltså alltid sista minuten i varje period.
      Om det inte finns någon signal så postas nollorder, om det finns signal så skickas en riktig order.

      På kvällen kan jag ju se vilken tidpunkt order skickas i larmfönstret, men jag hade gröna streck från samma antalsscript 2 "varv" tidigare. Och det hade postats order i sista minuten precis som det var tänkt, fast tyvärr nollorder.

      Det är det som förbluffar mig, antalsscriptet visar tydlig signal i rätt minut, vilket ju är samma sak som ett antal större än noll, men likaväl hade nollorder postats....och jag har inga olika versioner av det scriptet.

      Å andra sidan håller jag på att bygga om till två parallella ordermodeller, så behöver jag inte spinna runt. Har det kvar som en extra kontroll dock om något skulle bli fel vid orderläggningen. Då spinner den berörda "modellhalvan" runt till början igen och känner vad som finns i depån.

      Det är riktigt roligt att kunna få modellen att "kolla sig själv" på det viset!

      Comment


      • #4
        Du kan få några tips på felsökningsmetoder.

        Med Retval(d,01234) kan du returnera data från scriptet till minnet.

        Dessa värden på de 5 minnsplastserna loggas också i trans-databasen. Dvs filen nntransl.log får dessa värden också som du kan syna i efterhand sista på varje rad i den filen.

        Då kan du stoppa dit lite värden du gärna vill kontrollera i efterhand från scriptet.


        Sedan tänkte jag som ett tips när man skriver för mer komplicerade ordermodeller kan detta också vara en trevlig feature.

        LastTrade(BS,VPD01234) betyder att du inifrån ett script kan hämta värden på vad dessa variabler hade för värden då transen bildades.

        LastTrade(B,2) tar fram värden för 3:e minnesplatsen av 0-4. Det är flyttas så du kan stoppa dit värden från D-konstant eller kurser hur du vill.

        Så kan du skicka info mellan scripten och de olika transarna i systemet.

        Detta ovan finns i version ActiveTrader 6.0.0.9 och senare.

        Så gör lite debuginfo du kan kolla på senare.

        Och kolla igenom scriptet att du inte har tilldelade namn som är delnamn av varandra(ungefär som jag ändrade ovan). Det är lätt att missa senare på samma rad kan delnamn finnas.

        Comment


        • #5
          Wow! Vilka tricks!
          Ska börja med att kolla det här med namn dock. Kan ju vara nån lurig grej gömd nånstans.

          Det är ganska långa script......

          Comment

          Working...
          X