Allmänt meddelande

Collapse
No announcement yet.

Översättning av script

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

  • Översättning av script

    Hej!

    Jag försöker översätta ett script från tradingview för att få fram en linear regression channel. Hursomhelst får jag inte det att fungera. Kan det möjligtvis finnas någon här inne som har koll på logiken bakom denna kod och kan hjälpa mig?


    Länk: https://www.tradingview.com/script/N...on-Channel-V0/


    length = input(10)
    length2 = input(10)
    multiplier = input(0.01)
    h = ema(na(h[1]) ? high : high >= h[1] ? high : ema(close, length) >= mid[1] ? h[1] + ema(h[1]-close, length)*multiplier : h[1] - ema(h[1]-close, length)*multiplier, length2)
    l = ema(na(l[1]) ? low : low <= l[1] ? low : ema(close, length) <= mid[1] ? l[1] - ema(close-l[1], length)*multiplier : l[1] + ema(close-l[1], length)*multiplier, length2)
    mid = avg(h, l)
    plot(title='H', series=h, color=black, linewidth=2)
    plot(title='M', series=mid, color=black, linewidth=2)
    plot(title='L', series=l, color=black, linewidth=2)


    Tack på förhand!

  • #2
    Är inte riktigt med på hur syntaxen funkar med:

    h = ema(na(h[1]) ? high : high >= h[1] ? high : ema(close, length) >= mid[1] ? h[1] + ema(h[1]-close, length)*multiplier : h[1] - ema(h[1]-close, length)*multiplier, length2)


    Vad betyder tex ? som finns på flera ställen?

    Comment


    • #3
      Jag hade själv problem med denna kod främst av anledningen du nämner ovan.
      Hursomhelst kontaktade jag personen som skrev detta script och frågade hur logiken fungerade. Fick detta svar:

      In the case for h:
      ''this line is to fill null values, and initiate the sequence:
      "... na(h[1]) ? high : high >= h[1] ? high : ..."

      if the average close is higher or equal to the previous mid:
      ..."h[1] + ema(h[1]-close, length)*multiplier"...
      we apply a step(regression) towards the mid based on average difference and the custom multiplier, otherwise inverts the regression''

      Ska testa ikväll och om jag får det att fungera. Om jag lyckas postar jag scriptkoden här och hoppas det kan vara till hjälp för andra!

      Comment


      • #4
        Resultatet av koden som används i länken ovan resulterar i kodscriptet nedan. Idén bakom linear regression channels är att fastställa trenden. Personligen gillar jag denna då jag lyckas filtrera dåliga signaler inom mina egna strategier genom att gå lång då close är lägre än medellinjen(averageline i scriptet) samt att blanka (beroende på blankningssignaler) då close är över medellinjen.

        Hypotetiskt sätt skapas en blankningssignal då close är över den högsta linjen och en köp signal genereras då den undre linjen är under close. (Källa: https://commodity.com/technical-anal...n-reg-channel/). Lyckas dock inte få linjerna identiska till exemplet i orginalinlägget gällande strategin som används här: https://www.tradingview.com/script/N...on-Channel-V0/. Om någon har tips på hur jag kan förbättra scriptet nedan skulle jag uppskatta det enormt. Jag kommer även att testa att byta ut standard EMA som används i scriptet mot ett så kallat ''non lagging EMA'' alternativt en detrended price oscilator. Om dessa förbättrar scriptet kommer jag posta detta i denna tråd i hopp om att det är till nytta.


        Script:

        {medelvärde på close}
        EMAC=EMA(c,10)


        {kalkylerar H värdet ifrån orginal koden}
        lasthigh=aref(h,1)
        highminclose=SUB(lasthigh,c)
        EMA1=EMA(highminclose,10)
        MultEMA=MULT(EMA1,0.01)
        firstHvalue=ADD(lasthigh,MultEMA)
        secondHvalue=SUB(lasthigh,MultEMA)



        {kalkylerar L värdet ifrån orginal koden}
        lastlow=aref(l,1)
        closeminlow=SUB(c,lastlow)
        EMA2=EMA(closeminlow,10)
        GångerEMA=MULT(ema2,0.01)
        förstavärdetavL=SUB(lastlow,GångerEMA)
        andravärdetavL=add(lastlow,GångerEMA)



        {kalkylerar mid värdet ifrån orginal koden}
        MID1=ADD(firstHvalue,secondHvalue)
        MID2=ADD(förstavärdetavL,andravärdetavL)
        MID3=add(mid1,mid2)
        medelvärde=DIV(mid3,4)


        {If statement om firstHvalue eller secondLvalue skall användas}

        störreän=GE(EMAC,medelvärde)
        statement1=IF(störreän,firstHvalue,secondHvalue)


        {EMA av H}
        finalH=EMA(statement1,10)



        {If statement om förstavärdetavL eller andravärdetavL skall användas}

        mindreän=LE(EMAC,medelvärde)
        statement2=IF(mindreän,förstavärdetavL,andravärdetavL)



        {EMA av L}
        finalL=EMA(statement2,10)




        {midline}

        add1=add(finalH,finalL)
        averageline=DIV(add1,2)




        För att illustrera de tre linjerna använder jag mig av tre olika script där sista raden av kod är antingen: Final (översta linjen), FinalL (understa linjen) eller averageline (mittenlinjen). Visa i kursstaplar enligt kurser (inte som flagga).


        Som jag nämnde ovan, om ni upptäcker något fel i scriptet alternativt har förslag på förbättring uppskattas detta!

        Mvh
        Last edited by IsidorBehrens; 2018-12-22, 03:12. Anledning: Korrekt översättning av kod samt ytterliggare inputs

        Comment


        • #5
          Jag skulle använda ett scipt och tre olika draw. Sedan avsluta scriptet med and(0,0)

          Comment

          Working...
          X