From ef59e1eb5e8d49fa05c8813a2026c3775dc60f8e Mon Sep 17 00:00:00 2001 From: Presbyter Date: Thu, 23 Jul 2026 21:52:26 +0800 Subject: [PATCH 1/2] fix: Fixed an error in the MFI indicator calculation. --- volume/mfi.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/volume/mfi.go b/volume/mfi.go index 0cf090b2..5742622b 100644 --- a/volume/mfi.go +++ b/volume/mfi.go @@ -51,15 +51,16 @@ func NewMfiWithPeriod[T helper.Number](period int) *Mfi[T] { // ComputeWithContext function takes a channel of numbers and computes the MFI. func (m *Mfi[T]) ComputeWithContext(ctx context.Context, highs, lows, closings, volumes <-chan T) <-chan T { + // TP = (high + low + close) / 3 + tpSplice := helper.DuplicateWithContext(ctx, + m.TypicalPrice.ComputeWithContext(ctx, highs, lows, closings), + 2) + // Raw Money Flow = Typical Price * Volume - rawMoneyFlowSplice := helper.DuplicateWithContext(ctx, helper.MultiplyWithContext(ctx, m.TypicalPrice.ComputeWithContext(ctx, highs, lows, closings), - volumes, - ), - 2, - ) + rawMoneyFlow := helper.MultiplyWithContext(ctx, tpSplice[0], volumes) - moneyFlowSplice := helper.DuplicateWithContext(ctx, helper.MultiplyWithContext(ctx, helper.SignWithContext(ctx, helper.ChangeWithContext(ctx, rawMoneyFlowSplice[0], 1)), - helper.SkipWithContext(ctx, rawMoneyFlowSplice[1], 1), + moneyFlowSplice := helper.DuplicateWithContext(ctx, helper.MultiplyWithContext(ctx, helper.SignWithContext(ctx, helper.ChangeWithContext(ctx, tpSplice[1], 1)), + helper.SkipWithContext(ctx, rawMoneyFlow, 1), ), 2, ) From fc21405accff2e828c3a90e8946ed726127ae25e Mon Sep 17 00:00:00 2001 From: Onur Cinar Date: Thu, 23 Jul 2026 17:11:21 +0200 Subject: [PATCH 2/2] Update MFI test data and fix comment formatting The mfi.csv was missing the Close column, causing the test to pass with Close=0 for all rows. Added the Close column and regenerated expected values. Also updated the MFI strategy expected data and fixed tab-after-comment-slash formatting in mfi.go. --- .../testdata/money_flow_index_strategy.csv | 42 +- volume/mfi.go | 7 +- volume/testdata/mfi.csv | 504 +++++++++--------- 3 files changed, 277 insertions(+), 276 deletions(-) diff --git a/strategy/volume/testdata/money_flow_index_strategy.csv b/strategy/volume/testdata/money_flow_index_strategy.csv index 792409eb..c8471971 100644 --- a/strategy/volume/testdata/money_flow_index_strategy.csv +++ b/strategy/volume/testdata/money_flow_index_strategy.csv @@ -56,6 +56,7 @@ Action 0 0 0 +1 0 0 0 @@ -89,6 +90,15 @@ Action 0 0 0 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 0 0 0 @@ -124,7 +134,11 @@ Action 0 0 0 +-1 +-1 0 +-1 +-1 0 0 0 @@ -180,6 +194,9 @@ Action 0 0 0 +-1 +-1 +-1 0 0 0 @@ -193,8 +210,10 @@ Action 0 0 0 +1 0 0 +1 0 0 0 @@ -228,25 +247,6 @@ Action 0 0 0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 +-1 +-1 0 diff --git a/volume/mfi.go b/volume/mfi.go index 5742622b..b06fd273 100644 --- a/volume/mfi.go +++ b/volume/mfi.go @@ -51,12 +51,13 @@ func NewMfiWithPeriod[T helper.Number](period int) *Mfi[T] { // ComputeWithContext function takes a channel of numbers and computes the MFI. func (m *Mfi[T]) ComputeWithContext(ctx context.Context, highs, lows, closings, volumes <-chan T) <-chan T { - // TP = (high + low + close) / 3 + // TP = (High + Low + Close) / 3 tpSplice := helper.DuplicateWithContext(ctx, m.TypicalPrice.ComputeWithContext(ctx, highs, lows, closings), - 2) + 2, + ) - // Raw Money Flow = Typical Price * Volume + // Raw Money Flow = Typical Price * Volume rawMoneyFlow := helper.MultiplyWithContext(ctx, tpSplice[0], volumes) moneyFlowSplice := helper.DuplicateWithContext(ctx, helper.MultiplyWithContext(ctx, helper.SignWithContext(ctx, helper.ChangeWithContext(ctx, tpSplice[1], 1)), diff --git a/volume/testdata/mfi.csv b/volume/testdata/mfi.csv index 1fb0a984..8e73704b 100644 --- a/volume/testdata/mfi.csv +++ b/volume/testdata/mfi.csv @@ -1,252 +1,252 @@ -High,Low,Volume,Mfi -318.600006,308.700012,7919700,0.00 -319.559998,313.299988,4351600,0.00 -316.380005,312.75,3025700,0.00 -315.660004,308.730011,3835800,0.00 -310.290009,306.350006,3877400,0.00 -309.380005,304.920013,4130800,0.00 -307.48999,305.089996,2351700,0.00 -308.339996,304.709991,3326000,0.00 -311.910004,305.459991,4366700,0.00 -318.910004,310.820007,5042800,0.00 -316.359985,308.399994,4056900,0.00 -306.959991,299.450012,5103900,0.00 -302.470001,297.76001,8305700,0.00 -301.480011,297.149994,3842200,0.00 -304.190002,297,3090700,57.95 -308.540009,304.160004,3264600,64.84 -306.5,297.640015,3560100,70.44 -306.570007,300.929993,2460400,65.36 -308.579987,304.649994,2730900,71.67 -307.459991,303.26001,2628200,66.01 -309.380005,305.23999,2846200,70.64 -309.040009,305.619995,3298300,70.63 -312.390015,307.380005,3549900,70.19 -316.890015,311.25,5121200,70.23 -314.230011,310,3416300,71.10 -320.160004,313.380005,3647900,70.38 -320.5,314.75,4397400,68.18 -316.799988,313.339996,3049100,69.07 -320.570007,316.600006,2999500,68.94 -321.320007,317.720001,3070300,68.90 -318.420013,315.790009,2773000,62.36 -318.519989,314.25,3478900,68.34 -315.540009,307.75,3406000,61.72 -307.23999,303.859985,3614600,67.73 -310.01001,304.359985,3770100,68.32 -312.730011,306.850006,3086700,62.03 -312.829987,307.5,2234300,56.41 -312.549988,307.709991,2299800,53.66 -313.679993,309.579987,2856600,60.69 -311.730011,308.339996,3031200,60.07 -309.51001,306.809998,3474600,59.11 -311.859985,305.790009,3653400,66.65 -312.670013,306.380005,3518300,66.01 -312.600006,308.299988,4421400,66.95 -311.549988,305.920013,5385700,74.57 -308.799988,305.600006,2973100,68.05 -314.149994,306.630005,3786700,75.44 -313.410004,308.01001,3370000,68.27 -311.420013,306.98999,3461200,68.08 -309.980011,305.279999,2808000,68.51 -313.73999,309.619995,3261500,73.83 -314.100006,309.040009,2907100,68.18 -310.369995,308.279999,2410700,62.90 -310.200012,306.869995,2801700,62.72 -308.410004,305.480011,2720500,56.43 -307.299988,300.5,4131100,56.81 -305.269989,301.769989,2899500,57.62 -305.559998,300.25,2736400,50.09 -305.619995,300.01001,3656200,48.04 -305.779999,302.01001,3652200,55.45 -306.149994,303.410004,4736800,56.30 -305.619995,302.079987,3397200,56.36 -308.100006,301.450012,3152100,49.08 -312.660004,308.5,4493000,56.97 -317.290009,312.429993,4889800,58.48 -316.5,310.230011,3609700,57.61 -312.679993,309.25,2701600,57.25 -313.179993,303.940002,3929500,58.21 -306.720001,301.920013,5294800,65.30 -306.589996,300.76001,4993000,56.71 -307.549988,301.679993,5251500,63.59 -300.549988,294.899994,7162800,70.59 -304.429993,295.359985,6325700,62.02 -301.299988,292.420013,15609400,67.85 -301.51001,295.059998,6056000,60.60 -305.630005,302.25,4724000,59.57 -307.049988,299.649994,3086300,59.63 -302.079987,296.299988,4015800,59.30 -299.5,293.390015,3905400,53.61 -303.209991,298.970001,3833900,53.56 -302.720001,300.589996,2436500,53.80 -305.380005,303.359985,2650000,52.98 -307.470001,302.579987,2694000,51.28 -308.809998,304.98999,5020200,58.27 -311.5,308.23999,4862300,51.17 -311,307.070007,2740300,43.97 -311.070007,307.850006,2314500,46.66 -313.220001,309.049988,3131400,34.17 -313.700012,310.329987,2330900,36.71 -315.940002,311.769989,3109500,44.82 -316.920013,313.720001,2662600,45.13 -318.809998,313.26001,3323300,44.53 -321.880005,318.119995,2975400,45.21 -323.980011,319,3425500,53.48 -325.720001,322.5,3581200,60.14 -324.549988,322.76001,2406200,54.49 -324.369995,321.320007,2428400,54.37 -324.850006,321.609985,2405700,45.84 -326.399994,324.299988,2261900,48.68 -327.100006,324.109985,2552200,55.44 -323.73999,319,2718600,61.70 -326.910004,322.109985,2950000,61.65 -328.809998,325.190002,2909600,60.57 -331.839996,328.570007,2461300,53.61 -330.25,322.76001,3366500,61.07 -328.070007,323.059998,2653800,53.69 -325.98999,317.410004,3185600,61.42 -325.160004,322.619995,3869500,61.87 -330.690002,325.790009,3302400,53.19 -326.880005,323.480011,2283400,53.34 -326.160004,320.149994,2639800,53.59 -322.959991,319.809998,2548900,53.42 -324.23999,320.540009,1937300,53.89 -323.829987,320.130005,2190000,53.43 -324.690002,322.359985,2139500,47.21 -328.26001,324.820007,3046800,47.36 -329.980011,325.850006,2805000,47.48 -333.940002,329.119995,4322900,56.17 -331.48999,328.350006,2762500,48.48 -329.269989,322.970001,4029300,56.67 -323,319.559998,3071500,49.15 -320.559998,317.709991,4245400,49.53 -322.630005,319.670013,3229400,49.71 -322.470001,319,3231800,48.64 -322.410004,319.390015,6175000,52.55 -323.220001,319.529999,3375300,51.63 -330.670013,324.420013,3962200,57.66 -330.890015,327.570007,3091800,52.15 -334.160004,328.679993,3181400,57.42 -335.820007,331.429993,3727800,58.05 -336.320007,334.100006,2759300,58.03 -337.589996,334.920013,2619200,51.14 -335.350006,332.220001,2873400,56.91 -336.619995,332.200012,2953000,56.03 -340.380005,334.089996,5164600,63.97 -341.679993,335.540009,4095200,55.70 -341.299988,337.660004,8486200,65.73 -339.279999,336.619995,3751700,64.92 -341.350006,336.369995,4507000,64.05 -338.850006,335.660004,3303300,63.95 -337.470001,334.190002,4451700,64.33 -335.829987,331.839996,3220900,64.13 -336.730011,334.369995,2625600,59.00 -336.399994,332.609985,3175100,58.59 -337.01001,334.140015,2498900,58.87 -342.5,338.399994,4520600,65.01 -342.079987,338.410004,2047400,60.74 -341.890015,338.700012,2870700,60.72 -341.799988,338.910004,2548300,53.84 -344.070007,340.390015,2940800,60.87 -343.480011,339.869995,2966500,56.12 -343.839996,340.929993,2754900,57.33 -346.440002,344.309998,2897100,55.78 -346.209991,343.450012,2831800,56.31 -345,340.51001,2669300,47.84 -345.720001,341.089996,2359500,48.78 -347.25,343.540009,2565300,55.31 -345.380005,341.98999,3032100,55.24 -346.790009,342.850006,3146000,62.14 -347.619995,345.100006,3301900,61.02 -351.190002,346.279999,3269400,59.06 -349.660004,345.540009,3014000,51.72 -351.089996,347.519989,2682900,51.46 -351.269989,348.600006,2706700,51.25 -351,348.320007,2473300,44.43 -352.329987,350.209991,2621600,51.22 -353.420013,351.25,2293300,44.55 -352.890015,349.690002,3085900,52.15 -354.470001,349.420013,2942000,51.69 -355.109985,349.390015,2842000,50.98 -364.630005,355.149994,5379900,54.42 -364.25,358.850006,3428800,46.85 -364.429993,356.059998,4424600,48.57 -362.350006,355.920013,3098800,41.37 -359.25,353.200012,2475200,42.06 -358.950012,356.809998,1990700,43.00 -357.920013,353.670013,2863700,49.49 -358.720001,353.380005,2196100,43.72 -356.299988,351.880005,2847700,49.96 -354.299988,351.25,2870600,50.27 -354.179993,349.609985,2540000,49.98 -353.5,349.660004,2363300,43.63 -354.320007,351.540009,2239500,44.35 -357.230011,354.130005,2521100,50.76 -357.350006,352.920013,2136800,40.87 -358.410004,354.529999,1728000,42.84 -358.589996,354.01001,2285600,39.17 -362.679993,358.600006,3058300,48.30 -362.470001,359.25,2842300,47.73 -363.390015,360.600006,2637900,46.81 -366.470001,360,2976800,47.07 -362.799988,359.26001,2655800,46.42 -363.299988,360.869995,3263800,47.14 -364.829987,361.769989,3019100,39.04 -366.609985,364.51001,2921600,38.53 -370.429993,365.470001,2898400,37.85 -370.839996,365.970001,3261400,45.42 -370.220001,368.26001,3670100,47.17 -370.200012,367.519989,11595000,61.87 -371.329987,367.790009,3130900,60.05 -373.339996,368.459991,2603700,55.15 -371.339996,366.730011,2268400,49.91 -367.200012,362.940002,3178600,55.86 -363.420013,359.76001,3969400,62.05 -361.890015,357.269989,2556200,56.80 -360.790009,357.950012,3063900,62.22 -360.519989,354.269989,3535400,62.39 -359.470001,356.670013,2731700,62.78 -357.5,348.549988,4932900,69.56 -350,345.410004,3527600,68.99 -348.23999,342.130005,3151700,63.23 -344.01001,339.51001,3244600,62.76 -345.940002,342.369995,3027300,48.74 -348.76001,341.859985,3174700,55.80 -345.899994,342.829987,2762800,55.85 -349.51001,345.5,2858600,61.47 -349.600006,344.920013,2620800,55.12 -348.660004,343.019989,2677500,53.63 -348.440002,343.880005,2804800,59.76 -349.940002,345.829987,3117800,59.72 -348.410004,344.149994,2998600,52.27 -344.829987,339.959991,2977100,52.13 -342.690002,338.450012,2741300,42.95 -340,334.350006,3466100,51.28 -338.880005,333.48999,2794200,51.81 -339.850006,337.769989,2355700,44.98 -339.619995,336.549988,2623200,51.96 -338.320007,335.459991,2685400,51.27 -336.190002,330.579987,3608200,59.07 -338.359985,332.179993,2634700,52.28 -341.48999,337.5,3066900,59.33 -345.329987,340.579987,2789700,52.50 -349.390015,344.5,3433700,53.24 -354.350006,349.790009,4409100,54.75 -354.029999,344.059998,5486200,64.07 -346.950012,344.299988,3062900,63.91 -348,344.690002,2602400,64.04 -350.109985,346.880005,3052100,63.80 -351.200012,348.600006,3701100,70.62 -350.649994,348.809998,2196200,70.76 -355.950012,351.25,3387500,71.33 -357.309998,354.480011,3572900,71.97 -360,357.230011,2822500,65.36 -360.559998,358.070007,3260000,71.35 -362.609985,358.179993,3215300,64.54 -363.029999,360.25,2918800,64.16 -362.459991,360.049988,2110200,58.50 -363.190002,361.23999,1282000,52.43 -362.640015,359.579987,2580300,49.11 -362.119995,359.209991,2953500,56.64 -361.519989,358.299988,3141100,63.61 +High,Low,Close,Volume,Mfi +318.600006,308.700012,318.600006,7919700,0.00 +319.559998,313.299988,315.839996,4351600,0.00 +316.380005,312.75,316.149994,3025700,0.00 +315.660004,308.730011,310.570007,3835800,0.00 +310.290009,306.350006,307.779999,3877400,0.00 +309.380005,304.920013,305.820007,4130800,0.00 +307.48999,305.089996,305.98999,2351700,0.00 +308.339996,304.709991,306.390015,3326000,0.00 +311.910004,305.459991,311.450012,4366700,0.00 +318.910004,310.820007,312.329987,5042800,0.00 +316.359985,308.399994,309.290009,4056900,0.00 +306.959991,299.450012,301.910004,5103900,0.00 +302.470001,297.76001,300,8305700,0.00 +301.480011,297.149994,300.029999,3842200,0.00 +304.190002,297,302,3090700,34.70 +308.540009,304.160004,307.820007,3264600,33.32 +306.5,297.640015,302.690002,3560100,33.09 +306.570007,300.929993,306.48999,2460400,38.26 +308.579987,304.649994,305.549988,2730900,43.99 +307.459991,303.26001,303.429993,2628200,45.23 +309.380005,305.23999,309.059998,2846200,50.06 +309.040009,305.619995,308.899994,3298300,43.96 +312.390015,307.380005,309.910004,3549900,43.10 +316.890015,311.25,314.549988,5121200,43.19 +314.230011,310,312.899994,3416300,43.71 +320.160004,313.380005,318.690002,3647900,52.08 +320.5,314.75,315.529999,4397400,55.95 +316.799988,313.339996,316.350006,3049100,56.68 +320.570007,316.600006,320.369995,2999500,56.76 +321.320007,317.720001,318.929993,3070300,56.69 +318.420013,315.790009,317.640015,2773000,57.47 +318.519989,314.25,314.859985,3478900,51.02 +315.540009,307.75,308.299988,3406000,44.67 +307.23999,303.859985,305.230011,3614600,43.78 +310.01001,304.359985,309.869995,3770100,44.81 +312.730011,306.850006,310.420013,3086700,51.16 +312.829987,307.5,311.299988,2234300,49.85 +312.549988,307.709991,311.899994,2299800,46.68 +313.679993,309.579987,310.950012,2856600,53.63 +311.730011,308.339996,309.170013,3031200,46.08 +309.51001,306.809998,307.329987,3474600,47.19 +311.859985,305.790009,311.519989,3653400,54.90 +312.670013,306.380005,310.570007,3518300,55.34 +312.600006,308.299988,311.859985,4421400,56.58 +311.549988,305.920013,308.51001,5385700,53.62 +308.799988,305.600006,308.429993,2973100,54.29 +314.149994,306.630005,312.970001,3786700,61.77 +313.410004,308.01001,308.480011,3370000,62.01 +311.420013,306.98999,307.209991,3461200,54.52 +309.980011,305.279999,309.890015,2808000,48.32 +313.73999,309.619995,313.73999,3261500,49.45 +314.100006,309.040009,310.790009,2907100,44.11 +310.369995,308.279999,309.630005,2410700,38.60 +310.200012,306.869995,308.179993,2801700,38.80 +308.410004,305.480011,308.23999,2720500,39.41 +307.299988,300.5,302.720001,4131100,31.45 +305.269989,301.769989,303.160004,2899500,24.45 +305.559998,300.25,303.070007,2736400,15.62 +305.619995,300.01001,304.019989,3656200,24.47 +305.779999,302.01001,304.660004,3652200,32.22 +306.149994,303.410004,305.179993,4736800,33.51 +305.619995,302.079987,304.619995,3397200,33.53 +308.100006,301.450012,307.75,3152100,40.74 +312.660004,308.5,312.450012,4493000,48.95 +317.290009,312.429993,316.970001,4889800,50.74 +316.5,310.230011,311.119995,3609700,49.99 +312.679993,309.25,311.369995,2701600,49.68 +313.179993,303.940002,304.820007,3929500,48.59 +306.720001,301.920013,303.630005,5294800,46.29 +306.589996,300.76001,302.880005,4993000,45.56 +307.549988,301.679993,305.329987,5251500,52.90 +300.549988,294.899994,297.880005,7162800,49.20 +304.429993,295.359985,302.01001,6325700,51.27 +301.299988,292.420013,293.51001,15609400,38.59 +301.51001,295.059998,301.059998,6056000,39.56 +305.630005,302.25,303.850006,4724000,44.95 +307.049988,299.649994,299.730011,3086300,40.94 +302.079987,296.299988,298.369995,4015800,35.32 +299.5,293.390015,298.920013,3905400,29.23 +303.209991,298.970001,302.140015,3833900,34.19 +302.720001,300.589996,302.320007,2436500,37.54 +305.380005,303.359985,305.299988,2650000,41.78 +307.470001,302.579987,305.079987,2694000,47.05 +308.809998,304.98999,308.769989,5020200,54.05 +311.5,308.23999,310.309998,4862300,53.85 +311,307.070007,309.070007,2740300,57.24 +311.070007,307.850006,310.390015,2314500,54.61 +313.220001,309.049988,312.51001,3131400,73.55 +313.700012,310.329987,312.619995,2330900,71.58 +315.940002,311.769989,313.700012,3109500,70.65 +316.920013,313.720001,314.549988,2662600,77.11 +318.809998,313.26001,318.049988,3323300,85.52 +321.880005,318.119995,319.73999,2975400,93.80 +323.980011,319,323.790009,3425500,93.78 +325.720001,322.5,324.630005,3581200,93.96 +324.549988,322.76001,323.089996,2406200,88.39 +324.369995,321.320007,323.820007,2428400,82.74 +324.850006,321.609985,324.329987,2405700,81.74 +326.399994,324.299988,326.049988,2261900,80.61 +327.100006,324.109985,324.339996,2552200,80.72 +323.73999,319,320.529999,2718600,74.01 +326.910004,322.109985,326.230011,2950000,73.98 +328.809998,325.190002,328.549988,2909600,74.44 +331.839996,328.570007,330.170013,2461300,74.11 +330.25,322.76001,325.859985,3366500,66.10 +328.070007,323.059998,323.220001,2653800,58.79 +325.98999,317.410004,320,3185600,51.00 +325.160004,322.619995,323.880005,3869500,51.57 +330.690002,325.790009,326.140015,3302400,51.27 +326.880005,323.480011,324.869995,2283400,51.41 +326.160004,320.149994,322.98999,2639800,51.14 +322.959991,319.809998,322.640015,2548900,44.94 +324.23999,320.540009,322.48999,1937300,44.46 +323.829987,320.130005,323.529999,2190000,50.47 +324.690002,322.359985,323.75,2139500,56.75 +328.26001,324.820007,327.390015,3046800,56.87 +329.980011,325.850006,329.76001,2805000,56.76 +333.940002,329.119995,330.390015,4322900,58.81 +331.48999,328.350006,329.130005,2762500,59.66 +329.269989,322.970001,323.109985,4029300,57.66 +323,319.559998,320.200012,3071500,57.82 +320.559998,317.709991,319.019989,4245400,48.05 +322.630005,319.670013,320.600006,3229400,47.88 +322.470001,319,322.190002,3231800,54.43 +322.410004,319.390015,321.079987,6175000,50.28 +323.220001,319.529999,323.119995,3375300,56.60 +330.670013,324.420013,329.480011,3962200,58.46 +330.890015,327.570007,328.579987,3091800,59.27 +334.160004,328.679993,333.410004,3181400,60.17 +335.820007,331.429993,335.420013,3727800,60.77 +336.320007,334.100006,335.950012,2759300,60.78 +337.589996,334.920013,335.290009,2619200,59.44 +335.350006,332.220001,333.600006,2873400,59.26 +336.619995,332.200012,336.390015,2953000,66.70 +340.380005,334.089996,335.899994,5164600,74.14 +341.679993,335.540009,339.820007,4095200,82.33 +341.299988,337.660004,338.309998,8486200,84.09 +339.279999,336.619995,338.670013,3751700,77.51 +341.350006,336.369995,338.609985,4507000,87.80 +338.850006,335.660004,336.959991,3303300,81.73 +337.470001,334.190002,335.25,4451700,73.84 +335.829987,331.839996,334.119995,3220900,68.12 +336.730011,334.369995,335.339996,2625600,67.81 +336.399994,332.609985,334.149994,3175100,61.65 +337.01001,334.140015,336.910004,2498900,61.47 +342.5,338.399994,341,4520600,62.82 +342.079987,338.410004,342,2047400,67.48 +341.890015,338.700012,341.559998,2870700,62.17 +341.799988,338.910004,341.459991,2548300,60.30 +344.070007,340.390015,340.899994,2940800,59.41 +343.480011,339.869995,341.130005,2966500,47.90 +343.839996,340.929993,343.369995,2754900,55.21 +346.440002,344.309998,345.350006,2897100,53.58 +346.209991,343.450012,343.540009,2831800,54.10 +345,340.51001,341.089996,2669300,56.38 +345.720001,341.089996,344.25,2359500,63.47 +347.25,343.540009,345.339996,2565300,63.49 +345.380005,341.98999,342.429993,3032100,63.59 +346.790009,342.850006,346.609985,3146000,64.24 +347.619995,345.100006,345.76001,3301900,63.18 +351.190002,346.279999,349.630005,3269400,64.36 +349.660004,345.540009,347.579987,3014000,64.04 +351.089996,347.519989,349.799988,2682900,64.22 +351.269989,348.600006,349.309998,2706700,64.07 +351,348.320007,349.809998,2473300,64.76 +352.329987,350.209991,351.959991,2621600,64.70 +353.420013,351.25,352.26001,2293300,64.19 +352.890015,349.690002,351.190002,3085900,63.68 +354.470001,349.420013,353.809998,2942000,70.65 +355.109985,349.390015,349.98999,2842000,63.88 +364.630005,355.149994,362.579987,5379900,66.42 +364.25,358.850006,363.730011,3428800,73.71 +364.429993,356.059998,358.019989,4424600,64.43 +362.350006,355.920013,356.980011,3098800,57.27 +359.25,353.200012,358.350006,2475200,50.82 +358.950012,356.809998,358.480011,1990700,56.68 +357.920013,353.670013,354.5,2863700,50.19 +358.720001,353.380005,354.109985,2196100,49.64 +356.299988,351.880005,353.190002,2847700,49.18 +354.299988,351.25,352.559998,2870600,42.83 +354.179993,349.609985,352.089996,2540000,37.31 +353.5,349.660004,350.570007,2363300,37.94 +354.320007,351.540009,354.26001,2239500,36.91 +357.230011,354.130005,354.299988,2521100,43.26 +357.350006,352.920013,355.929993,2136800,38.30 +358.410004,354.529999,355.549988,1728000,35.31 +358.589996,354.01001,358.290009,2285600,44.29 +362.679993,358.600006,361.059998,3058300,53.42 +362.470001,359.25,360.200012,2842300,52.80 +363.390015,360.600006,362.459991,2637900,53.72 +366.470001,360,360.470001,2976800,62.04 +362.799988,359.26001,361.670013,2655800,55.05 +363.299988,360.869995,361.799988,3263800,63.45 +364.829987,361.769989,363.149994,3019100,71.48 +366.609985,364.51001,365.519989,2921600,78.64 +370.429993,365.470001,367.779999,2898400,85.20 +370.839996,365.970001,367.820007,3261400,85.64 +370.220001,368.26001,369.5,3670100,86.10 +370.200012,367.519989,367.859985,11595000,64.84 +371.329987,367.790009,370.429993,3130900,65.88 +373.339996,368.459991,370.480011,2603700,66.15 +371.339996,366.730011,366.820007,2268400,61.07 +367.200012,362.940002,363.279999,3178600,60.62 +363.420013,359.76001,360.160004,3969400,54.01 +361.890015,357.269989,361.709991,2556200,48.69 +360.790009,357.950012,359.420013,3063900,48.32 +360.519989,354.269989,357.779999,3535400,41.86 +359.470001,356.670013,357.059998,2731700,41.49 +357.5,348.549988,350.299988,4932900,34.57 +350,345.410004,348.079987,3527600,28.85 +348.23999,342.130005,343.040009,3151700,22.86 +344.01001,339.51001,343.690002,3244600,16.11 +345.940002,342.369995,345.059998,3027300,25.87 +348.76001,341.859985,346.339996,3174700,25.59 +345.899994,342.829987,345.450012,2762800,19.55 +349.51001,345.5,348.559998,2858600,25.53 +349.600006,344.920013,348.429993,2620800,25.93 +348.660004,343.019989,345.660004,2677500,26.79 +348.440002,343.880005,345.089996,2804800,33.00 +349.940002,345.829987,346.230011,3117800,40.09 +348.410004,344.149994,345.390015,2998600,40.68 +344.829987,339.959991,340.890015,2977100,34.14 +342.690002,338.450012,338.660004,2741300,36.05 +340,334.350006,335.859985,3466100,36.21 +338.880005,333.48999,336.839996,2794200,36.58 +339.850006,337.769989,338.630005,2355700,43.16 +339.619995,336.549988,336.899994,2623200,36.05 +338.320007,335.459991,336.160004,2685400,28.44 +336.190002,330.579987,331.709991,3608200,27.93 +338.359985,332.179993,337.410004,2634700,27.35 +341.48999,337.5,341.329987,3066900,34.66 +345.329987,340.579987,343.75,2789700,41.50 +349.390015,344.5,349.019989,3433700,42.44 +354.350006,349.790009,351.809998,4409100,44.30 +354.029999,344.059998,346.630005,5486200,41.78 +346.950012,344.299988,346.170013,3062900,41.67 +348,344.690002,346.299988,2602400,47.61 +350.109985,346.880005,348.179993,3052100,54.88 +351.200012,348.600006,350.559998,3701100,61.91 +350.649994,348.809998,350.01001,2196200,56.92 +355.950012,351.25,354.25,3387500,63.33 +357.309998,354.480011,356.790009,3572900,69.70 +360,357.230011,359.859985,2822500,76.80 +360.559998,358.070007,358.929993,3260000,77.21 +362.609985,358.179993,361.329987,3215300,77.37 +363.029999,360.25,361,2918800,77.50 +362.459991,360.049988,361.799988,2110200,76.90 +363.190002,361.23999,362.679993,1282000,75.24 +362.640015,359.579987,361.339996,2580300,80.45 +362.119995,359.209991,360.049988,2953500,80.42 +361.519989,358.299988,358.690002,3141100,72.86