前回は、ゴールデンクロスを使った手法のインディケータを作成しましたが、今回はストラテジーを作成して、ゴールデンクロスを使った手法が有効か検証してみます。
ゴールデンクロスを使ったストラテジー
//@version=4
strategy("Dual Moving Average Cross Strategy", overlay=true)
// パラメーターの設定
fastLength = input(14, minval=1)
slowLength = input(20, minval=1)
maType = input(title="MA Type", type=input.string, defval="SMA", options=["SMA", "EMA"])
// 移動平均線の計算
fastMA = maType == "SMA" ? sma(close, fastLength) : ema(close, fastLength)
slowMA = maType == "SMA" ? sma(close, slowLength) : ema(close, slowLength)
// ゴールデンクロスとデッドクロスのシグナル
crossUp = crossover(fastMA, slowMA)
crossDown = crossunder(fastMA, slowMA)
// 現在のポジションの取得
position = strategy.position_size != 0 ? strategy.position_size / abs(strategy.position_size) : 0
// ゴールデンクロスで買い、デッドクロスで売り
// 決済
if (crossUp and position != 0)
strategy.close()
// 反対売買
if (position == 1 and crossDown)
strategy.entry("Sell", strategy.short)
else if (position == -1 and crossUp)
strategy.entry("Buy", strategy.long)
// 移動平均線をプロット
plot(fastMA, color=color.red, title="Fast MA")
plot(slowMA, color=color.blue, title="Slow MA")
// シグナルをプロット
plotshape(crossUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Golden Cross")
plotshape(crossDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Dead Cross")

コメント