Allmänt meddelande

Collapse
No announcement yet.

Identifiera konsolideringsområde

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

  • Identifiera konsolideringsområde

    Hej på er.

    Sitter och klurar på hur jag kan testa att mekaniskt upptäcka
    ett konsolideringsområde (congestion area). Anledningen är att jag vill
    använda nivån på området som ett potentiellt profit target.

    Vad tror ni om att använda ADX < 25 som en indikator för detta ?
    Uppskattad genomsnittlig tidsperiod jag håller en position är 21 dagar.

    Hittade i scriptreferensen directional movement index som mäter trendstyrka.
    Vad tror ni om denna idén nedan?
    Mitt första försök att scripta så all hjälp framåt uppskattas.

    adx:=MOV(DX(21),21,e)
    if(lt(adx,25),1,2)

    {Sekvens 1: Om sant, kontrollera genomsnittliga värdet i
    konsolideringsområdet och använd detta som profit target värde.}

    mperiod:=21
    konsolmedel:=MOV(C,mperiod,S)
    ptarget:=konsolmedel

    {Sekvens 2: Om falskt, gör inget.}

    Inte säker på hur man kan fånga upp sekvenser efter en if-sats, och få
    programmet att använda target-värdet som del av testfallet men det
    blir en senare fråga.

    Har sett att man kan bygga ordermodeller m.h.a. sekvenser så det är nog lösningen.

    /Robban
    Handelsstrategi

    Typ: Swing trading
    Marknad: Trendföljande
    Tidshorisont: 2 dagar och uppåt
    Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
    Indikatorer: Stochastics
    Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
    Monitorering: Automatisk med larm när köp, profit target och sälj skett
    Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

  • #2
    Låter som en plan, kan nog fungera om man hittar rätt gränser och parametrar. Ett litet exempel på möjlig väg är att använda ADX som du nämner och medan den är under 25 använder man nivåerna i diagrammet nedan på något sätt. Nivåerna beräknas med FREQ()-kommandot som den kursnivå där 70% av High resp Low förekommit de senaste 20 perioderna. Det Kanske kan gå att göra en kurva med C också och använda som target. Ytterligheterna skulle då kunna fungera som triggnivåer kanske.




    Freq(C,20,1000.7,H)


    Freq(C,20,1000.7,L)
    Attached Files

    Comment


    • #3
      Läste på mig om Freq. Vilken bra funktion.
      Får labba med procenten för frekvensen bara (och vara försiktig med att inte överoptimisera)
      Tack Rikard !

      /Robban
      Handelsstrategi

      Typ: Swing trading
      Marknad: Trendföljande
      Tidshorisont: 2 dagar och uppåt
      Entry: Baserad på candlestickformationer och bekräftad rörelse i ”min” riktning hos OMXSPI + instrumentet
      Indikatorer: Stochastics
      Profit targets: MA20/50/200, konsolideringsområden, trendlinjer, gap och Fibonaccinivåer
      Monitorering: Automatisk med larm när köp, profit target och sälj skett
      Exit: Baserat på candlestickformationer, initial stop, tidsstopp eller trailing stop baserat på 2*ATR(21)

      Comment


      • #4
        Jo den är kraftfull, och precis som du säger gäller det att undvika överoptimering. Finns ju flera bra sätt, optimera på ett dataavsnitt och verifiera på ett annat. En robust strategi fungerar ofta på flera olika index, och ju färre villkor man har desto mindre blir risken för överoptimering.

        Comment


        • #5
          Ursprungligen postat av shadowtwister Visa inlägg
          Hej på er.

          Sitter och klurar på hur jag kan testa att mekaniskt upptäcka
          ett konsolideringsområde (congestion area). Anledningen är att jag vill
          använda nivån på området som ett potentiellt profit target.

          /Robban
          A) Problemet med att hitta konsolideringsområden och volatilitet inom dessa löses lätt med de nya top- och bottenfunktionerna som ”snart” är här. Kan för mitt liv inte begripa vad det är som tar sådan tid, speciellt som det bara handlar om att ändra några villkor i de befintliga funktionerna. Jag har hållit på och tjatat om det här i över ett år nu.

          B) Ett annat enkelt sätt att lösa problemet är att använda AMA se bild 1. Koden för denna är som följer nedan. Jag har lagt in två IF-satser i beräkningen så att kurvan i starten kan komma in så snabbt som möjligt till sina rätta värden.

          Platta områden identifieras av att luntningen på AMA är låg. Man skall inte använda denna funktion som en trigger, utan den skall endast användas som en identifierare och skall köras i en högre timeframe än själva triggerscripten. När ett platt område är identifierat kan man använda det som en signal till scripten att köra triggermodellA när den trendar kör man triggermodellB. I bilden körs AMA i 30-min upplösning.

          OBSERVERA- denna funktion kan man idag än så länge bara leka med i diagramläget alltså EJ i skarpt läge eller i analysbänken. Även här är det en gåta varför denna funktion inte lagts till i scriptspråket. Jag är emellertid helt säker på att den ”snart” ligger där. Ni kan laborera med lite olika upplösningar och perioder så att ni är beredda på att köra när den väl är på plats.


          { AMA adaptive moving average }

          {Medelvärdets längd}
          period:=12

          direction:=sub(C,ref(C,period))
          diff:=abs(sub(C,ref(C,1)))
          volatility:=sum(diff,period)

          fast:=div(2,add(2,1))
          slow:=div(2,add(30,1))

          i30(
          ER=div(direction,volatility) { ;ER = efficiency ratio <-1; >+1) stark trend }
          smoothing=power(add(mult(ER,sub(fast,slow)),slow),2)
          AMA=const(add(mult(smoothing,sub(C,const(if(eqv(ama,0),C,ama)))),const(if(eqv(ama,0),C,ama))))

          draw(ama,2,bqb)
          mult(0,1)
          )

          C) Ett tredje sätt att hitta konsolideringar på är med trasslande medelvärden se bild2,
          dock inte lika effektivt som de två övriga. Här har jag använt mig av ma 28 och 80 i 15 min upplösning. Även här skall dessa köras i högre upplösning än triggerscriptet och även här skall man inte ha dessa som triggers utan endast som identifierare.

          Attached Files
          Last edited by LillWicke; 2013-11-09, 01:41.

          Comment


          • #6
            Provar din AMA på OMXS30 (visa i kursstaplar, skalning automatisk). Ser inte alls ut som det gör på din skärmdump... Får AMA bara värden mellan 0 och 1? Ser så ut när jag applicerar din kod rakt av på OMXS30 iaf.

            Ska jag ha andra inställningar för att få ut nåt vettigt ur koden eller hur ska man tolka det som ritas? ...Nä, jag har inte googlat AMA... än...

            Comment


            • #7
              Har du kopierat hela koden och tillverkat ett nytt sl)-script, tex. "sl) AMA" ?

              Detta script ansluter du sedan till OMXS30 och ser till att rutan "intraday" är markerad.
              Några speciella inställningar behöver du inte ha eftersom ritningen fixas helt av "draw" i scriptet.

              AMA antar de värden som visas i de bilder jag lagt upp, (alltså inte värden mellan 0 och 1).

              Comment


              • #8
                Tja... testar scriptet precis som det är (först som ett g-script och sen som ett sl-script) men tycker skalningen verkar skum. Ser bara linjen om jag har skalning automatisk, men kurvan ligger still om jag zoomar in/ut. Borde inte kurvan följa med och visa det faktiska värdet enligt skalan i index, dvs. ca 1300!? Vilket värde har punkterna på kurvan egentligen...?

                Har du provat att koppla scriptet till OMXS30?

                Comment


                • #9
                  Swedtraders,
                  Jag kan inte riktigt klura ut vad det är du gör. Skalningen sköts ju av scriptets i30(-upplösning samt av draw.
                  AMA just nu ser ut som på bilden nedan.
                  Attached Files

                  Comment


                  • #10
                    Jag kopierar in scriptet nedan och sparar som: "sl) AMA (Adaptive Moving Average)", kopplat mot OMXS30 (script anslutet, intraday, visa i kursstaplar, skalning automatisk). Väljer jag något annat än automatisk skalning så syns inte kurvan alls! ...Det ser då ut såhär:

                    Kör version 2.0.0.2
                    dll 10.0.0.3

                    ---

                    { AMA adaptive moving average }

                    {Medelvärdets längd}
                    period:=12

                    direction:=sub(C,ref(C,period))
                    diff:=abs(sub(C,ref(C,1)))
                    volatility:=sum(diff,period)

                    fast:=div(2,add(2,1))
                    slow:=div(2,add(30,1))

                    i30(
                    ER=div(direction,volatility) { ;ER = efficiency ratio <-1; >+1) stark trend }
                    smoothing=power(add(mult(ER,sub(fast,slow)),slow),2)
                    AMA=const(add(mult(smoothing,sub(C,const(if(eqv(ama,0),C,ama)))),const(if(eqv(ama,0),C,ama))))

                    draw(ama,2,bqb)
                    mult(0,1)
                    )
                    Attached Files

                    Comment


                    • #11
                      Ursprungligen postat av swedtraders Visa inlägg
                      Jag kopierar in scriptet nedan och sparar som:
                      "sl) AMA (Adaptive Moving Average)"

                      Kör version 2.0.0.2
                      dll 10.0.0.3
                      Aha, där har vi problemet, i version 2.0.0.2 fanns inte funktionen const()
                      Uppdatera till senaste versionen som nu är 2.1.2.10.

                      Tag också för säkerhets skull bort parenteserna runt Adaptiv.. i namnet eftersom ")" där är en aktiv komponent .

                      Comment


                      • #12
                        Vad skönt att det fanns en enkel och logisk förklaring! Ska pröva den senaste versionen när den fått "luftas" lite. Blir kanske i början av december med andra ord, om inte några buggar sett dagens ljus innan dess.

                        Menar du verkligen att parenteser i scriptnamnet kan ställa till problem?!? Jag har använt perenteser flitigt i namnen utan att märka nåt!! (Jag brukar ange datum inom parentes för att hålla koll på "versionen" av scriptet.) Kanske Rikard kan räta ut detta frågetecken!???

                        Comment


                        • #13
                          Ursprungligen postat av swedtraders Visa inlägg
                          Vad skönt att det fanns en enkel och logisk förklaring! Ska pröva den senaste versionen när den fått "luftas" lite. Blir kanske i början av december med andra ord, om inte några buggar sett dagens ljus innan dess.
                          Vaa? Ju tidigare version du har desto fler småbuggar får du dras med.
                          Programmet rättas ju kontinuerligt hela tiden med avseende detta, laddar du ner nu får du säkert en ännu senare version.
                          Skulle rekommendera dig att läsa changelogen från inlägg #24 och frammåt.
                          http://www.autostock.se/vbulletin/sh...?t=2449&page=2

                          Ursprungligen postat av swedtraders Visa inlägg
                          Menar du verkligen att parenteser i scriptnamnet kan ställa till problem?!? Jag har använt perenteser flitigt i namnen utan att märka nåt!! (Jag brukar ange datum inom parentes för att hålla koll på "versionen" av scriptet.) Kanske Rikard kan räta ut detta frågetecken!???
                          Som sagt jag är inte hundra på detta, utan det var bara en rekomendation eftersom parenteser i namnet av NAT verkar används till identifiering.

                          Last edited by LillWicke; 2013-11-24, 23:24.

                          Comment


                          • #14
                            Det brukar alltid finnas nya buggar i nya versioner av program. Många buggar rättas men det brukar alltid finnas någon kvar och ofta som sagt tillkomma nya buggar som inte funnits tidigare. Jag är lite försiktig bara och hoppar inte på Titanics jungfruresa utan väntar tills några resor visat sig gå bra...!

                            Comment


                            • #15
                              Swtrader,
                              Jag förstår precis hur du tänker (det brukar ju normalt fungera så).
                              Det är bara det att det här fortfarande är en Beta-verision och när du tänker dig att uppdatera borta i december har det förmodligen kommit till ytterligare några uppdateringar, och med ditt resonemang ska du då alltså vänta ytterligare en tid... osv, osv.

                              Comment

                              Working...
                              X