/** * The MIT License (MIT) * * Copyright (c) 2014-2017 Marc de Verdelhan & respective authors (see AUTHORS) * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package eu.verdelhan.ta4j.indicators.trackers.keltner; import static eu.verdelhan.ta4j.TATestsUtils.assertDecimalEquals; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import eu.verdelhan.ta4j.Tick; import eu.verdelhan.ta4j.TimeSeries; import eu.verdelhan.ta4j.indicators.simple.ClosePriceIndicator; import eu.verdelhan.ta4j.mocks.MockTick; import eu.verdelhan.ta4j.mocks.MockTimeSeries; public class KeltnerChannelMiddleIndicatorTest { private TimeSeries data; @Before public void setUp() { List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new MockTick(11577.43, 11670.75, 11711.47, 11577.35)); ticks.add(new MockTick(11670.90, 11691.18, 11698.22, 11635.74)); ticks.add(new MockTick(11688.61, 11722.89, 11742.68, 11652.89)); ticks.add(new MockTick(11716.93, 11697.31, 11736.74, 11667.46)); ticks.add(new MockTick(11696.86, 11674.76, 11726.94, 11599.68)); ticks.add(new MockTick(11672.34, 11637.45, 11677.33, 11573.87)); ticks.add(new MockTick(11638.51, 11671.88, 11704.12, 11635.48)); ticks.add(new MockTick(11673.62, 11755.44, 11782.23, 11673.62)); ticks.add(new MockTick(11753.70, 11731.90, 11757.25, 11700.53)); ticks.add(new MockTick(11732.13, 11787.38, 11794.15, 11698.83)); ticks.add(new MockTick(11783.82, 11837.93, 11858.78, 11777.99)); ticks.add(new MockTick(11834.21, 11825.29, 11861.24, 11798.46)); ticks.add(new MockTick(11823.70, 11822.80, 11845.16, 11744.77)); ticks.add(new MockTick(11822.95, 11871.84, 11905.48, 11822.80)); ticks.add(new MockTick(11873.43, 11980.52, 11982.94, 11867.98)); ticks.add(new MockTick(11980.52, 11977.19, 11985.97, 11898.74)); ticks.add(new MockTick(11978.85, 11985.44, 12020.52, 11961.83)); ticks.add(new MockTick(11985.36, 11989.83, 12019.53, 11971.93)); ticks.add(new MockTick(11824.39, 11891.93, 11891.93, 11817.88)); ticks.add(new MockTick(11892.50, 12040.16, 12050.75, 11892.50)); ticks.add(new MockTick(12038.27, 12041.97, 12057.91, 12018.51)); ticks.add(new MockTick(12040.68, 12062.26, 12080.54, 11981.05)); ticks.add(new MockTick(12061.73, 12092.15, 12092.42, 12025.78)); ticks.add(new MockTick(12092.38, 12161.63, 12188.76, 12092.30)); ticks.add(new MockTick(12152.70, 12233.15, 12238.79, 12150.05)); ticks.add(new MockTick(12229.29, 12239.89, 12254.23, 12188.19)); ticks.add(new MockTick(12239.66, 12229.29, 12239.66, 12156.94)); ticks.add(new MockTick(12227.78, 12273.26, 12285.94, 12180.48)); ticks.add(new MockTick(12266.83, 12268.19, 12276.21, 12235.91)); ticks.add(new MockTick(12266.75, 12226.64, 12267.66, 12193.27)); ticks.add(new MockTick(12219.79, 12288.17, 12303.16, 12219.79)); ticks.add(new MockTick(12287.72, 12318.14, 12331.31, 12253.24)); ticks.add(new MockTick(12389.74, 12212.79, 12389.82, 12176.31)); ticks.add(new MockTick(12211.81, 12105.78, 12221.12, 12063.43)); data = new MockTimeSeries(ticks); } @Test public void keltnerChannelMiddleIndicatorTest() { KeltnerChannelMiddleIndicator km = new KeltnerChannelMiddleIndicator(new ClosePriceIndicator(data), 14); assertDecimalEquals(km.getValue(13), 11751.376); assertDecimalEquals(km.getValue(14), 11781.9285); assertDecimalEquals(km.getValue(15), 11807.9634); assertDecimalEquals(km.getValue(16), 11831.6269); assertDecimalEquals(km.getValue(17), 11852.7207); assertDecimalEquals(km.getValue(18), 11857.9486); assertDecimalEquals(km.getValue(19), 11882.2434); assertDecimalEquals(km.getValue(20), 11903.5403); assertDecimalEquals(km.getValue(21), 11924.7029); assertDecimalEquals(km.getValue(22), 11947.0292); assertDecimalEquals(km.getValue(23), 11975.6427); assertDecimalEquals(km.getValue(24), 12009.977); assertDecimalEquals(km.getValue(25), 12040.632); assertDecimalEquals(km.getValue(26), 12065.7864); assertDecimalEquals(km.getValue(27), 12093.4496); assertDecimalEquals(km.getValue(28), 12116.7483); assertDecimalEquals(km.getValue(29), 12131.4005); } }