動機
TradingViewのスクリプトで、チャート機能を追加できるPainが面白そうなので、何か実装して、試してみたい。
「わたしが理解下パンパカパン」を勝手に実装しているので、苦情、公開停止要求がきたら、消します。
はじめ
相場のトレンドを見る方法として、相場師朗氏が紹介しているパンパカパンをTradingViewのペインで実装する。
- 移動平均線5日、20位、60日、100日、300日の間を塗りつぶす
- 移動平均線5日、20位、60日、100日の傾きを数値化
移動平均線5日、20位、60日、100日、300日の間を塗りつぶす
以下のコードを、画面下部のペインエディタにコピペして適当な名前をつけて保存。チャートに追加で表示できます。
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © sktn3
//@version=4
study( "SMAcloud" ,overlay=true )
price = input( close ,title="SMAの対象" )
length1 = input( 5 ,title="SMA1の期間" )
length2 = input( 20 ,title="SMA2の期間" )
length3 = input( 60 ,title="SMA3の期間" )
length4 = input( 100 ,title="SMA4の期間" )
length5 = input( 300 ,title="SMA4の期間" )
sma1 = sma ( price ,length1 )
sma2 = sma ( price ,length2 )
sma3 = sma ( price ,length3 )
sma4 = sma ( price ,length4 )
sma5 = sma ( price ,length5 )
p1 = plot( sma1 ,linewidth=2, transp=0, color=color.blue)
p2 = plot( sma2 ,linewidth=2, transp=10, color=color.orange)
p3 = plot( sma3 ,linewidth=2, transp=30, color=color.purple)
p4 = plot( sma4 ,linewidth=2, transp=20, color=color.lime)
p5 = plot( sma5 ,linewidth=4, transp=40, color=color.red)
fill( p1 ,p2 ,color = sma1 > sma2 ? color.orange : color.blue, transp=90 )
fill( p2 ,p3 ,color = sma2 > sma3 ? color.purple : color.orange, transp=94 )
fill( p3 ,p4 ,color = sma3 > sma4 ? color.lime : color.purple, transp=96 )
fill( p4 ,p5 ,color = sma4 > sma5 ? color.red : color.lime, transp=98 )
//25日移動平均線
sma25 = sma ( price ,25 )
plot( sma25 ,linewidth=2, transp=20 ,color=#aa00ff, style=plot.style_circles)
上記コードで、チャートにそれぞれの単純移動平均線と、5日と20日、20日と60日、100日と300日の間が塗りつぶされる。
それぞれが交差している場合、赤色で塗りつぶしている。
移動平均線5日、20位、60日、100日、300日の傾きを数値化
以下のコードを、画面下部のペインエディタにコピペして適当な名前をつけて保存。チャートに追加で表示できます。
//@version=4
study("ppp5,20,60,100,300")
pppL1 = 1
pppL2 = 2
pppL3 = 3
pppL4 = 3.4
pppL5 = 3.8
pppAllMax = pppL1 +pppL2 +pppL3 +pppL4 +pppL5
pppSubMax = pppL1 +pppL2 +pppL3 +pppL4 -pppL5
hline(0, title='zero', color=color.black, linestyle=hline.style_dotted, linewidth=2)
trend_sma(x, y,z) =>
sma(x,y)[0]-sma(x,y)[1] >= 0 ? z : z*-1
//dt = 0.0
//for i = 0 to y
// dt := dt + x[i]-x[i+1]
//dt >= 0 ? z : z*-1
ppp_sma5 = trend_sma(close, 5, pppL1)
ppp_sma20 = trend_sma(close, 20, pppL2)
ppp_sma60 = trend_sma(close, 60, pppL3)
ppp_sma100 = trend_sma(close, 100, pppL4)
ppp_sma300 = trend_sma(close, 300, pppL5)
plot(ppp_sma5, title='ppp_sma5', color=color.blue)
plot(ppp_sma20, title='ppp_sma20', color=color.green)
plot(ppp_sma60, title='ppp_sma60', color=color.orange)
plot(ppp_sma100, title='ppp_sma100', color=color.purple)
plot(ppp_sma300, title='ppp_sma300', color=color.navy)
ppp_smaAll = ppp_sma5+ ppp_sma20+ ppp_sma60+ ppp_sma100+ ppp_sma300
plot( ppp_smaAll, title='ppp_smaAll', join=false, linewidth=2, color=color.red)
//背景色塗り
u_limit = input(pppAllMax, "upper limit")
l_limit = input(-1*pppAllMax, "lower limit")
u_plot = plot(u_limit)
l_plot = plot(l_limit)
fill(u_plot, l_plot,
color = ppp_smaAll==pppAllMax? color.lime : ppp_smaAll==-1*pppAllMax? color.purple : ppp_smaAll<=-1*pppSubMax? color.red: ppp_smaAll>=pppSubMax? color.green :color.gray,
transp = 70,
title = "fill upper-lower line")
全ての移動平均線が上向きなら、ライム色
もうすうぐライム色になりそうなら、緑色
全ての移動平均線が下向きなら、紫色
もうすぐ紫色になりそうなら赤色
に背景色を色分けする
おわり
上記の利用は自己責任です。
TradingViewのPainを遊ぶ題材として、実装してみました。
なお、Podcastで相場師朗氏の番組を拝聴しており、本も買って熟読中の今日この頃です。