新着記事

Thumbnail of new posts 100

: ジョジョ

《あらすじ・ネタバレ注意》祝、映画化!!「岸辺露伴、ルーブルに行く」を徹底解説します!!

おはこんばんちわ!ジョジョ大好き!荒木飛呂彦作品大好き!岸辺露伴は俺の嫁!たこや ...

無料チャートアプリ、TradingViewでインジケーターを自作する ~ ⑤ 最高値からの、ー5%ごとの価格を表示する

trader

おはこんばんわ!たこやきです。

今回は、無料チャートアプリ「TradingView」インジケーター自作第5弾として、

「過去N足間における最高値と、最高値からのー5%ごとの価格を表示する」方法について、解説させていただきます。

「5%下落したら、買い増しする」という逆張り的手法を採用している方には、一目でエントリー価格が分かるので、便利かと思います。

今回は、簡単なコードにはなりますが既存のインディケーターに使えそうなものがないので、一から作ってみました。

5%下落表示を自作する:① 空のスクリプトを表示する

まず、画面下部、「PINEエディター」をクリックしてください。

5%down01

ほとんど何も記載されていない、「名前なしのスクリプト」が出てきました。

5%down02

今回は、ここに実際コードを入力していきました。

5%下落表示を自作する:② コードをコピペする

コピーして少し直すことで使えるようなインディケーターが見つかりませんでした。

下のコードをコピペして使ってください。

//@version=5
indicator("最高値からの下落率", shorttitle="下落%", overlay=true)

//内部変数
len = input(100, title="期間")

high100 = ta.highest(high, len)
high95 = ta.highest(high, len)*0.95
high90 = ta.highest(high, len)*0.90
high85 = ta.highest(high, len)*0.85
high80 = ta.highest(high, len)*0.80
high75 = ta.highest(high, len)*0.75
high70 = ta.highest(high, len)*0.70
high65 = ta.highest(high, len)*0.65
high60 = ta.highest(high, len)*0.60
high55 = ta.highest(high, len)*0.55
high50 = ta.highest(high, len)*0.50

low100 = ta.lowest(low, len)

