package org.ripple.power.hft;
import org.ripple.power.hft.computer.MACDComputer;
import org.ripple.power.hft.def.HPeriod;
import org.ripple.power.hft.def.IHStatistics;
import org.ripple.power.hft.def.IHStatisticsHistory;
public class MACDCenterlineEntrySignalGenerator extends MACDComputer implements
EntrySignalGenerator {
/**
* >= slowPeriod + 1
*/
private int period;
private int fastPeriod;
private int slowPeriod;
private int signalPeriod;
@Override
public double generateSignal(IHStatistics stat) {
IHStatisticsHistory history = stat.history(period, HPeriod.Day);
double[] close = history.getClosingPrice();
double[][] result = computeMACD(close, fastPeriod, slowPeriod,
signalPeriod);
double[] values = result[0];
int current = values.length - 1;
int yesterday = values.length - 2;
double currentMACD = values[current];
double yesterdayMACD = values[yesterday];
// macd上升,穿过0,买入信号
if (currentMACD > 0 && yesterdayMACD < 0) {
return 1;
}
// madc下降,穿过0,卖出信号
else if (currentMACD < 0 && yesterdayMACD > 0) {
return -1;
} else {
return 0;
}
}
}