徹底的に移動平均線のみでシグナルを作ってみた![Traditional signals by Moving Average][Trading View]

ニッケルメッキです。
先日は移動平均を基本とした利回りに投資家が意識していることや、移動平均線が短期、中期、長期と順序良く並ぶパーフェクトオーダーに関してnoteを書かせて頂きました。

今回は、そういった伝統的な移動平均線のシグナルを可視化するインジケーターを作成しましたので公開します!

※インジケーターが主体で売買シグナルを出すわけではありません。このインジケーターの設計思想上、シグナルは基本的に任意の設定値(Yield+Period)を用いた利食い目途になります。
※白背景のみに対応、黒背景の場合、fill分の行のwhiteをblackへ変更してください。黒背景に最適化していないのでお勧めはしません。
※このインジケーターの使用による如何なる不利益も保証しません。
※このインジケーターは無料です。販売は禁じます。

このインジケーターは移動平均線の見方を可視化(シグナル化)することで、下記のメリットが生じることを狙います。
・トレンドの視認性向上、逆張り防止
・揉み合い期間中のトレード抑制
・損少利大への意識向上
・利食い、損切りラインの最低限の可視化(背景色変化)

[機能一覧]

・移動平均線4本の表示・非表示(SMA・EMA切り替え可)
・移動平均+利回り線(3レベル迄)表示・非表示(基乖離率)
・パーフェクトオーダー表示・非表示(背景色)
・利回り線レベル3到達時のアラート表示(背景色)
・アラート確認用の簡略化表示(アラート以外非表示)

[表示手順]
Trading Viewのサイトで適当なチャートを表示、インジケーターからTraditional signals by Moving Averageを検索してチャートへ表示してください。もしくは、リンクをクリックしてAdd to Favorite scriptsして頂けるとインジケーターメニューのお気に入りから選択できるようになります。
※ソースコードを記載していましたがコピペが面倒だと思うのでやめました。

タイムフレームにもよりますが、おおむね上記のような画面になるかと思います。
設定画面を確認してみましょう。

内容は下記のようなものになります。

EMA Or SMA? (指数平滑移動平均線か単純移動平均線)
MA Period Fast 1 (移動平均の期間短期1)
MA Period Fast 2(移動平均の期間短期2)
MA Period Slow 1 (移動平均の期間長期1)
MA Period Slow 2 (移動平均の期間長期2)
Yield(%)(移動平均+利回り線(基乖離率)のパーセンテージ0.01以上から)
Show Perfect Order(パーフェクトオーダー表示有無)
Use Yield Alert?(利回り上限、下限到達時に背景色をアラートを表示するか)
Hide MA Fast 1(移動平均期間短期1表示有無)
Hide MA Fast 2(移動平均期間短期2表示有無)
Hide MA Slow 1(移動平均期間長期1表示有無)
Hide MA Slow 2(移動平均期間長期2表示有無)
Hide Yield(利回り線の表示可否)

基本的な使用方法としては、仮想通貨や為替によってYieldの値を調整します。
例)
仮想通貨タイムフレーム15分 Yield = 0.5 - 1.5%
為替タイムフレーム15分 Yield = 0.05 - 0.1%

下記はドル円15分 Yield 0.1% (パーフェクトオーダー表示ON)

上記のような奇麗に移動平均線が収斂し拡張開始するようなパーフェクトなパーフェクトオーダーの場合は下記のような戦略になります。
短期線でショート、緑ラインで利食い。

アラートを表示すると下記のようになります。

短期線に触れた際にもアラートを設けるか悩みましたが、視認性が悪くなるので、付けていません。シンプルイズベストに徹しました。

Hide MA And Yield?をONにすると、上記のようにシグナルだけ表示することが可能です。
いい感じにシグナルが発生しているか確認したい時にONにしてください。

