MACDを作る
MACDの作成
MACDのサンプルコードは下記です。
export default (): ContainerIndicator<{
fastEmaPeriod: number,
slowEmaPeriod: number,
signalSmaPeriod: number,
macdColor: string,
signalColor: string,
osciColor: string,
initialHeight: number | string
}, {
macdBuffer: IndicatorBuffer
signalBuffer: IndicatorBuffer
osciBuffer: IndicatorBuffer
}> => {
return {
type: "c"
, name: "tutor.MACD"
, onInit() {
const { initialHeight, osciColor, macdColor, signalColor } = this.params;
this.initialHeight = initialHeight;
const fastEmaBuffer = this.addWorkBuffer();
const slowEmaBuffer = this.addWorkBuffer();
this.macdBuffer = this.addLineBuffer({ lineColor: macdColor, lineWidth: 2 });
this.signalBuffer = this.addLineBuffer({ lineColor: signalColor, lineWidth: 2 });
this.osciBuffer = this.addHistgramBuffer({ backgroundColor: osciColor, baseValue: 0 }); //1
this.shortName = "MACD";
this.digits = 0;
this.addPercentLine(0, "darkgray")
this.onChartChange = ({ index, closes }) => {
const macdBuffer = this.macdBuffer,
signalBuffer = this.signalBuffer,
osciBuffer = this.osciBuffer,
{ fastEmaPeriod, slowEmaPeriod, signalSmaPeriod } = this.params;
closes.ema(fastEmaBuffer, fastEmaPeriod, index);
closes.ema(slowEmaBuffer, slowEmaPeriod, index)
const macdVal = fastEmaBuffer.get(index) - slowEmaBuffer.get(index);
macdBuffer.set(index, macdVal);
const signalVal = macdBuffer.ema(signalBuffer, signalSmaPeriod, index, slowEmaPeriod)
osciBuffer.set(index, macdVal - signalVal);
}
this.getDisplayData = (index) => {
return {
macd: this.macdBuffer.get(index),
signal: this.signalBuffer.get(index),
osci: this.osciBuffer.get(index)
}
}
}
, params:
{
fastEmaPeriod: 12,
slowEmaPeriod: 26,
signalSmaPeriod: 9,
macdColor: "green",
signalColor: "cyan",
osciColor: "gray",
initialHeight: "25%"
}
}
}
1 | 価格の変動を棒グラフで表すにはcreateHisgramBuffer関数を使ってHistgramBufferを作成します。 |
---|