ウィリアムズ の ワニ の 戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-13 10:58:22
タグ:

img

概要

ウィリアムズアライガター戦略は,トレンド方向を決定するために,異なる期間の3つの移動平均線を形作る"アライガターの"を形作るトレンドフォロー戦略である. 急速線が中間線上,中間線がスローライン上にあるとき,上向きトレンドアライガターの口が長くなって,長くなっていく. 急速線が中間線下,中間線がスローライン下にあるとき,下向きトレンドアライガターの口が短くなって,短くなって形成される. これはビル・ウィリアムズによって発明され,トレンドを効果的に把握するために移動平均の傾向判断能力を組み合わせている.

働き方

この戦略は,異なる周期長さの3つのSMAを使用します. 速いラインSMA1,中間ラインSMA2,ゆっくりとしたラインSMA3,SMA1は最短期間,SMA3は最長期間です.

sma1が sma2を横切り, sma2が sma3を横切ると,市場は上昇傾向にあり,上向きのワニの口を形成することを示します.トレンド取引理論によると,ロングポジションを入力する必要があります.

逆に,SMA1がSMA2を下回り,SMA2がSMA3を下回りすると,市場は下向きの傾向にあり,下向きのアリガター口を形成することを示します.ショートポジションを入力する必要があります.

出口条件は,3つのラインが再調整され,中間線が中間線以下または中間線がスローライン以下である.ポジションは閉鎖されるべきです.

この戦略は,トレンドの方向性を特定するために背景の色も描きます. 上向きの緑色と下向きの赤色.

概要すると,この戦略は,動向平均値と"ワニの口"パターンの強みを活用して,トレンド方向を決定し,それに応じて取引する.これは典型的なトレンドフォロー戦略です.

利点分析

  • ワニの口は 動向の方向を効果的に識別します
  • 異なる周期線を組み合わせることで パターンの正確性が向上します
  • トレンドトレード理論と一致する.
  • 背景の色は視覚判断を助けます
  • シンプルで明快な論理で 実行が簡単です

リスク分析

  • 複数のリスクが 市場に広がっています
  • ポジションを閉じるためにラインが再調整される場合,リスクが高い.
  • トレンド強さを判定できず,誤ってトレンドを入力する可能性があります.
  • ストップ・ロスはなく 引き上げリスクが高い
  • 固定期限は市場の変化に適応できない.

リスクに対処するために,次の改善を行うことができます:

  1. トレンドフィルターを追加して 市場変動を回避します

  2. トレンドインジケーターを用いて出口条件を最適化する

  3. ストップ・ロスの戦略を追加して単一の取引損失を制御します.

  4. 順応性移動平均を用いることで 周期が動的に調整されます

改善 の 方向

この戦略は,次の側面においてさらに最適化することができる.

  1. 傾向強度フィルターを追加して弱気トレンドへの早期入力を避ける.MACD,KDJのような指標が役立ちます.

  2. バックテストを通じて最良の組み合わせを見つけるために移動平均期を最適化します

  3. 順応性移動平均を用いれば,市場動向に応じて周期が順応する.

  4. ストップ・ロスの戦略を追加します リスクをコントロールするために ストップ・ロスの遅れや 口座残高のストップ・ロスのことです

  5. 精度を高めるためにボリッジ,ボリンジャー帯などを使って入口条件を改善します

  6. 線が交差する際の指標でトレンド逆転の確率を判断することで,出口条件を改善する.

結論

ウィリアムズアライガター戦略は,典型的なトレンドフォロー戦略である.トレンドと取引を相応に決定するために,3つの移動平均によって形成されたアライガターの口を使用する.利点はシンプルで明確な論理である.デメリットはトレンド精度とリスク制御が弱である.将来の改善は,追加の指標を組み込むこと,パラメータを最適化すること,ストップロスを追加することで,複雑な市場条件により堅牢なものにする.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's Alligator Strategy by Bill Williams", shorttitle = "Alligator", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len1 = input(50, defval = 50, minval = 1, title = "MA 1 Length")
len2 = input(100, defval = 100, minval = 1, title = "MA 2 Length")
len3 = input(200, defval = 200, minval = 1, title = "MA 3 Length")
src = input(close, title = "Source")
showbg = input(false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
sma1 = sma(src, len1)
sma2 = sma(src, len2)
sma3 = sma(src, len3)
plot(sma1, color = lime, linewidth = 2)
plot(sma2, color = blue, linewidth = 2)
plot(sma3, color = red, linewidth = 2)

//Signals
up = sma1 > sma2 and sma2 > sma3
dn = sma1 < sma2 and sma2 < sma3

//Background
trend = 0
trend := up ? 1 : dn ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : red
bgcolor(col)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
    strategy.entry("Short", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

もっと