|
From: Márcio V. d. S. <mv...@us...> - 2007-05-18 19:25:24
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/indicator/strategy In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv4018/src/test/net/sf/tail/indicator/strategy Added Files: IndicatorOverIndicatorStrategy.java IndicatorOverIndicatorStrategyTest.java StopDecoratorStrategy.java Log Message: começando fase 2 (Strategy, Operation e Runner) --- NEW FILE: StopDecoratorStrategy.java --- package net.sf.tail.indicator.strategy; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; public class StopDecoratorStrategy implements Strategy { private Strategy strategy; private double loss; public StopDecoratorStrategy(double loss, Strategy strategy) { this.strategy = strategy; this.loss= loss; // 0.05? 5? } public Operation shouldEnter(int index) { return strategy.shouldEnter(index); } public Operation shouldExit(Operation entry, int index) { //if( perdi X%) return strategy.shouldExit(entry, index); } } --- NEW FILE: IndicatorOverIndicatorStrategy.java --- package net.sf.tail.indicator.strategy; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; public class IndicatorOverIndicatorStrategy implements Strategy { private Indicator<Double> first; private Indicator<Double> second; public IndicatorOverIndicatorStrategy(Indicator<Double> first, Indicator<Double> second) { this.first = first; this.second = second; } public Operation shouldEnter(int index) { if(first.getValue(index).compareTo(second.getValue(index)) < 0) { return new Operation(index, OperationType.BUY); } return null; } public Operation shouldExit(Operation entry, int index) { if(first.getValue(index).compareTo(second.getValue(index)) > 0) { return new Operation(index, OperationType.SELL); } return null; } } --- NEW FILE: IndicatorOverIndicatorStrategyTest.java --- package net.sf.tail.indicator.strategy; import static org.junit.Assert.*; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import org.junit.After; import org.junit.Before; import org.junit.Test; public class IndicatorOverIndicatorStrategyTest { private Indicator<Double> first; private Indicator<Double> second; @Before public void setUp() throws Exception { first = new Indicator<Double>() { double values[] = {4,7,9,6,3,2}; public Double getValue(int index) { return values[index]; } }; // mudar para SAmpleIndicator (no pacote de testes mesmo) second = new Indicator<Double>() { double values[] = {3,6,10,8,2,1}; public Double getValue(int index) { return values[index]; } }; } @Test public void testOverIndicators() { Strategy s = new IndicatorOverIndicatorStrategy(first, second); assertEquals(null, s.shouldEnter(0)); assertEquals(null, s.shouldEnter(1)); Operation buy = s.shouldEnter(2); assertNotNull(buy); assertEquals(OperationType.BUY, buy.getType()); assertEquals(null, s.shouldExit(buy, 3)); Operation sell = s.shouldExit(buy, 4); assertNotNull(sell); assertEquals(OperationType.SELL, sell.getType()); } @After public void tearDown() throws Exception { } } |