ウィリアムズ
この戦略は,異なる周期長さの3つのSMAを使用します. 速いラインSMA1,中間ラインSMA2,ゆっくりとしたラインSMA3,SMA1は最短期間,SMA3は最長期間です.
sma1が sma2を横切り, sma2が sma3を横切ると,市場は上昇傾向にあり,上向きのワニの口を形成することを示します.トレンド取引理論によると,ロングポジションを入力する必要があります.
逆に,SMA1がSMA2を下回り,SMA2がSMA3を下回りすると,市場は下向きの傾向にあり,下向きのアリガター口を形成することを示します.ショートポジションを入力する必要があります.
出口条件は,3つのラインが再調整され,中間線が中間線以下または中間線がスローライン以下である.ポジションは閉鎖されるべきです.
この戦略は,トレンドの方向性を特定するために背景の色も描きます. 上向きの緑色と下向きの赤色.
概要すると,この戦略は,動向平均値と"ワニの口"パターンの強みを活用して,トレンド方向を決定し,それに応じて取引する.これは典型的なトレンドフォロー戦略です.
リスクに対処するために,次の改善を行うことができます:
トレンドフィルターを追加して 市場変動を回避します
トレンドインジケーターを用いて出口条件を最適化する
ストップ・ロスの戦略を追加して単一の取引損失を制御します.
順応性移動平均を用いることで 周期が動的に調整されます
この戦略は,次の側面においてさらに最適化することができる.
傾向強度フィルターを追加して弱気トレンドへの早期入力を避ける.MACD,KDJのような指標が役立ちます.
バックテストを通じて最良の組み合わせを見つけるために移動平均期を最適化します
順応性移動平均を用いれば,市場動向に応じて周期が順応する.
ストップ・ロスの戦略を追加します リスクをコントロールするために ストップ・ロスの遅れや 口座残高のストップ・ロスのことです
精度を高めるためにボリッジ,ボリンジャー帯などを使って入口条件を改善します
線が交差する際の指標でトレンド逆転の確率を判断することで,出口条件を改善する.
ウィリアムズ
/*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()