Allmänt meddelande

Collapse
No announcement yet.

Intraday Stop-Loss

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

  • Intraday Stop-Loss

    Hej!

    Jag håller på med de första stapplande stegen med att få ett par trigger/signalscript att fungera.

    Just nu vill jag göra ett flytande Stop-Loss script i intraday, men har gått bet på uppgiften.

    Min tanke är att först hitta det högsta börsvärdet HITTILLS under dagen, och sedan larma när c går under mer än, säg, 2%.

    Såvitt jag förstår av handboken ger "h" det högsta värder bara under innevarande period.
    Hhv ger högsta värdet under ett definierat antal perioder bakåt.
    Men om jag vill veta högsta värdet under alla perioder från morgonstarten till nu, hur går det till?
    Eller ännu bättre, tror jag, högsta värdet från inköpstillfället (för daytrading) till nu? Går det att åstadkomma?

    Jag har inte hittat något användbart hittills.

    /Torbjörn

  • #2
    Kolla in denna sidan, det finns där:
    http://www.frndsw.com/stoploss.html

    Comment


    • #3
      Gomorron Torbjörn

      Scriptet jag sände dig igår kväll, löser det inte just denna frågeställning?

      Comment


      • #4
        Tack Lasse!

        Den här stop-loss-sidan har jag inte sett förut. Finns det fler intressanta sidor som inte kan nås via förstasidans menyer?

        I exemplen på den här stop-loss-sidan finns bl.a. funktionen LastTrade(B,P). Finns det någon detaljbeskrivning på den i stil med övriga programinstruktioner? Jag kan inte hitta någon någonstans, varken i Scriptgalleriet eller under programmets Help.

        Tidigare ställde jag en fråga om man kan tidsbestämma sig i antal perioder från börsens morgonstart resp. från senaste köptillfället. Eller hugger man bara till med en hög siffra även om den skulle sträcka sig in på dagen innan? Både LastTrade() och andra programinstruktioner vill ju ofta ha ett antal perioder att söka inom.

        /Torbjörn

        Comment


        • #5
          I ActiveTrader Hjälp ligger referens för scriptfunktioner som är speciella för AT.

          Den hjälpen ligger vid sidan om 'Börsmodul' och de andra genvägarna där du startar programmet.

          Just LastTrade() tar inga periodvärden.

          När de gäller de konstruktioner som bygger på att scanna säkert förbi inköpstillfället för att få t.ex högsta värdet efter inköp så uppskattar man ett värde som säkert räcker.

          Papper som är glest handlade kan skilja sig från de som garanterat handlas med sekundvis hela tiden.

          Och så vet man förmodligen vilket perspektiv man handlar på. Om tekniken man använder förmodas lösa ut inom 1-3 dagars perspektiv så behöver man ju inte scanna längre bak för att träffa på inköpstillfället.

          faktor:=0.98
          tittabakåt:=80
          lastbuy:=LastTrade(B,D)
          isafterbuy:=gt(d,lastbuy)
          data:=if(isafterbuy,h,0)
          highestafterbuy:=hhv(data,tittabakåt)
          stoplevel:=mult(highestafterbuy,faktor)
          i30(lt(l,stoplovel))

          'tittabakåt' behöver säkert gå förbi inköpstillfället räknat per 30-minuters perioder här. Här blir 80 5 dagar bakåt.

          OBS! att 30-minuters perioder betyder ingen degradering i snabbhet här. Man tittar hela tiden på HIGH-värdet för varje period. Och scriptet reagerar direkt om du så kör data flera gånger per minut.

          'data' får värdet av HIGH om vi är efter inköpstillfället. Annars får vi noll bara.

          'highestafterbuy' scannar bakåt och letar högsta värdet efter inköp. Så fort vi kommer förbi inköpstillfället får vi ju bara noll hela tiden i dataserien. Så resultatet blir att man får högsta sedan inköp.

          'stoplevel' bestämmer sedan här 2% under denna topp. Och går vi under denna säljs innehavet av. Så du bestämmer med 'faktor' hur mycket det får röra sig nedåt från toppen(högsta värdet) innan man går ur.

          Comment


          • #6
            Sista raden skall vara

            i30(lt(l,stoplevel))

            förståss.

            Comment


            • #7
              Hej!

              Idag har jag ägnat mig nästan uteslutande åt ett flytande stop-loss-script i intraday. Det ger en säljsignal 2% när low går under det högsta värdet sedan 8 timmar tillbaka. Jag vet inte vad man kan använda det till, men det har varit en nyttig övning att få det att fungera. Jag vet inte hur många minor jag gått på under tiden.

              Jag har också gjort ett liknande script, fast som ska ge en säljsignal när low går under det högsta värdet med mer än 2% sedan senaste köp. Det borde kunna vara användbart.

              Problemet med det senare scriptet är att jag inte får någon säljsignal över huvudtaget. I scriptet ingår funktionen LastTrade() som tar reda på när (datum och tid) det senaste köpet gjordes.

              Min fråga nu är hur LastTrade() fungerar. Om den bara reagerar på verkliga köp kan det ju bli knepigt att testa scriptet. Eller finns det något sätt att fingera ett köp på så det går att testa tillsammans med ett köpscript utan att det behöver kosta skjortan för felaktiga köp/sälj under tiden?

              /Torbjörn

              Comment


              • #8
                Jo, det är så att LastTrade() enbart ger besked om senaste verkliga transen på köp eller säljsidan.

                Så att backtesta med LastTrade går inte.

                Du får använda tekniken som antyds på sidan bakom länken tidigare om stoploss.

                Comment


                • #9
                  Vad händer när man kör ett i-day script?

                  * Jag antar att varje bevakat diagram vare sig de syns på skärmen eller inte scannas av av sitt/sina resp. script varje gång det blir en ny period.

                  * Jag antar också att en sådan scanning går till så att varje gång klockan säger att det är dags för en ny period så löper scriptet igenom alla perioder i diagrammet, från början till den senaste aktuella, och körs en gång för varje period.

                  * Varje variabel i scriptet sparas väl bara så länge som det exekveras för en viss period, och det går inte att spara något visst värde från en viss händelse under godtyckligt antal perioder för att användas under en annan period under dagen.

                  Det skulle vara intressant att få mina tre teser ovan bekräftade eller rättade för att öka min förståelse för script.

                  När jag nu sitter här och river mitt hår tycker jag att det skulle vara förträffligt att kunna spara något slags globala variabler och flaggor till ett senare tillfälle.

                  Bl.a. skulle det vara intressant att vid ett visst tillfälle kunna spara periodens löpnummer för dagen eller datum/tid för att vid senare genomscanningar kunna veta om man hunnit förbi läget eller inte.

                  /Torbjörn

                  Comment


                  • #10
                    1. Ja, det är riktigt. Det under bevakning körs alltid oavsett om det finns diagram framme på det eller inte.

                    Därför är intradayprefixen nödvändiga, för att tala om för kompilatorn av scriptet vilken upplösning dataserierna skall ha för att köra scriptet. Inget diagram krävs ju för att tala om detta.

                    2. Nej, inte riktigt. Det är i direkt samband med att man läst in ny kurs på varje papper man tittar efter ifall något är under bevakning typ script eller trendlinjer etc. Så körning av bevakade script körs varje ny kursinhämtning oavsett periodupplösning man anger.

                    3. Ja, det är riktigt. Varje script prepareras på nytt varje gång det körs. Globala variabler som lever hela tiden finns ej.

                    Comment


                    • #11
                      Aha...

                      Det kan alltså vara lämpligt att skilja på två olika slags perioder,
                      dels inhämtningsperioder som ökar på databasen, dels scriptperioder? Så jag vet vad vi pratar om.

                      Det är väl i så fall lämpligt att scriptperioder är >= inhämtningsperioder?

                      Om scriptperioderna < inhämtningsperioderna kommer scripten ofta att köras i onödan eftersom det då inte finns några nya data som kan förändra resultaten.

                      Rätt?

                      /Torbjörn

                      Comment


                      • #12
                        Nja..

                        Scripten körs ju aldrig i onödan, eftersom de alltid körs när nya kurser kommer bara. Det är den övergripande delen.

                        Men effekten av att ha scriptens period-upplösning högre än insamlingsintervallet( dvs mindre antal minuter i scriptperioder än insamlingsintervall) blir mest påtaglig när man backtestar med script i diagram.

                        För man fyller kanske på med minutkurser från kundservice för att få täta fina grafer, men resultatet blir helt annat i verkliga livet när man kanske tar in kurserna per 10:e minuter eller så.

                        Hämtar du var 10:e minut så får du aldrig tätare data även om scriptet är angivet för 1 minut. När scriptet backar till förgående period så ligger ju 10 minuter äldre data där. Så omfånget i kalendertid blir mycket större om man går 20 perioder bakåt och har hämtat per var 10:e minut(om scriptet har kortare minutperiod).

                        Om du skall titta på lutningen på kursen att den är högre nu är förgående period, så är ju skillnaden stor om verkliga data som ligger för förgående period är för 10 minuter sedan eller för 1 minut sedan.

                        Comment

                        Working...
                        X