ウィリアムズ・アリゲーター戦略


作成日: 2023-11-13 10:58:22 最終変更日: 2023-11-13 10:58:22
コピー: 0 クリック数: 719
1
フォロー
1617
フォロワー

ウィリアムズ・アリゲーター戦略

概要

ウィリアムズ策 (Williams’s whale strategy) は,3つの異なる周期の移動平均が形成したの形状を用いてトレンドの方向を判断するトレンド追跡策である.快線が中線より高く,中線が遅線より高く,上昇傾向のを形成し,多めにする.快線が中線より低く,中線が遅線より低く,下降傾向のを形成し,空にする.この策は,ビル・ウィリアムズが発明したの指標に基づいており,移動平均の傾向判断能力を組み合わせて,市場動向を効果的に捉える.

戦略原則

この戦略は,3つの異なる周期長さのSMA移動平均を使用します.すなわち,速線sma1,中線sma2および遅線sma3です.

sma1がsma2を穿い,sma2がsma3を穿いるときは,市場が上昇傾向にあることを示し,上昇口を形成し,トレンド取引理論によれば,この時に入場はもっとするべきである.

逆に,sma1がsma2を貫通し,sma2がsma3を貫通すると,市場が下落傾向にあることを示す,下落の口を形成し,このとき入場は空席すべきである.

オーバーと空の出場条件は,快線が中線より低く,中線が慢線より低く,三条均線として再編成され,このとき,平定する.

この戦略はまた,トレンドの方向を表示するために背景の色を塗り,緑は上昇傾向,赤は下降傾向を表します.

全体として,この戦略は,移動平均の優位性を利用して,魚口形状でトレンドの方向性を判断し,順調に入場し,典型的なトレンド追跡戦略である.

優位分析

  • 魚の口の判断は,トレンドの方向を効果的に識別する.
  • 形状判断の精度を高めるために,異なる周期線の組み合わせを採用する.
  • 順調な入場取引は,トレンド取引理論に合致する.
  • 背景の色を判別する補助を設定し,直感的に可視化します.
  • 取引の論理はシンプルでわかりやすく,実行しやすい.

リスク分析

  • 大周期性波動の市場では,複数の調整のリスクがあります.
  • 三行列の順番が変わると平仓のリスクが大きい。
  • トレンドの強さや弱さを見極められず,トレンドの入場に不適した状況がある.
  • ストップダストは考慮されていないが,大幅な撤回リスクは大きい.
  • 固定周期は市場の変化に適応できないので,自適應周期を採用すべきである.

上記のリスクに対して,以下の措置を講じ,さらに最適化することができます.

  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()