色の意味になりますが、簡単に下記に記します。
・緑背景 = アップトレンドのパーフェクトオーダー
・赤背景 = ダウントレンドのパーフェクトオーダー
・赤帯 = 利回り線Yield * 3レベル - Yield * 2レベル(プラス乖離)
・緑帯 = 利回り線Yield * 3レベル - Yield * 2レベル(マイナス乖離)

色の読み方は下記のようになります。(例としてお考え下さい)
・白背景 = トレンド転換中、揉み合い、深い押し目
・緑背景 = 上昇トレンド
・赤背景 = 下降トレンド
・白背景 + 赤もしくは緑アラート = 揉み合い、ドテン売買
・緑背景 + 赤アラート = ロング利食い
・赤背景 + 緑アラート = ショート利食い
基本的にパーフェクトオーダー期間中のドテンは非推薦ですが、タイムフレーム。例えば為替の1時間足などではパーフェクトオーダー入りで逆方向に進むときなども多く存在します。
その場合は、単純にトレンドの分かりやすいタイムフレームで取引しましょう。

見方や使い方は以上です。
移動平均線は時折素晴らしいパフォーマンスを発揮しますし、パーフェクトオーダーが継続する金融商品を探し当てるのは投資家の目利きでありトレードテクニックでもあります。
このインジケーターを使って、劇的な上昇トレンドを描く銘柄にたどり着けることを祈ります!

最後に

こういう銘柄を探したいですねw
残念ながら、今は揉み合いのようです。
それではw

[補足]
ご質問などを頂きました内容に関して追記します。

Q. Use Yield Alert?をONにした場合のシグナル表示時期(offset-1)について、offsetを0にして使用しても良いですか?
A. offsetを0にすると、現在の足でシグナルが点灯してしまい、視認性、後のチャートの可読性(全く条件と異なる箇所でシグナルが発生しているように見見えてしまう)も低下します。基本的にシグナル発生の対象となる足上にシグナルを発生させるためoffset-1となっています。
現在の足で点灯させたい場合はoffset0でも問題ありません。

Q. level3を超えている(または下回っている)のにシグナルが表示されません。何故でしょうか?
A. 値動きに大きなトレンドが発生している、またはオーバーシュート気味の場合は、シグナル乱発、無用なトレードを避けるためにlevel3をオーバーシュートした場合はシグナルが発生しない設計になっています。
これは逆張りを得意とするトレーダーがトレンド発生時に焼かれることを回避する目的でもあります。基本的にトレンドフォロー、損少利大を目的としているため、逆張りに適したシグナル発生とはなっていません。
[シグナル発生条件]
・Close[1]がlevel3よりオーバーシュートするとシグナルは発生しない
・オーバーシュート後の戻りではシグナルは点灯します(high > ma >close、low < ma < closeの場合点灯)
[上記の設計意図]
・逆張りの場合はlevel3(任意の設定値)以内に収まっていないと焼かれる危険性が高いため
・トレンドフォローの場合は、オバーシュートを歓迎すべきでシグナルを点灯すると利益を減らす可能性が高いため
シグナルの挙動は下記の画像をご確認ください。

[お知らせや修正]
2018/05/24 シグナル発生時期をより明確にするため一本前の足の比較のみに変更しました(fast_1[0]のほうが値動きの追従性が増しますが、シグナル発生の可読性を優先しました)fast_1[0]→fast_1[1]へ。note内のコードを変更してあります。

2018/05/25 移動平均線を設定から個別に非表示可能になりました。設定画面のクエスチョンマークがイラっとするので取り除きました。Trading View上にインジケーターを公開しました。バグを修正しました。表示速度が向上しました。

2018/06/17 ご要望がありましたので、ソースコードを掲載しました。

