diff --git a/strategy/volatility/testdata/super_trend_strategy.csv b/strategy/volatility/testdata/super_trend_strategy.csv index 3e4ed9a1..3fe773a9 100644 --- a/strategy/volatility/testdata/super_trend_strategy.csv +++ b/strategy/volatility/testdata/super_trend_strategy.csv @@ -21,18 +21,6 @@ Action 1 1 1 --1 -1 --1 -1 --1 --1 -1 -1 -1 -1 --1 --1 1 1 1 @@ -45,19 +33,35 @@ Action 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 1 1 1 @@ -78,16 +82,11 @@ Action -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +-1 -1 1 1 @@ -98,9 +97,10 @@ Action 1 1 1 --1 1 --1 +1 +1 +1 1 1 1 @@ -112,12 +112,13 @@ Action -1 -1 -1 -1 -1 -1 -1 -1 -1 +-1 +-1 +-1 +-1 +-1 -1 -1 -1 @@ -133,16 +134,12 @@ Action 1 1 1 --1 1 1 1 1 1 1 --1 --1 --1 1 1 1 @@ -152,8 +149,6 @@ Action 1 1 1 --1 --1 1 1 1 @@ -166,9 +161,7 @@ Action 1 1 1 --1 1 --1 1 1 1 @@ -178,12 +171,20 @@ Action 1 1 1 --1 1 --1 1 --1 1 +1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 -1 1 1 @@ -228,6 +229,11 @@ Action -1 -1 -1 +-1 +-1 +1 +1 +1 1 1 1 @@ -239,14 +245,8 @@ Action 1 1 1 --1 1 --1 1 --1 1 --1 1 --1 1 --1 diff --git a/trend/README.md b/trend/README.md index 74d02987..0644d3e0 100644 --- a/trend/README.md +++ b/trend/README.md @@ -2051,16 +2051,16 @@ func NewWmaWith[T helper.Number](period int) *Wma[T] NewWmaWith function initializes a new WMA instance with the given parameters. -### func \(\*Wma\[T\]\) [Compute]() +### func \(\*Wma\[T\]\) [Compute]() ```go func (w *Wma[T]) Compute(values <-chan T) <-chan T ``` -Compute function takes a channel of numbers and computes the WMA and the signal line. +Compute computes the WMA over the input stream. -### func \(\*Wma\[T\]\) [IdlePeriod]() +### func \(\*Wma\[T\]\) [IdlePeriod]() ```go func (w *Wma[T]) IdlePeriod() int @@ -2069,7 +2069,7 @@ func (w *Wma[T]) IdlePeriod() int IdlePeriod is the initial period that WMA won't yield any results. -### func \(\*Wma\[T\]\) [String]() +### func \(\*Wma\[T\]\) [String]() ```go func (w *Wma[T]) String() string diff --git a/trend/testdata/hma.csv b/trend/testdata/hma.csv index d20c8d0f..dc0b2bd3 100644 --- a/trend/testdata/hma.csv +++ b/trend/testdata/hma.csv @@ -2,251 +2,251 @@ Close,Hma 318.600006,0 315.839996,0 316.149994,0 -310.570007,117.07 -307.779999,115.31 -305.820007,114.46 -305.98999,114.45 -306.390015,114.78 -311.450012,116.2 -312.329987,117.45 -309.290009,116.65 -301.910004,113.92 -300,112 -300.029999,112.04 -302,112.93 -307.820007,114.87 -302.690002,114.72 -306.48999,114.27 -305.549988,114.8 -303.429993,114.13 -309.059998,114.98 -308.899994,116.24 -309.910004,116.31 -314.549988,117.45 -312.899994,117.97 -318.690002,118.84 -315.529999,119.13 -316.350006,118.51 -320.369995,119.57 -318.929993,120.15 -317.640015,119.32 -314.859985,118.25 -308.299988,116.15 -305.230011,114.18 -309.869995,115.09 -310.420013,116.6 -311.299988,116.87 -311.899994,116.98 -310.950012,116.81 -309.170013,116.11 -307.329987,115.29 -311.519989,116.07 -310.570007,116.85 -311.859985,116.88 -308.51001,116.18 -308.429993,115.45 -312.970001,116.65 -308.480011,116.62 -307.209991,115.18 -309.890015,115.58 -313.73999,117.34 -310.790009,117.35 -309.630005,116.17 -308.179993,115.53 -308.23999,115.41 -302.720001,114.15 -303.160004,113.17 -303.070007,113.47 -304.019989,113.9 -304.660004,114.24 -305.179993,114.47 -304.619995,114.37 -307.75,114.99 -312.450012,116.82 -316.970001,118.82 -311.119995,117.97 -311.369995,116.43 -304.820007,114.9 -303.630005,113.47 -302.880005,113.3 -305.329987,114.08 -297.880005,112.81 -302.01001,112.22 -293.51001,111.16 -301.059998,111.42 -303.850006,113.87 -299.730011,113.46 -298.369995,111.83 -298.920013,111.74 -302.140015,112.89 -302.320007,113.64 -305.299988,114.26 -305.079987,114.69 -308.769989,115.43 -310.309998,116.47 -309.070007,116.34 -310.390015,116.19 -312.51001,116.98 -312.619995,117.45 -313.700012,117.6 -314.549988,117.94 -318.049988,118.95 -319.73999,120.02 -323.790009,121.2 -324.630005,122.04 -323.089996,121.59 -323.820007,121.25 -324.329987,121.56 -326.049988,122.13 -324.339996,122.01 -320.529999,120.6 -326.230011,121.24 -328.549988,123.23 -330.170013,124.04 -325.859985,122.97 -323.220001,121.25 -320,120 -323.880005,120.59 -326.140015,122.21 -324.869995,122.34 -322.98999,121.34 -322.640015,120.82 -322.48999,120.85 -323.529999,121.17 -323.75,121.46 -327.390015,122.38 -329.76001,123.68 -330.390015,124.17 -329.130005,123.73 -323.109985,121.84 -320.200012,119.88 -319.019989,119.29 -320.600006,119.81 -322.190002,120.71 -321.079987,120.74 -323.119995,120.89 -329.480011,122.88 -328.579987,123.94 -333.410004,124.61 -335.420013,125.9 -335.950012,126.28 -335.290009,125.94 -333.600006,125.28 -336.390015,125.63 -335.899994,126.19 -339.820007,127.02 -338.309998,127.36 -338.670013,126.99 -338.609985,126.95 -336.959991,126.58 -335.25,125.79 -334.119995,125.22 -335.339996,125.43 -334.149994,125.51 -336.910004,125.95 -341,127.54 -342,128.58 -341.559998,128.39 -341.459991,128.06 -340.899994,127.88 -341.130005,127.84 -343.369995,128.48 -345.350006,129.46 -343.540009,129.31 -341.089996,128.15 -344.25,128.42 -345.339996,129.53 -342.429993,129 -346.609985,129.26 -345.76001,129.99 -349.630005,130.73 -347.579987,130.89 -349.799988,130.89 -349.309998,131.15 -349.809998,131.17 -351.959991,131.74 -352.26001,132.26 -351.190002,131.94 -353.809998,132.27 -349.98999,131.9 -362.579987,134.18 -363.730011,137.15 -358.019989,135.59 -356.980011,133.57 -358.350006,133.89 -358.480011,134.48 -354.5,133.5 -354.109985,132.51 -353.190002,132.36 -352.559998,132.2 -352.089996,132 -350.570007,131.59 -354.26001,132.24 -354.299988,133.1 -355.929993,133.43 -355.549988,133.52 -358.290009,134.05 -361.059998,135.26 -360.200012,135.53 -362.459991,135.68 -360.470001,135.58 -361.670013,135.4 -361.799988,135.68 -363.149994,136.07 -365.519989,136.89 -367.779999,137.89 -367.820007,138.21 -369.5,138.45 -367.859985,138.29 -370.429993,138.52 -370.480011,139.07 -366.820007,138.13 -363.279999,136.37 -360.160004,135 -361.709991,135.04 -359.420013,135.07 -357.779999,134.25 -357.059998,133.76 -350.299988,132.08 -348.079987,130.21 -343.040009,128.8 -343.690002,128.29 -345.059998,129.07 -346.339996,129.86 -345.450012,129.82 -348.559998,130.3 -348.429993,130.9 -345.660004,130.09 -345.089996,129.24 -346.230011,129.53 -345.390015,129.7 -340.890015,128.37 -338.660004,126.87 -335.859985,125.92 -336.839996,125.87 -338.630005,126.73 -336.899994,126.74 -336.160004,126.08 -331.709991,124.81 -337.410004,125.41 -341.329987,127.8 -343.75,129.17 -349.019989,130.59 -351.809998,132.12 -346.630005,131.09 -346.170013,129.56 -346.299988,129.59 -348.179993,130.32 -350.559998,131.32 -350.01001,131.6 -354.25,132.37 -356.790009,133.81 -359.859985,134.95 -358.929993,135.08 -361.329987,135.25 -361,135.58 -361.799988,135.65 -362.679993,135.95 -361.339996,135.78 -360.049988,135.1 -358.690002,134.52 +310.570007,314.25 +307.779999,311.14 +305.820007,306.06 +305.98999,305.25 +306.390015,305.37 +311.450012,307.22 +312.329987,310.89 +309.290009,313.36 +301.910004,308.86 +300,301.81 +300.029999,297.86 +302,299.72 +307.820007,302.65 +302.690002,306.65 +306.48999,306.12 +305.549988,303.99 +303.429993,306.62 +309.059998,304.41 +308.899994,307.39 +309.910004,310.97 +314.549988,310.46 +312.899994,313.84 +318.690002,315.69 +315.529999,316.65 +316.350006,318.12 +320.369995,315.83 +318.929993,319.73 +317.640015,320.29 +314.859985,316.91 +308.299988,313.8 +305.230011,307.95 +309.869995,304.33 +310.420013,308.17 +311.299988,312.02 +311.899994,311.44 +310.950012,311.93 +309.170013,311.01 +307.329987,308.84 +311.519989,307.74 +310.570007,310.05 +311.859985,312.34 +308.51001,310.77 +308.429993,309.48 +312.970001,308.08 +308.480011,311.44 +307.209991,310.53 +309.890015,306.37 +313.73999,309.66 +310.790009,313.5 +309.630005,312.37 +308.179993,308.6 +308.23999,308.04 +302.720001,306.83 +303.160004,303.73 +303.070007,301.23 +304.019989,303.39 +304.660004,303.94 +305.179993,304.96 +304.619995,305.21 +307.75,305.41 +312.450012,307.83 +316.970001,313.46 +311.119995,316.81 +311.369995,313.64 +304.820007,308.29 +303.630005,305.8 +302.880005,301.52 +305.329987,303.02 +297.880005,303.43 +302.01001,300.63 +293.51001,297.42 +301.059998,297.56 +303.850006,297.43 +299.730011,305.22 +298.369995,301.12 +298.920013,297.32 +302.140015,298.91 +302.320007,301.82 +305.299988,303.86 +305.079987,304.83 +308.769989,306.72 +310.309998,308.34 +309.070007,311.08 +310.390015,310.01 +312.51001,310.11 +312.619995,312.62 +313.700012,313.49 +314.549988,313.7 +318.049988,315.35 +319.73999,318.03 +323.790009,321.3 +324.630005,323.82 +323.089996,325.58 +323.820007,323.75 +324.329987,323.27 +326.049988,324.77 +324.339996,325.65 +320.529999,324.56 +326.230011,321.55 +328.549988,324.4 +330.170013,330.33 +325.859985,329.95 +323.220001,326.68 +320,321.69 +323.880005,320.3 +326.140015,322.54 +324.869995,326.85 +322.98999,325.52 +322.640015,322.82 +322.48999,322.05 +323.529999,322.57 +323.75,323.34 +327.390015,324.67 +329.76001,327.25 +330.390015,330.68 +329.130005,330.87 +323.109985,328.55 +320.200012,323.21 +319.019989,318.48 +320.600006,318.51 +322.190002,320.21 +321.079987,322.27 +323.119995,322.13 +329.480011,323.47 +328.579987,328.95 +333.410004,331.65 +335.420013,332.64 +335.950012,336.78 +335.290009,336.42 +333.600006,335.3 +336.390015,334.13 +335.899994,335.28 +339.820007,337.57 +338.309998,338.75 +338.670013,339.93 +338.609985,338.1 +336.959991,338.46 +335.25,336.93 +334.119995,334.8 +335.339996,333.94 +334.149994,334.56 +336.910004,335.21 +341,336.74 +342,341.41 +341.559998,343.12 +341.459991,341.95 +340.899994,341.24 +341.130005,341 +343.369995,341.28 +345.350006,343.4 +343.540009,345.47 +341.089996,344.09 +344.25,341.42 +345.339996,343.09 +342.429993,345.73 +346.609985,343.97 +345.76001,344.8 +349.630005,347.94 +347.579987,348.36 +349.799988,349.58 +349.309998,348.66 +349.809998,350.21 +351.959991,349.92 +352.26001,351.82 +351.190002,352.75 +353.809998,351.91 +349.98999,352.38 +362.579987,353.6 +363.730011,359.4 +358.019989,366.78 +356.980011,359.18 +358.350006,355.48 +358.480011,357.8 +354.5,358.25 +354.109985,355.14 +353.190002,352.69 +352.559998,353.11 +352.089996,352.28 +350.570007,351.7 +354.26001,351.28 +354.299988,353.15 +355.929993,355.79 +355.549988,355.61 +358.290009,356.61 +361.059998,358.17 +360.200012,361.37 +362.459991,361.64 +360.470001,361.47 +361.670013,361.75 +361.799988,360.83 +363.149994,362.4 +365.519989,363.36 +367.779999,365.95 +367.820007,368.2 +369.5,368.85 +367.859985,368.96 +370.429993,369.12 +370.480011,369.46 +366.820007,370.72 +363.279999,366.86 +360.160004,362.13 +361.709991,359.76 +359.420013,360.03 +357.779999,360.05 +357.059998,357.17 +350.299988,355.51 +348.079987,350.82 +343.040009,345.36 +343.690002,343.25 +345.059998,342.13 +346.339996,345.26 +345.450012,346.43 +348.559998,346.54 +348.429993,347.72 +345.660004,349.03 +345.089996,345.98 +346.230011,344.45 +345.390015,345.71 +340.890015,345.16 +338.660004,340.99 +335.859985,337.07 +336.839996,335.75 +338.630005,336.04 +336.899994,338.37 +336.160004,337.66 +331.709991,334.96 +337.410004,333.15 +341.329987,335.63 +343.75,342.98 +349.019989,345.53 +351.809998,349.41 +346.630005,352.24 +346.170013,348.35 +346.299988,344.54 +348.179993,346.44 +350.559998,348.31 +350.01001,350.7 +354.25,351.6 +356.790009,353.78 +359.859985,358.29 +358.929993,360.04 +361.329987,360.51 +361,360.56 +361.799988,361.99 +362.679993,361.7 +361.339996,362.58 +360.049988,361.64 +358.690002,359.59 diff --git a/trend/testdata/wma.csv b/trend/testdata/wma.csv index 2583fb01..63b4d5b6 100644 --- a/trend/testdata/wma.csv +++ b/trend/testdata/wma.csv @@ -1,252 +1,252 @@ -Close,Wma -318.600006,0 -315.839996,0 -316.149994,316.45 -310.570007,313.31 -307.779999,310.11 -305.820007,307.27 -305.98999,306.23 -306.390015,306.16 -311.450012,308.85 -312.329987,311.05 -309.290009,310.66 -301.910004,306.11 -300,302.19 -300.029999,300.33 -302,301.01 -307.820007,304.58 -302.690002,304.29 -306.48999,305.44 -305.549988,305.39 -303.429993,304.65 -309.059998,306.6 -308.899994,308.04 -309.910004,309.43 -314.549988,312.06 -312.899994,312.95 -318.690002,316.07 -315.529999,316.14 -316.350006,316.47 -320.369995,318.22 -318.929993,318.98 -317.640015,318.53 -314.859985,316.46 -308.299988,312.04 -305.230011,307.86 -309.869995,308.06 -310.420013,309.37 -311.299988,310.77 -311.899994,311.45 -310.950012,311.33 -309.170013,310.22 -307.329987,308.55 -311.519989,309.73 -310.570007,310.35 -311.859985,311.37 -308.51001,309.97 -308.429993,309.03 -312.970001,310.71 -308.480011,309.97 -307.209991,308.59 -309.890015,308.76 -313.73999,311.37 -310.790009,311.62 -309.630005,310.7 -308.179993,309.1 -308.23999,308.45 -302.720001,305.47 -303.160004,303.86 -303.070007,303.04 -304.019989,303.56 -304.660004,304.18 -305.179993,304.81 -304.619995,304.81 -307.75,306.28 -312.450012,309.58 -316.970001,313.93 -311.119995,313.29 -311.369995,312.22 -304.820007,308.05 -303.630005,305.32 -302.880005,303.45 -305.329987,304.23 -297.880005,301.2 -302.01001,301.19 -293.51001,297.07 -301.059998,298.7 -303.850006,301.2 -299.730011,301.33 -298.369995,299.74 -298.920013,298.87 -302.140015,300.44 -302.320007,301.69 -305.299988,303.78 -305.079987,304.69 -308.769989,306.96 -310.309998,308.92 -309.070007,309.43 -310.390015,309.94 -312.51001,311.23 -312.619995,312.21 -313.700012,313.14 -314.549988,313.94 -318.049988,316.16 -319.73999,318.31 -323.790009,321.48 -324.630005,323.54 -323.089996,323.72 -323.820007,323.71 -324.329987,323.95 -326.049988,325.1 -324.339996,324.91 -320.529999,322.72 -326.230011,324.02 -328.549988,326.44 -330.170013,328.97 -325.859985,327.74 -323.220001,325.26 -320,322.05 -323.880005,322.48 -326.140015,324.36 -324.869995,325.13 -322.98999,324.14 -322.640015,323.13 -322.48999,322.62 -323.529999,323.03 -323.75,323.47 -327.390015,325.53 -329.76001,327.97 -330.390015,329.68 -329.130005,329.66 -323.109985,326.33 -320.200012,322.66 -319.019989,320.09 -320.600006,320.01 -322.190002,321.13 -321.079987,321.37 -323.119995,322.28 -329.480011,325.96 -328.579987,327.97 -333.410004,331.14 -335.420013,333.61 -335.950012,335.35 -335.290009,335.53 -333.600006,334.56 -336.390015,335.28 -335.899994,335.68 -339.820007,337.94 -338.309998,338.41 -338.670013,338.74 -338.609985,338.58 -336.959991,337.79 -335.25,336.38 -334.119995,334.97 -335.339996,334.92 -334.149994,334.54 -336.910004,335.73 -341,338.5 -342,340.82 -341.559998,341.61 -341.459991,341.58 -340.899994,341.2 -341.130005,341.11 -343.369995,342.21 -345.350006,343.99 -343.540009,344.12 -341.089996,342.62 -344.25,343.08 -345.339996,344.27 -342.429993,343.7 -346.609985,345 -345.76001,345.49 -349.630005,347.84 -347.579987,347.96 -349.799988,349.03 -349.309998,349.18 -349.809998,349.64 -351.959991,350.8 -352.26001,351.75 -351.190002,351.68 -353.809998,352.68 -349.98999,351.46 -362.579987,356.92 -363.730011,361.06 -358.019989,360.68 -356.980011,358.45 -358.350006,357.84 -358.480011,358.19 -354.5,356.47 -354.109985,354.97 -353.190002,353.71 -352.559998,353.03 -352.089996,352.43 -350.570007,351.41 -354.26001,352.67 -354.299988,353.66 -355.929993,355.11 -355.549988,355.47 -358.290009,356.98 -361.059998,359.22 -360.200012,360.17 -362.459991,361.47 -360.470001,361.09 -361.670013,361.4 -361.799988,361.53 -363.149994,362.45 -365.519989,364.11 -367.779999,366.25 -367.820007,367.42 -369.5,368.65 -367.859985,368.4 -370.429993,369.42 -370.480011,370.03 -366.820007,368.64 -363.279999,365.66 -360.160004,362.31 -361.709991,361.45 -359.420013,360.31 -357.779999,358.98 -357.059998,357.69 -350.299988,353.8 -348.079987,350.32 -343.040009,345.93 -343.690002,344.21 -345.059998,344.27 -346.339996,345.47 -345.450012,345.68 -348.559998,347.15 -348.429993,347.98 -345.660004,347.07 -345.089996,345.84 -346.230011,345.76 -345.390015,345.62 -340.890015,343.28 -338.660004,340.53 -335.859985,337.63 -336.839996,336.82 -338.630005,337.57 -336.899994,337.47 -336.160004,336.82 -331.709991,334.06 -337.410004,335.3 -341.329987,338.42 -343.75,341.89 -349.019989,345.98 -351.809998,349.54 -346.630005,348.76 -346.170013,347.26 -346.299988,346.31 -348.179993,347.22 -350.559998,349.06 -350.01001,349.89 -354.25,352.22 -356.790009,354.81 -359.859985,357.9 -358.929993,358.88 -361.329987,360.28 -361,360.76 -361.799988,361.45 -362.679993,362.11 -361.339996,361.86 -360.049988,360.92 -358.690002,359.58 +Close,Wma3,Wma5 +318.600006,0,0 +315.839996,0,0 +316.149994,317.272,0 +310.570007,315.065,0 +307.779999,312.895,315.582 +305.820007,308.848,313.126 +305.98999,306.828,310.933 +306.390015,305.972,307.987 +311.450012,307.033,306.959 +312.329987,309.067,307.164 +309.290009,311.383,308.254 +301.910004,309.580,309.015 +300,305.282,309.217 +300.029999,300.960,306.971 +302,300.343,303.743 +307.820007,301.985,301.431 +302.690002,304.055,301.630 +306.48999,305.888,302.899 +305.549988,304.433,304.525 +303.429993,305.667,305.591 +309.059998,305.428,304.799 +308.899994,306.218,306.131 +309.910004,309.148,306.424 +314.549988,310.178,307.631 +312.899994,311.955,310.175 +318.690002,314.690,311.485 +315.529999,315.268,313.291 +316.350006,317.247,315.189 +320.369995,316.610,315.928 +318.929993,318.120,317.619 +317.640015,319.435,317.311 +314.859985,317.822,318.011 +308.299988,315.157,317.901 +305.230011,311.068,315.441 +309.869995,307.538,312.858 +310.420013,307.642,310.223 +311.299988,310.292,308.278 +311.899994,310.960,308.759 +310.950012,311.442,310.645 +309.170013,311.128,310.938 +307.329987,309.753,310.841 +311.519989,308.948,310.466 +310.570007,309.267,309.802 +311.859985,311.260,309.515 +308.51001,310.657,309.778 +308.429993,310.172,310.727 +312.970001,309.227,310.377 +308.480011,309.952,310.203 +307.209991,310.513,309.290 +309.890015,308.292,309.585 +313.73999,309.192,310.261 +310.790009,311.323,309.279 +309.630005,312.072,309.869 +308.179993,309.968,310.948 +308.23999,308.915,311.023 +302.720001,307.290,309.081 +303.160004,305.553,307.613 +303.070007,302.925,306.094 +304.019989,303.273,304.781 +304.660004,303.652,303.210 +305.179993,304.427,303.643 +304.619995,304.827,304.026 +307.75,305.422,304.751 +312.450012,306.968,305.722 +316.970001,310.853,307.300 +311.119995,313.735,309.101 +311.369995,314.087,311.538 +304.820007,310.153,312.737 +303.630005,307.897,311.781 +302.880005,304.100,308.379 +305.329987,303.663,306.541 +297.880005,302.863,303.720 +302.01001,302.293,302.895 +293.51001,298.528,301.793 +301.059998,299.018,300.819 +303.850006,297.750,298.929 +299.730011,301.768,299.647 +298.369995,301.563,298.745 +298.920013,299.142,301.037 +302.140015,299.182,300.884 +302.320007,300.560,299.699 +305.299988,302.727,300.259 +305.079987,303.773,301.720 +308.769989,305.805,303.654 +310.309998,307.182,305.059 +309.070007,309.333,306.855 +310.390015,309.910,307.996 +312.51001,310.083,309.706 +312.619995,311.468,310.443 +313.700012,312.745,310.892 +314.549988,313.302,312.120 +318.049988,314.708,313.419 +319.73999,316.582,314.493 +323.790009,319.570,316.275 +324.630005,321.905,318.425 +323.089996,323.953,320.862 +323.820007,323.982,322.517 +324.329987,323.540,323.914 +326.049988,324.362,324.112 +324.339996,324.905,324.011 +320.529999,324.560,324.252 +326.230011,323.385,324.411 +328.549988,323.767,324.681 +330.170013,327.660,324.652 +325.859985,328.642,325.295 +323.220001,327.575,327.387 +320,324.003,327.163 +323.880005,322.257,325.855 +326.140015,322.317,323.739 +324.869995,324.798,322.993 +322.98999,325.192,323.111 +322.640015,323.872,324.479 +322.48999,322.790,324.461 +323.529999,322.738,323.516 +323.75,323.047,322.919 +327.390015,324.247,323.243 +329.76001,325.965,324.157 +330.390015,328.680,325.649 +329.130005,329.865,327.167 +323.109985,328.757,328.569 +320.200012,325.635,328.278 +319.019989,321.458,326.481 +320.600006,319.873,323.822 +322.190002,320.075,321.120 +321.079987,321.210,320.289 +323.119995,321.975,320.623 +329.480011,323.160,322.048 +328.579987,326.150,323.478 +333.410004,329.835,325.126 +335.420013,331.330,328.100 +335.950012,334.503,331.249 +335.290009,335.575,332.666 +333.600006,335.338,334.717 +336.390015,334.910,335.357 +335.899994,334.913,335.359 +339.820007,336.798,335.443 +338.309998,337.608,335.947 +338.670013,339.125,337.353 +338.609985,338.480,337.977 +336.959991,338.365,338.835 +335.25,337.500,338.082 +334.119995,335.917,337.553 +335.339996,334.888,336.681 +334.149994,334.532,335.533 +336.910004,335.205,334.931 +341,336.212,335.282 +342,339.122,336.535 +341.559998,341.427,337.797 +341.459991,341.763,339.942 +340.899994,341.417,341.433 +341.130005,341.218,341.570 +343.369995,341.388,341.465 +345.350006,342.580,341.759 +343.540009,344.058,342.225 +341.089996,344.037,342.890 +344.25,342.842,343.687 +345.339996,342.852,343.868 +342.429993,344.310,343.195 +346.609985,344.582,343.329 +345.76001,344.378,344.592 +349.630005,346.830,345.160 +347.579987,347.353,345.514 +349.799988,348.975,347.329 +349.309998,348.608,347.931 +349.809998,349.638,349.087 +351.959991,349.918,349.107 +352.26001,350.935,350.123 +351.190002,351.932,350.492 +353.809998,352.162,351.324 +349.98999,351.863,352.001 +362.579987,353.998,352.670 +363.730011,356.477,354.003 +358.019989,362.203,356.149 +356.980011,360.702,357.632 +358.350006,357.728,360.946 +358.480011,357.687,359.790 +354.5,357.752,357.635 +354.109985,356.425,357.123 +353.190002,354.152,356.705 +352.559998,353.545,355.445 +352.089996,352.797,353.715 +350.570007,352.072,353.049 +354.26001,351.945,352.524 +354.299988,352.422,352.379 +355.929993,354.552,352.669 +355.549988,355.052,353.347 +358.290009,356.197,355.045 +361.059998,357.382,355.967 +360.200012,359.532,357.269 +362.459991,361.007,358.463 +360.470001,360.998,360.112 +361.670013,361.665,361.073 +361.799988,361.092,361.159 +363.149994,361.960,361.729 +365.519989,362.870,361.750 +367.779999,364.712,362.921 +367.820007,366.657,364.103 +369.5,368.080,365.754 +367.859985,368.387,367.269 +370.429993,369.108,368.322 +370.480011,369.153,368.801 +366.820007,369.845,369.201 +363.279999,368.060,368.625 +360.160004,364.530,368.083 +361.709991,361.978,366.103 +359.420013,360.553,363.369 +357.779999,360.292,361.253 +357.059998,358.480,359.901 +350.299988,356.293,358.933 +348.079987,353.310,356.539 +343.040009,348.350,353.816 +343.690002,345.668,350.701 +345.059998,343.593,347.025 +346.339996,344.588,345.339 +345.450012,345.552,344.218 +348.559998,346.413,345.145 +348.429993,346.983,346.171 +345.660004,348.033,346.780 +345.089996,346.950,346.879 +346.230011,345.565,347.327 +345.390015,345.520,346.527 +340.890015,345.060,345.268 +338.660004,342.768,344.465 +335.859985,339.308,343.237 +336.839996,337.423,341.003 +338.630005,336.648,338.599 +336.899994,337.447,337.428 +336.160004,337.642,336.834 +331.709991,335.788,336.897 +337.410004,334.885,336.671 +341.329987,335.213,336.028 +343.75,339.773,336.419 +349.019989,343.418,337.913 +351.809998,346.850,342.231 +346.630005,349.552,345.264 +346.170013,349.143,347.313 +346.299988,346.422,348.725 +348.179993,346.548,348.324 +350.559998,347.637,346.910 +350.01001,349.278,347.448 +354.25,350.992,348.678 +356.790009,352.553,350.564 +359.859985,356.032,352.602 +358.929993,358.170,354.405 +361.329987,359.795,357.145 +361,360.075,358.923 +361.799988,361.298,360.187 +362.679993,361.547,360.617 +361.339996,362.017,361.517 +360.049988,361.795,361.531 +358.690002,360.468,361.502 \ No newline at end of file diff --git a/trend/wma.go b/trend/wma.go index 00260b07..a2556995 100644 --- a/trend/wma.go +++ b/trend/wma.go @@ -21,15 +21,18 @@ type Wma[T helper.Number] struct { // NewWmaWith function initializes a new WMA instance with the given parameters. func NewWmaWith[T helper.Number](period int) *Wma[T] { + if period <= 0 { + panic("period must be greater than 0") + } return &Wma[T]{ Period: period, } } -// Compute function takes a channel of numbers and computes the WMA and the signal line. +// Compute computes the WMA over the input stream. func (w *Wma[T]) Compute(values <-chan T) <-chan T { window := helper.NewRing[T](w.Period) - + divisor := T(w.Period) * (T(w.Period) + T(1)) / T(2.0) wmas := helper.Map(values, func(value T) T { window.Put(value) @@ -40,10 +43,11 @@ func (w *Wma[T]) Compute(values <-chan T) <-chan T { var sum T for i := 0; i < w.Period; i++ { - sum += window.At(i) * T(i+1) / T(w.Period) + v := window.At(i) + sum += v * T(w.Period-i) } - return sum / 2 + return sum / divisor }) wmas = helper.Skip(wmas, w.IdlePeriod()) diff --git a/trend/wma_test.go b/trend/wma_test.go index 9e10315d..8e2deb31 100644 --- a/trend/wma_test.go +++ b/trend/wma_test.go @@ -11,10 +11,12 @@ import ( "github.com/cinar/indicator/v2/trend" ) +// TestWma tests the WMA indicator with 2 different periods, WMA(3) and WMA(5). func TestWma(t *testing.T) { type Data struct { Close float64 - Wma float64 + Wma3 float64 + Wma5 float64 } input, err := helper.ReadFromCsvFile[Data]("testdata/wma.csv") @@ -22,18 +24,24 @@ func TestWma(t *testing.T) { t.Fatal(err) } - inputs := helper.Duplicate(input, 2) - closing := helper.Map(inputs[0], func(d *Data) float64 { return d.Close }) - expected := helper.Map(inputs[1], func(d *Data) float64 { return d.Wma }) + inputs := helper.Duplicate(input, 3) + closing := helper.Duplicate(helper.Map(inputs[0], func(d *Data) float64 { return d.Close }), 2) + expectedWma3 := helper.Map(inputs[1], func(d *Data) float64 { return d.Wma3 }) + expectedWma5 := helper.Map(inputs[2], func(d *Data) float64 { return d.Wma5 }) - wma := trend.NewWmaWith[float64](3) + wma3 := trend.NewWmaWith[float64](3) + wma5 := trend.NewWmaWith[float64](5) - actual := wma.Compute(closing) - actual = helper.RoundDigits(actual, 2) + actualWma3 := wma3.Compute(closing[0]) + actualWma5 := wma5.Compute(closing[1]) - expected = helper.Skip(expected, wma.IdlePeriod()) + actualWma3 = helper.RoundDigits(actualWma3, 3) + actualWma5 = helper.RoundDigits(actualWma5, 3) - err = helper.CheckEquals(actual, expected) + expectedWma3 = helper.Skip(expectedWma3, wma3.IdlePeriod()) + expectedWma5 = helper.Skip(expectedWma5, wma5.IdlePeriod()) + + err = helper.CheckEquals(actualWma3, expectedWma3, actualWma5, expectedWma5) if err != nil { t.Fatal(err) } diff --git a/volatility/testdata/super_trend.csv b/volatility/testdata/super_trend.csv index 0e2cc3d2..a95833ee 100644 --- a/volatility/testdata/super_trend.csv +++ b/volatility/testdata/super_trend.csv @@ -16,237 +16,237 @@ High,Low,Close,SuperTrend 304.190002,297,302,0 308.540009,304.160004,307.820007,0 306.5,297.640015,302.690002,0 -306.570007,300.929993,306.48999,293.93 -308.579987,304.649994,305.549988,299.99 -307.459991,303.26001,303.429993,302.17 -309.380005,305.23999,309.059998,306.57 -309.040009,305.619995,308.899994,305.23 -312.390015,307.380005,309.910004,313.57 -316.890015,311.25,314.549988,310.91 -314.230011,310,312.899994,314.26 -320.160004,313.380005,318.690002,315.79 -320.5,314.75,315.529999,321.24 -316.799988,313.339996,316.350006,319.05 -320.570007,316.600006,320.369995,315.01 -321.320007,317.720001,318.929993,317.59 -318.420013,315.790009,317.640015,317.59 -318.519989,314.25,314.859985,314.59 -315.540009,307.75,308.299988,311.16 -307.23999,303.859985,305.230011,306.5 -310.01001,304.359985,309.869995,304.6 -312.730011,306.850006,310.420013,304.6 -312.829987,307.5,311.299988,304.6 -312.549988,307.709991,311.899994,304.6 -313.679993,309.579987,310.950012,304.73 -311.730011,308.339996,309.170013,305.59 -309.51001,306.809998,307.329987,306.89 -311.859985,305.790009,311.519989,308.75 -312.670013,306.380005,310.570007,308.77 -312.600006,308.299988,311.859985,308.92 -311.549988,305.920013,308.51001,311.98 -308.799988,305.600006,308.429993,310.83 -314.149994,306.630005,312.970001,304.64 -313.410004,308.01001,308.480011,304.64 -311.420013,306.98999,307.209991,304.64 -309.980011,305.279999,309.890015,304.64 -313.73999,309.619995,313.73999,306.82 -314.100006,309.040009,310.790009,307.95 -310.369995,308.279999,309.630005,307.95 -310.200012,306.869995,308.179993,307.51 -308.410004,305.480011,308.23999,310.08 -307.299988,300.5,302.720001,302.42 -305.269989,301.769989,303.160004,303.5 -305.559998,300.25,303.070007,303.5 -305.619995,300.01001,304.019989,300.76 -305.779999,302.01001,304.660004,300.76 -306.149994,303.410004,305.179993,300.76 -305.619995,302.079987,304.619995,300.76 -308.100006,301.450012,307.75,301.3 -312.660004,308.5,312.450012,306.68 -317.290009,312.429993,316.970001,310.43 -316.5,310.230011,311.119995,310.43 -312.679993,309.25,311.369995,310.43 -313.179993,303.940002,304.820007,317.13 -306.720001,301.920013,303.630005,314.34 -306.589996,300.76001,302.880005,313.86 -307.549988,301.679993,305.329987,313.86 -300.549988,294.899994,297.880005,309.55 -304.429993,295.359985,302.01001,309.55 -301.299988,292.420013,293.51001,309.55 -301.51001,295.059998,301.059998,309.55 -305.630005,302.25,303.850006,309.55 -307.049988,299.649994,299.730011,309.55 -302.079987,296.299988,298.369995,307.96 -299.5,293.390015,298.920013,301.04 -303.209991,298.970001,302.140015,300.96 -302.720001,300.589996,302.320007,296.31 -305.380005,303.359985,305.299988,313.88 -307.470001,302.579987,305.079987,294.11 -308.809998,304.98999,308.769989,317.86 -311.5,308.23999,310.309998,299.87 -311,307.070007,309.070007,317.1 -311.070007,307.850006,310.390015,303.47 -313.220001,309.049988,312.51001,314.36 -313.700012,310.329987,312.619995,310.86 -315.940002,311.769989,313.700012,314.35 -316.920013,313.720001,314.549988,313.9 -318.809998,313.26001,318.049988,313.9 -321.880005,318.119995,319.73999,315.66 -323.980011,319,323.790009,315.93 -325.720001,322.5,324.630005,318.64 -324.549988,322.76001,323.089996,319.99 -324.369995,321.320007,323.820007,321.04 -324.850006,321.609985,324.329987,322.99 -326.399994,324.299988,326.049988,323.78 -327.100006,324.109985,324.339996,328.07 -323.73999,319,320.529999,320.12 -326.910004,322.109985,326.230011,326.71 -328.809998,325.190002,328.549988,322.31 -331.839996,328.570007,330.170013,323.74 -330.25,322.76001,325.859985,323.74 -328.070007,323.059998,323.220001,335.63 -325.98999,317.410004,320,335.37 -325.160004,322.619995,323.880005,335.37 -330.690002,325.790009,326.140015,335.37 -326.880005,323.480011,324.869995,335.37 -326.160004,320.149994,322.98999,333.08 -322.959991,319.809998,322.640015,327.46 -324.23999,320.540009,322.48999,324.48 -323.829987,320.130005,323.529999,323.38 -324.690002,322.359985,323.75,318.92 -328.26001,324.820007,327.390015,332.15 -329.980011,325.850006,329.76001,322.79 -333.940002,329.119995,330.390015,334.9 -331.48999,328.350006,329.130005,328.25 -329.269989,322.970001,323.109985,327.55 -323,319.559998,320.200012,324.72 -320.559998,317.709991,319.019989,323.06 -322.630005,319.670013,320.600006,323.06 -322.470001,319,322.190002,323.06 -322.410004,319.390015,321.079987,322.19 -323.220001,319.529999,323.119995,320.84 -330.670013,324.420013,329.480011,325.06 -330.890015,327.570007,328.579987,325.48 -334.160004,328.679993,333.410004,325.67 -335.820007,331.429993,335.420013,326.64 -336.320007,334.100006,335.950012,329.27 -337.589996,334.920013,335.290009,332.24 -335.350006,332.220001,333.600006,332.24 -336.619995,332.200012,336.390015,334.24 -340.380005,334.089996,335.899994,338.51 -341.679993,335.540009,339.820007,334.99 -341.299988,337.660004,338.309998,334.99 -339.279999,336.619995,338.670013,334.99 -341.350006,336.369995,338.609985,334.99 -338.850006,335.660004,336.959991,334.99 -337.470001,334.190002,335.25,334.99 -335.829987,331.839996,334.119995,335.47 -336.730011,334.369995,335.339996,335.42 -336.399994,332.609985,334.149994,335.25 -337.01001,334.140015,336.910004,336.74 -342.5,338.399994,341,340.3 -342.079987,338.410004,342,340.3 -341.890015,338.700012,341.559998,340.3 -341.799988,338.910004,341.459991,340.3 -344.070007,340.390015,340.899994,340.3 -343.480011,339.869995,341.130005,340.3 -343.839996,340.929993,343.369995,340.3 -346.440002,344.309998,345.350006,344.05 -346.209991,343.450012,343.540009,345.32 -345,340.51001,341.089996,343.71 -345.720001,341.089996,344.25,341.03 -347.25,343.540009,345.339996,341.85 -345.380005,341.98999,342.429993,341.85 -346.790009,342.850006,346.609985,341.85 -347.619995,345.100006,345.76001,341.93 -351.190002,346.279999,349.630005,343.72 -349.660004,345.540009,347.579987,343.72 -351.089996,347.519989,349.799988,344.51 -351.269989,348.600006,349.309998,346.23 -351,348.320007,349.809998,347.59 -352.329987,350.209991,351.959991,350.97 -353.420013,351.25,352.26001,350.94 -352.890015,349.690002,351.190002,353.62 -354.470001,349.420013,353.809998,353.09 -355.109985,349.390015,349.98999,354.1 -364.630005,355.149994,362.579987,348.64 -364.25,358.850006,363.730011,348.64 -364.429993,356.059998,358.019989,348.64 -362.350006,355.920013,356.980011,348.64 -359.25,353.200012,358.350006,348.64 -358.950012,356.809998,358.480011,348.64 -357.920013,353.670013,354.5,348.64 -358.720001,353.380005,354.109985,353.46 -356.299988,351.880005,353.190002,351.96 -354.299988,351.25,352.559998,358.54 -354.179993,349.609985,352.089996,344.72 -353.5,349.660004,350.570007,358.75 -354.320007,351.540009,354.26001,346.94 -357.230011,354.130005,354.299988,360.5 -357.350006,352.920013,355.929993,352.12 -358.410004,354.529999,355.549988,357.84 -358.589996,354.01001,358.290009,355.71 -362.679993,358.600006,361.059998,358.37 -362.470001,359.25,360.200012,358.37 -363.390015,360.600006,362.459991,359.42 -366.470001,360,360.470001,359.42 -362.799988,359.26001,361.670013,359.42 -363.299988,360.869995,361.799988,359.42 -364.829987,361.769989,363.149994,361.05 -366.609985,364.51001,365.519989,364.62 -370.429993,365.470001,367.779999,366.75 -370.839996,365.970001,367.820007,366.75 -370.220001,368.26001,369.5,367.14 -370.200012,367.519989,367.859985,367.36 -371.329987,367.790009,370.429993,368.37 -373.339996,368.459991,370.480011,368.96 -371.339996,366.730011,366.820007,372.24 -367.200012,362.940002,363.279999,369.24 -363.420013,359.76001,360.160004,366.12 -361.890015,357.269989,361.709991,364.82 -360.790009,357.950012,359.420013,364.74 -360.519989,354.269989,357.779999,363.86 -359.470001,356.670013,357.059998,363.86 -357.5,348.549988,350.299988,361 -350,345.410004,348.079987,357.02 -348.23999,342.130005,343.040009,355.68 -344.01001,339.51001,343.690002,352.04 -345.940002,342.369995,345.059998,352.04 -348.76001,341.859985,346.339996,352.04 -345.899994,342.829987,345.450012,349.64 -349.51001,345.5,348.559998,349.64 -349.600006,344.920013,348.429993,348.61 -348.660004,343.019989,345.660004,346.79 -348.440002,343.880005,345.089996,346.79 -349.940002,345.829987,346.230011,346.79 -348.410004,344.149994,345.390015,346.79 -344.829987,339.959991,340.890015,345.26 -342.690002,338.450012,338.660004,343.89 -340,334.350006,335.859985,341.29 -338.880005,333.48999,336.839996,341.06 -339.850006,337.769989,338.630005,341.06 -339.619995,336.549988,336.899994,340.39 -338.320007,335.459991,336.160004,337.02 -336.190002,330.579987,331.709991,333.01 -338.359985,332.179993,337.410004,333.96 -341.48999,337.5,341.329987,336.94 -345.329987,340.579987,343.75,339.13 -349.390015,344.5,349.019989,341.5 -354.350006,349.790009,351.809998,345.28 -354.029999,344.059998,346.630005,345.28 -346.950012,344.299988,346.170013,345.28 -348,344.690002,346.299988,345.28 -350.109985,346.880005,348.179993,345.28 -351.200012,348.600006,350.559998,348.17 -350.649994,348.809998,350.01001,347.37 -355.950012,351.25,354.25,357.31 -357.309998,354.480011,356.790009,351.06 -360,357.230011,359.859985,363.13 -360.559998,358.070007,358.929993,355.38 -362.609985,358.179993,361.329987,362.84 -363.029999,360.25,361,360.44 -362.459991,360.049988,361.799988,361.92 -363.190002,361.23999,362.679993,361.09 -362.640015,359.579987,361.339996,362.24 -362.119995,359.209991,360.049988,359.72 -361.519989,358.299988,358.690002,359.59 +306.570007,300.929993,306.48999,281.25 +308.579987,304.649994,305.549988,285.09 +307.459991,303.26001,303.429993,285.82 +309.380005,305.23999,309.059998,289.39 +309.040009,305.619995,308.899994,291.29 +312.390015,307.380005,309.910004,293.77 +316.890015,311.25,314.549988,299.18 +314.230011,310,312.899994,299.9 +320.160004,313.380005,318.690002,306.53 +320.5,314.75,315.529999,309.03 +316.799988,313.339996,316.350006,309.03 +320.570007,316.600006,320.369995,309.03 +321.320007,317.720001,318.929993,309.03 +318.420013,315.790009,317.640015,309.03 +318.519989,314.25,314.859985,309.03 +315.540009,307.75,308.299988,323.37 +307.23999,303.859985,305.230011,317.17 +310.01001,304.359985,309.869995,317.17 +312.730011,306.850006,310.420013,317.17 +312.829987,307.5,311.299988,317.17 +312.549988,307.709991,311.899994,317.17 +313.679993,309.579987,310.950012,317.17 +311.730011,308.339996,309.170013,317.17 +309.51001,306.809998,307.329987,317.17 +311.859985,305.790009,311.519989,317.17 +312.670013,306.380005,310.570007,317.17 +312.600006,308.299988,311.859985,317.17 +311.549988,305.920013,308.51001,317.17 +308.799988,305.600006,308.429993,316.95 +314.149994,306.630005,312.970001,316.95 +313.410004,308.01001,308.480011,316.95 +311.420013,306.98999,307.209991,316.95 +309.980011,305.279999,309.890015,316.95 +313.73999,309.619995,313.73999,316.95 +314.100006,309.040009,310.790009,316.95 +310.369995,308.279999,309.630005,316.95 +310.200012,306.869995,308.179993,316.95 +308.410004,305.480011,308.23999,316.95 +307.299988,300.5,302.720001,315.54 +305.269989,301.769989,303.160004,312.61 +305.559998,300.25,303.070007,311.05 +305.619995,300.01001,304.019989,311.04 +305.779999,302.01001,304.660004,311.04 +306.149994,303.410004,305.179993,311.04 +305.619995,302.079987,304.619995,311.04 +308.100006,301.450012,307.75,311.04 +312.660004,308.5,312.450012,301.27 +317.290009,312.429993,316.970001,301.91 +316.5,310.230011,311.119995,301.91 +312.679993,309.25,311.369995,301.91 +313.179993,303.940002,304.820007,301.91 +306.720001,301.920013,303.630005,301.91 +306.589996,300.76001,302.880005,301.91 +307.549988,301.679993,305.329987,301.91 +300.549988,294.899994,297.880005,314 +304.429993,295.359985,302.01001,314 +301.299988,292.420013,293.51001,314 +301.51001,295.059998,301.059998,314 +305.630005,302.25,303.850006,314 +307.049988,299.649994,299.730011,314 +302.079987,296.299988,298.369995,314 +299.5,293.390015,298.920013,314 +303.209991,298.970001,302.140015,314 +302.720001,300.589996,302.320007,314 +305.380005,303.359985,305.299988,314 +307.470001,302.579987,305.079987,314 +308.809998,304.98999,308.769989,314 +311.5,308.23999,310.309998,314 +311,307.070007,309.070007,314 +311.070007,307.850006,310.390015,313.19 +313.220001,309.049988,312.51001,313.19 +313.700012,310.329987,312.619995,313.19 +315.940002,311.769989,313.700012,309.01 +316.920013,313.720001,314.549988,309.01 +318.809998,313.26001,318.049988,309.01 +321.880005,318.119995,319.73999,312.34 +323.980011,319,323.790009,312.73 +325.720001,322.5,324.630005,314.33 +324.549988,322.76001,323.089996,314.33 +324.369995,321.320007,323.820007,314.33 +324.850006,321.609985,324.329987,314.33 +326.399994,324.299988,326.049988,314.9 +327.100006,324.109985,324.339996,315.75 +323.73999,319,320.529999,315.75 +326.910004,322.109985,326.230011,317.64 +328.809998,325.190002,328.549988,320.86 +331.839996,328.570007,330.170013,324.31 +330.25,322.76001,325.859985,324.31 +328.070007,323.059998,323.220001,333.65 +325.98999,317.410004,320,332.69 +325.160004,322.619995,323.880005,332.69 +330.690002,325.790009,326.140015,332.69 +326.880005,323.480011,324.869995,332.69 +326.160004,320.149994,322.98999,332.69 +322.959991,319.809998,322.640015,332.69 +324.23999,320.540009,322.48999,332.69 +323.829987,320.130005,323.529999,332.69 +324.690002,322.359985,323.75,332.69 +328.26001,324.820007,327.390015,332.69 +329.980011,325.850006,329.76001,332.69 +333.940002,329.119995,330.390015,332.69 +331.48999,328.350006,329.130005,332.69 +329.269989,322.970001,323.109985,331.99 +323,319.559998,320.200012,326.64 +320.559998,317.709991,319.019989,326.01 +322.630005,319.670013,320.600006,326.01 +322.470001,319,322.190002,326.01 +322.410004,319.390015,321.079987,326.01 +323.220001,319.529999,323.119995,326.01 +330.670013,324.420013,329.480011,317.18 +330.890015,327.570007,328.579987,319.51 +334.160004,328.679993,333.410004,322.17 +335.820007,331.429993,335.420013,325.13 +336.320007,334.100006,335.950012,325.89 +337.589996,334.920013,335.290009,325.89 +335.350006,332.220001,333.600006,325.89 +336.619995,332.200012,336.390015,325.89 +340.380005,334.089996,335.899994,325.89 +341.679993,335.540009,339.820007,327.49 +341.299988,337.660004,338.309998,330.23 +339.279999,336.619995,338.670013,330.23 +341.350006,336.369995,338.609985,330.31 +338.850006,335.660004,336.959991,330.31 +337.470001,334.190002,335.25,330.31 +335.829987,331.839996,334.119995,330.31 +336.730011,334.369995,335.339996,330.31 +336.399994,332.609985,334.149994,330.31 +337.01001,334.140015,336.910004,330.31 +342.5,338.399994,341,332.38 +342.079987,338.410004,342,332.41 +341.890015,338.700012,341.559998,332.76 +341.799988,338.910004,341.459991,333.43 +344.070007,340.390015,340.899994,334.72 +343.480011,339.869995,341.130005,334.72 +343.839996,340.929993,343.369995,334.72 +346.440002,344.309998,345.350006,335.56 +346.209991,343.450012,343.540009,335.56 +345,340.51001,341.089996,335.56 +345.720001,341.089996,344.25,335.61 +347.25,343.540009,345.339996,337.72 +345.380005,341.98999,342.429993,337.72 +346.790009,342.850006,346.609985,337.72 +347.619995,345.100006,345.76001,338 +351.190002,346.279999,349.630005,339.67 +349.660004,345.540009,347.579987,339.67 +351.089996,347.519989,349.799988,339.67 +351.269989,348.600006,349.309998,339.67 +351,348.320007,349.809998,339.67 +352.329987,350.209991,351.959991,341.35 +353.420013,351.25,352.26001,342.52 +352.890015,349.690002,351.190002,342.52 +354.470001,349.420013,353.809998,343.71 +355.109985,349.390015,349.98999,344.84 +364.630005,355.149994,362.579987,353.77 +364.25,358.850006,363.730011,354.88 +364.429993,356.059998,358.019989,354.88 +362.350006,355.920013,356.980011,354.88 +359.25,353.200012,358.350006,354.88 +358.950012,356.809998,358.480011,354.88 +357.920013,353.670013,354.5,368.22 +358.720001,353.380005,354.109985,368.22 +356.299988,351.880005,353.190002,368.22 +354.299988,351.25,352.559998,368.22 +354.179993,349.609985,352.089996,366.53 +353.5,349.660004,350.570007,363.03 +354.320007,351.540009,354.26001,360.55 +357.230011,354.130005,354.299988,360.55 +357.350006,352.920013,355.929993,359.99 +358.410004,354.529999,355.549988,359.99 +358.589996,354.01001,358.290009,359.99 +362.679993,358.600006,361.059998,353.62 +362.470001,359.25,360.200012,353.62 +363.390015,360.600006,362.459991,353.62 +366.470001,360,360.470001,354.1 +362.799988,359.26001,361.670013,354.1 +363.299988,360.869995,361.799988,354.1 +364.829987,361.769989,363.149994,354.1 +366.609985,364.51001,365.519989,355.1 +370.429993,365.470001,367.779999,357.82 +370.839996,365.970001,367.820007,358.74 +370.220001,368.26001,369.5,359.8 +370.200012,367.519989,367.859985,359.8 +371.329987,367.790009,370.429993,360.86 +373.339996,368.459991,370.480011,363.35 +371.339996,366.730011,366.820007,363.35 +367.200012,362.940002,363.279999,374.37 +363.420013,359.76001,360.160004,371.16 +361.890015,357.269989,361.709991,368.99 +360.790009,357.950012,359.420013,368.42 +360.519989,354.269989,357.779999,367.09 +359.470001,356.670013,357.059998,367.09 +357.5,348.549988,350.299988,365.21 +350,345.410004,348.079987,359.98 +348.23999,342.130005,343.040009,357.47 +344.01001,339.51001,343.690002,354.84 +345.940002,342.369995,345.059998,354.84 +348.76001,341.859985,346.339996,354.84 +345.899994,342.829987,345.450012,354.84 +349.51001,345.5,348.559998,354.84 +349.600006,344.920013,348.429993,354.84 +348.660004,343.019989,345.660004,354.84 +348.440002,343.880005,345.089996,354.84 +349.940002,345.829987,346.230011,354.84 +348.410004,344.149994,345.390015,354.84 +344.829987,339.959991,340.890015,352.9 +342.690002,338.450012,338.660004,351.18 +340,334.350006,335.859985,347.5 +338.880005,333.48999,336.839996,347.5 +339.850006,337.769989,338.630005,347.5 +339.619995,336.549988,336.899994,347.5 +338.320007,335.459991,336.160004,347.5 +336.190002,330.579987,331.709991,345.13 +338.359985,332.179993,337.410004,345.13 +341.48999,337.5,341.329987,345.13 +345.329987,340.579987,343.75,345.13 +349.390015,344.5,349.019989,337.41 +354.350006,349.790009,351.809998,342.83 +354.029999,344.059998,346.630005,342.83 +346.950012,344.299988,346.170013,342.83 +348,344.690002,346.299988,342.83 +350.109985,346.880005,348.179993,342.83 +351.200012,348.600006,350.559998,342.83 +350.649994,348.809998,350.01001,342.83 +355.950012,351.25,354.25,342.83 +357.309998,354.480011,356.790009,342.83 +360,357.230011,359.859985,348.38 +360.559998,358.070007,358.929993,352.07 +362.609985,358.179993,361.329987,356.17 +363.029999,360.25,361,356.65 +362.459991,360.049988,361.799988,356.65 +363.190002,361.23999,362.679993,356.65 +362.640015,359.579987,361.339996,356.65 +362.119995,359.209991,360.049988,356.65 +361.519989,358.299988,358.690002,356.65