赤三兵/黒三兵は酒田五法の中でも特に人気のあるローソク足パターンです。
今回はTradingViewのチャート上で赤三兵/黒三兵が発生している足に自動でマークを付けてくれるインジケーターを作成してみました。「最低値幅」などの細かい条件設定も可能です。
Pine言語のサンプルコード付きで公開しますので、ぜひご利用ください。
【2022年3月12日 追記】
Pineスクリプトのバージョン5(v5)に対応したサンプルコードも追加しました。
本インジケーターの概要
以下のような条件で赤三兵/黒三兵をそれぞれ判定し、マーク表示しています。
判定条件と表示マーク
赤三兵/黒三兵の判定条件と表示されるマークは以下の通りです。
赤三兵(赤色のクロスマーク)
(1) 直近3本の足がすべて陽線
(2) 直近3本の足の高値がすべて切り上がっている
(2) 直近3本の足の安値がすべて切り上がっている
黒三兵(緑色の丸マーク)
(1) 直近3本の足がすべて陰線
(2) 直近3本の足の高値がすべて切り下がっている
(2) 直近3本の足の安値がすべて切り下がっている
設定変更可能なパラメータ
インジケーターの設定画面は、以下のような構成となっております。
パラメータ
赤三兵を有効化 | チェックを外すと赤三兵マークが表示されなくなります。 |
---|---|
黒三兵を有効化 | チェックを外すと黒三兵マークが表示されなくなります。 |
最低値幅% | チェックを入れると、最低値幅を条件に加えます。 |
「最低値幅%」条件について
直近3本の足について各値幅が前日終値の何%になっているかを計算し、3本すべてがパラメータ指定した%を超えているものだけがマーク表示されるようになります。
値幅はトゥルーレンジで計算しているので、前日からのギャップアップ/ギャップダウンも加味した値幅になります。
マークの色と形状
「スタイル」タブの方で、マークの色と形状を変更できます。
形状については「クロス」または「円」を選んでください。それ以外はグラフ用の形状なので今回のような条件判定インジケーターでは挙動がおかしくなります。
サンプルコード
以下のコードをコピペしてお使いください。
サンプルコードを元にTradingViewインジケーターを作成する手順が分からない方は、以下の記事を参考にしてください。(記事内の手順3を今回のサンプルコードに置き換えて進めてみてください)
Pine(v5)バージョン
//@version=5
indicator(title="$TTOSample_AkaKuroSanpei", shorttitle="赤三兵/黒三兵", overlay=true)
in_enable_aka = input.bool(true, "赤三兵を有効化")
in_enable_kuro = input.bool(true, "黒三兵を有効化")
in_enable_range_min = input.bool(false, "", inline="最低値幅%")
in_cond_range_min_pct = input.float(1, "最低値幅%", inline="最低値幅%")
in_linewidth = input.int(5, "マークの大きさ")
cond_aka_basic = close[2] > open[2] and close[1] > open[1] and close > open and
high[2] < high[1] and high[1] < high and
low[2] < low[1] and low[1] < low
cond_kuro_basic = close[2] < open[2] and close[1] < open[1] and close < open and
high[2] > high[1] and high[1] > high and
low[2] > low[1] and low[1] > low
cond_range_min = if in_enable_range_min
ta.lowest(ta.tr / close[1], 3) >= in_cond_range_min_pct/100
else
true
plot(in_enable_aka and cond_aka_basic and cond_range_min ? high*1.01 : na, title="赤三兵", style=plot.style_cross, color=color.orange, linewidth=in_linewidth)
plot(in_enable_kuro and cond_kuro_basic and cond_range_min ? low*0.99 : na, title="黒三兵", style=plot.style_circles, color=color.lime, linewidth=in_linewidth)
Pine(v4)バージョン
//@version=4
study(title="$TTOSample_AkaKuroSanpei", shorttitle="赤三兵/黒三兵", overlay=true)
in_enable_aka = input(true, "赤三兵を有効化", type=input.bool)
in_enable_kuro = input(true, "黒三兵を有効化", type=input.bool)
in_enable_range_min = input(false, "", type=input.bool, inline="最低値幅%")
in_cond_range_min_pct = input(1, "最低値幅%", type=input.float, inline="最低値幅%")
in_linewidth = input(5, "マークの大きさ")
cond_aka_basic = close[2] > open[2] and close[1] > open[1] and close > open and
high[2] < high[1] and high[1] < high and
low[2] < low[1] and low[1] < low
cond_kuro_basic = close[2] < open[2] and close[1] < open[1] and close < open and
high[2] > high[1] and high[1] > high and
low[2] > low[1] and low[1] > low
cond_range_min = if in_enable_range_min
lowest(tr / close[1], 3) >= in_cond_range_min_pct/100
else
true
plot(in_enable_aka and cond_aka_basic and cond_range_min ? high*1.01 : na, title="赤三兵", style=plot.style_cross, color=color.orange, linewidth=in_linewidth)
plot(in_enable_kuro and cond_kuro_basic and cond_range_min ? low*0.99 : na, title="黒三兵", style=plot.style_circles, color=color.lime, linewidth=in_linewidth)
おわりに
今後も「かゆいところに手が届く」「日本語表記で分かりやすい」インジケーターのサンプルコードを色々と作ってみようと思っています。
ブログの記事更新はTwitter(@eltraders)または本ページ右から登録できる「メルマガTTO通信」でお知らせしているので、ぜひフォローorご購読よろしくお願いします。