//ライン表示
plot(high100, title="highest", style=plot.style_stepline, linewidth=2, color=color.red)
plot(high95, title="-5%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high90, title="-10", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high85, title="-15%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high80, title="-20%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high75, title="-25%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high70, title="-30%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high65, title="-35%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high60, title="-40%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high55, title="-45%", style=plot.style_stepline, linewidth=1, color=color.orange)
plot(high50, title="-50%", style=plot.style_stepline, linewidth=1, color=color.orange)

plot(low100, title="lowest", style=plot.style_stepline, linewidth=2, color=color.blue)

//ラベル表示
var
label labelH = na
var label labelD95 = na
var label labelD90 = na
var label labelD85 = na
var label labelD80 = na
var label labelD75 = na
var label labelD70 = na
var label labelD65 = na
var label labelD60 = na
var label labelD55 = na
var label labelD50 = na
var label labelL = na
var label labelN = na

label.delete(labelH)
label.delete(labelD95)
label.delete(labelD90)
label.delete(labelD85)
label.delete(labelD80)
label.delete(labelD75)
label.delete(labelD70)
label.delete(labelD65)
label.delete(labelD60)
label.delete(labelD55)
label.delete(labelD50)
label.delete(labelL)
label.delete(labelN)

labelH := label.new(bar_index + 1, high100, style=label.style_label_left, text= str.tostring(math.round(high100,2)), color=color.red, textcolor = color.white)
labelD95 := label.new(bar_index + 1, high95, style=label.style_label_left, text= "-5% : " + str.tostring(math.round(high95,2)), color=color.orange, textcolor = color.white)
labelD90 := label.new(bar_index + 1, high90, style=label.style_label_left, text= "-10% : " + str.tostring(math.round(high90,2)), color=color.orange, textcolor = color.white)
labelD85 := label.new(bar_index + 1, high85, style=label.style_label_left, text= "-15% : " + str.tostring(math.round(high85,2)), color=color.orange, textcolor = color.white)
labelD80 := label.new(bar_index + 1, high80, style=label.style_label_left, text= "-20% : " + str.tostring(math.round(high80,2)), color=color.orange, textcolor = color.white)
labelD75 := label.new(bar_index + 1, high75, style=label.style_label_left, text= "-25% : " + str.tostring(math.round(high75,2)), color=color.orange, textcolor = color.white)
labelD70 := label.new(bar_index + 1, high70, style=label.style_label_left, text= "-30% : " + str.tostring(math.round(high70,2)), color=color.orange, textcolor = color.white)
labelD65 := label.new(bar_index + 1, high65, style=label.style_label_left, text= "-35% : " + str.tostring(math.round(high65,2)), color=color.orange, textcolor = color.white)
labelD60 := label.new(bar_index + 1, high60, style=label.style_label_left, text= "-40% : " + str.tostring(math.round(high60,2)), color=color.orange, textcolor = color.white)
labelD55 := label.new(bar_index + 1, high55, style=label.style_label_left, text= "-45% : " + str.tostring(math.round(high55,2)), color=color.orange, textcolor = color.white)
labelD50 := label.new(bar_index + 1, high50, style=label.style_label_left, text= "-50% : " + str.tostring(math.round(high50,2)), color=color.orange, textcolor = color.white)
labelL := label.new(bar_index + 1, low100, style=label.style_label_left, text= "-" + str.tostring(math.round((1 - (low100 / high100)) * 100,2)) + "% : " + str.tostring(math.round(low100,2)),color=color.blue, textcolor = color.white)
labelN := label.new(bar_index + 1, close, style=label.style_label_left, text= "-" + str.tostring(math.round((1 - (close / high100)) * 100,2)) + "% : " + str.tostring(math.round(close,2)),color=color.green, textcolor = color.white)
5%down03

こんな感じになったかと思います。

5%下落表示を自作する:③ インディケーターを保存する

最後に、画面真ん中の右側、「保存」をクリックし、完成です。

5%down04

スクリプトの名前は、自動でインディケーター名が入るはずですし、好きな名前に変更しても結構です。

5%下落表示を自作する:④ インディケーターを表示する

_」(パネルを非表示)をクリックして、PINEエディターを下に落としてください。

画面上部、「インジケーター&ストラテジー」をクリックし…

「マイスクリプト」の一番下にある、先ほど作ったスクリプト名をクリック。

下のように、見事に表示されました!

最高値赤線・赤ラベル、最高値から-5%ごとの価格が黄色線・黄色ラベル最安値と最高値からの下落率が青線・青ラベル最終足の終値と最高値からの下落率が緑ラベルで表示されています。

設定をクリックして、設定を変更することもできます。

過去何本分の足をさかのぼって判定するかの期間、表示するラインの種類、ラベル表示の有無と色や線の太さ・透明度、などが変更可能です。

どうでもいいコードの解説

最後に簡単に、コードの内容について解説しておきます。興味のない方はスルーで。

私たこやきは、プログラマー・SE等ではないので、説明や解釈がビミョーに間違っているかもしれないことをご容赦ください。

lenは最高値を判定するうえで、ローソク足さかのぼる本数を指定しています。デフォルトでは100、にしてあります。日足チャートなら100日前まで、ですね。

「high100 = ta.highest(high, len)」は最高値を計算し、high100に代入する式です。ta.highestが最高値を計算してくれる関数。()の中の、左側 high は、毎ローソク足で最高値判定に用いる数値を、高値 high に指定しています(最高値の判定なので、当然ですが…)。len は上記の通り。

「high95」から「high50」は、high100 と同じ ta.highest(high, len)に、0.95~0.5をかけた値、すなわち最高値から-0.5%ごとの値です。

・「low100 = ta.lowest(low, len)」は最安値を計算し、low100に代入する式です。ta.lowestが最高値を計算してくれる関数。()の中の、左側 low は、毎ローソク足で最安値判定に用いる数値を、底値 low に指定しています。

「plot」は、SMA・DMAのときと同様。チャート上に線を表示しろ、という命令です。「high100」「high50」の数値を線として表示し、色は「color=color.○○」で指定。「title」は表示する線の名前。styleは線の形状を指定しています。plot.style_steplineが重要ポイント、数値が変わった時点で、線が斜めにならず階段状に引かれる「ステップライン」を採用。これで過去の値が分かりやすくなります。linewidthは線の太さを表します。今回は、最高値と最安値を2に、ほかを1にしてあります。

var label=○○○は、ラベルを変数として宣言しています。varは静的変数のようなもの?だと思います。PINEスクリプトは、足が変わるたびにスクリプトを実行するのですが、varは一度変数宣言すれば二度と宣言しないでね、という意味みたいです。varを入れないと、毎足同じ名前のラベルを宣言し張り続けるため、画面がラベルだらけになってしまいます。「labelN」は最後の足の終値表示用。

label.delete(○○○)は、以前貼り付けたラベルを削除する命令。毎足ごとに、前回描いたラベルを削除し、また書き直しているわけです。これで、最後の足のラベルだけ描画が残る、というわけ。

・ 「labelH := label.new(~)」はそれぞれのラベルを新しく描画する命令。ちなみに「:=」と「=」の違いは、「:=」は「変数に代入する」という意味だそうです。「=」は変数の初期値を代入する等号式なので、1変数に1度きりの使用。()内を解説すると、「bar_index + 1」は描画位置。今の足のインデックス値(0を上場開始最初の足としている)に+1した値に描画させています。「style=label.style_label_left」はラベルの形状を指定するもの。左から吹き出しのような突起が出てる形状ですね。「text=~」が表示させるテキスト。「color」はラベルの色指定、「textcolor」はテキストの文字色です。

余談ですが、PINEスクリプトのバージョンが5になって、ラベルの形状の種類も増えたようですが、形状の見本とかがなくて困っています…。どなたかご存じの方は、ぜひコメントください💦

《Trading Viewで最高値からのー5%ごとの価格を表示するインディケーターを自作する:まとめ

TradingViewは、見やすくて多機能、優秀なチャートツールです!

・ TradingViewの無料会員は、同時に3つまでしかインジケーターの表示ができない・・・・。

・ TradingViewは、オリジナルのインジケーターが作れる

最高値から5%下落するごとに、機械的に買い増ししたいけど、価格を計算するのがメンドクサイ… → チャートに表示させよう!!

・ 今回は、一から作ってみました。試行錯誤の末、素人でもどうにか出来ました♪

注意無料会員は、オリジナルのインジケーターは一つまでしか同時表示できません。

《広告》

楽天ポイントで資産運用!100ポイントから自分のお金を使わず気軽に投資! | 楽天証券 (rakuten-sec.co.jp)

【SBI証券】ネット証券口座開設数No.1|SBI証券 (sbisec.co.jp)

FX | バイナリーオプション | CFD | IG証券

《あわせて読みたい!関連リンク》

あわせて読みたい

無料チャートアプリ、「TradingView」のインジケーターを自作する ~ ①移動平均線を3本同時表示する


無料チャートアプリ、TradingViewでインジケーターを自作する ~ ②ボリンジャーバンドの標準偏差を、複数同時表示する


無料チャートアプリ、TradingViewでインジケーターを自作する ~ ③ RSIにボリンジャーバンドを表示させる


無料チャートアプリ、TradingViewでインジケーターを自作する ~ ④ DMAを表示する

あわせて読みたい

《米国株》ハイリスク・ハイリターンなレバレッジETF、「SOXL」!過去の暴落率を調べてみました。


米国株》レバレッジETFシリーズ、第2弾!「TECL」と「SOXL」のリターンと暴落率について、比較しました!

米国株》レバレッジETFシリーズ、第3弾!「TECL」と「SOXL」の、各年別リターンを調べてみました!

《米国株 レバレッジETF 第4弾》レバレッジETFの長期運用!元指数との倍率を比較し、何倍になっているのか調べてみました!《SPXL・TECL・SOXL・TNA》

楽天ROOM