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 {
}
}
|