【pine script】 Stochastic Pop Indicator解読
Trading viewにあったスクリプトを解読していきます。今回はSctochasticラインの色を変える場合に参考になるかと思います。
↑こういった感じで色を変えたい場合
//@version=4
strategy(title="_CM_Stochastic POP Method 1_V1", shorttitle="CM_Stochastic POP Method 1_V1")
length = input(14, minval=1, title="Stochastic Length - Default 14")
smoothK = input(5, minval=1, title="Smooth K - Default 5")
uline = input(60, minval=50, title="Buy Entry/Exit Line")
lline = input(30, maxval=50, title="Sell Entry/Exit Line")
パラメーターの設定です。lengthはstochasticの期間 smoothKはstochasticを滑らかにするsmaの期間滑らかにすると↓のようになります。
ulineは上側の水平線llineは下側の水平線です。
k = sma(stoch(close, high, low, length), smoothK)
こちらがメインのstofchasticの計算です。上記のようにstochasticを滑らかにしています。stoch()でstochasticの計算それをsma()で囲うことで、滑らかにしています。
inputで入力された値(上と下の水平線)を変数に代入します。
col = k >= uline ? color.green : k <= lline ? color.red : color.blue
ラインの色を変更するところです。三項演算子というものでif分と同じようなものです。 ?と:で成り立ってまして。 ?の前が条件?の直後が条件がtrueの場合:の後が条件がfalseの場合です。
条件 ? trueの場合の処理 : falseの場合の処理
という感じです。ここでは二回条件分岐しています。
k がulineより大きければcolor.green(緑) そうでない場合k がllineより小さければcolor.red(赤)どちらでもなければcolor.blue(青)をcolに代入ということになります。
plot(k, title="Stochastic", style=plot.style_line, linewidth=4, color=col)
p1 = plot(uline, title="Upper Line", style=plot.style_line, linewidth=4, color=color.green)
p2 = plot(100, title="100 Line", color=color.white)
fill(p1, p2, title="Long Trade Fill Color", color=color.green, transp=90)
p3 = plot(lline, title="Lower Line", style=plot.style_line, linewidth=4, color=color.red)
p4 = plot(0, title="0 Line", color=color.white)
fill(p1, p3, title="No Trade Fill Color", color=color.blue, transp=90)
fill(p3, p4, title="Short Trade Fill Color", color=color.red, transp=90)
plot(k, title="Stochastic", style=plot.style_line, linewidth=4, color=col)
これがstochasticの本体のラインです。color = colの部分が上で色変更するようにした部分ですこれで色が変わります。
p1は上側のラインp2は100パーセントの上限
p3は下側のラインp4は0パーセントの下限
fillによってp1 p2の間を緑 p1 p3の間を青 p3 p4の間を赤に塗ります。
buy = crossover(k,uline)
sell = crossunder(k,lline)
if(buy)
strategy.entry("longEntry", strategy.long, comment="StochasticLE")
if(sell)
strategy.entry("shortEntry", strategy.short, comment="StochasticSE")
最後にエントリーする場合の条件です。
crossover(k,uline)でkがulineをうわ抜けた場合という意味になります。
crossunder(k,lline)でkがllineをした抜けた場合という意味になります。
あまり成績は良くないですが、フィルターを追加したりすればよくなるかもしれませんね。