[ソースコード]
//@version=3
study("TSignals by MA", overlay=true)
emaOrSma = input(title="EMA or SMA?", defval="EMA", options=["EMA", "SMA"])
len_1 = input(title="MA Period Fast 1", type=integer, defval=25, minval=1, maxval=10000)
len_2 = input(title="MA Period Fast 2", type=integer, defval=75, minval=1, maxval=10000)
len_3 = input(title="MA Period Slow 1", type=integer, defval=100, minval=1, maxval=10000)
len_4 = input(title="MA Period Slow 2", type=integer, defval=200, minval=1, maxval=10000)
y = input(title="Yield (%)", type=float, defval=1, minval=0.01, maxval=100)
showPerfectOrder = input(title="Show Perfect Order", type=bool, defval=true)
alertPropriety = input(title="Use Yield alert", type=bool, defval=false)
hideMAFast1 = input(title="Hide MA Fast 1", type=bool, defval=false)
hideMAFast2 = input(title="Hide MA Fast 2", type=bool, defval=false)
hideMASlow1 = input(title="Hide MA Slow 1", type=bool, defval=false)
hideMASlow2 = input(title="Hide MA Slow 2", type=bool, defval=false)
hideYield = input(title="Hide Yield", type=bool, defval=false)

//transparency value
t = 80

ma_1 = emaOrSma == "EMA" ? ema(close, len_1) : sma(close, len_1)
ma_2 = emaOrSma == "EMA" ? ema(close, len_2) : sma(close, len_2)
ma_3 = emaOrSma == "EMA" ? ema(close, len_3) : sma(close, len_3)
ma_4 = emaOrSma == "EMA" ? ema(close, len_4) : sma(close, len_4)
s = ma_1 / 100 * y
sp_1 = ma_1 + s
sp_2 = ma_1 + (s * 2)
sp_3 = ma_1 + (s * 3)
sm_1 = ma_1 - s
sm_2 = ma_1 - (s * 2)
sm_3 = ma_1 - (s * 3)

perfectOrderByUpTrend = ma_1[1] > ma_2[1] and ma_2[1] > ma_3[1] and ma_3[1] > ma_4[1] ? true : false
perfectOrderByDownTrend = ma_1[1] < ma_2[1] and ma_2[1] < ma_3[1] and ma_3[1] < ma_4[1] ? true : false

plot(ma_1, title="MA Fast 1", color= hideMAFast1 == false ? orange : na)
plot(ma_2, title="MA Fast 2", color= hideMAFast2 == false ? red : na)
plot(ma_3, title="MA Slow 1", color= hideMASlow1 == false ? blue : na)
plot(ma_4, title="MA Slow 2", color= hideMASlow2 == false ? green : na)
bgcolor(perfectOrderByUpTrend and showPerfectOrder ? green : na, transp=t + 16, offset=-1, title="Perfect Order By Up Trend")
bgcolor(perfectOrderByDownTrend and showPerfectOrder ? orange : na, transp=t + 16, offset=-1, title="Perfect Order By Down Trend")
plot(sp_1, title="Yield Level + 1", color= hideYield == false ? gray : na, transp=t)
upBand_1 = plot(sp_2, title="Yield Level + 2", color= hideYield == false ? gray : na, transp=t)
upBand_2 = plot(sp_3, title="Yield Level + 3", color= hideYield == false ? red : na, transp=t)
plot(sm_1, title="Yield Level - 1", color= hideYield == false ? gray : na, transp=t)
downBand_1 = plot(sm_2, title="Yield Level - 2", color= hideYield == false ? gray : na, transp=t)
downBand_2 = plot(sm_3, title="Yield Level - 3", color= hideYield == false ? green : na, transp=t)
fill(upBand_1, upBand_2, color= hideYield == false ? red : white, title="UP Band")
fill(downBand_1, downBand_2, color= hideYield == false ? green : white, title="Down Band")
sell = high[1] > sp_3[1] and close[1] < sp_3[1] ? true : false
buy = low[1] < sm_3[1] and close[1] > sm_3[1] ? true : false
bgcolor(buy and alertPropriety ? green : na, transp=t, offset=-1, title="buy alert")
bgcolor(sell and alertPropriety ? red : na, transp=t, offset=-1, title="sell alert")

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

60

ニッケルメッキ

相場好きです!それだけ。

仮想通貨

7つ のマガジンに含まれています
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。