ウィリアムズ指標のACバックテスト戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-18 12:03:38
タグ:

img

概要

この戦略は,有名なトレーダーであるビル・ウィリアムズによって設計されたウィリアムズ指標のAwesome Oscillator (AO) をベースにしています.異なる期間の平均価格SMAの違いを計算することによって,トレンドと市場の勢いを診断するための振動指標を形成し,ロングとショートをガイドするために対応する取引信号を設計します.

原則

この戦略の核心指標は Awesome Oscillator (AO) で,以下のように計算されます. AO = SMA (平均価格,5日) - SMA (平均価格34日) この式は,異なる期間の間における2つのSMAから価格動向情報を抽出する.高速SMA (5日) が遅いSMA (34日) より高いとき,購入信号が生成され,高速SMAが遅いSMAより低いとき,販売信号が生成される.

誤ったシグナルをフィルターするために,この戦略はAOに5日間のSMA操作も適用します. ロング/ショートシグナルを逆転させると異なる取引方向が実現する逆モードが提供されています. AOが前の値よりも高くなった場合,それは購入機会とみなされ,青いバーとしてマークされます. AOが前の値よりも高くなかった場合,それは販売機会とみなされ,赤いバーとしてマークされます.

利点

  1. 閉じる価格の代わりに中位価格を使用すると,誤ったブレイクアウトがSMAに与える影響を軽減し,安定性を向上させる.
  2. 急速なSMAと遅いSMAの組み合わせは,市場の変化を敏感に捉える
  3. 双重SMAフィルタリングにより高周波ノイズが除去され,信号品質が向上します
  4. 柔軟なパラメータ調整は,異なる市場環境に適応
  5. 取引先の直感的なバー表示により,取引の判断が容易になります

リスク と 解決策

  1. パラメータを調整することで過剰なフィットメントを防ぐために,市場の変動頻度を慎重に評価する.
  2. 振動する市場では複数の誤った取引が起こり得る.ストップロスの範囲を適切に緩和するか,ポジションスケールを減らす
  3. 信頼性のないバックテストデータ,実際のパフォーマンスシミュレーションとは異なる可能性があります.マルチレグの実際の取引と分割バッチポジションを組み合わせることを提案します.

オプティマイゼーションの方向性

  1. シグナル品質を改善するために取引量などのフィルターを増やす
  2. ストップ・ロスの戦略を組み込み,個々の運用損失を制御する
  3. ポジション管理を最適化し,市場の変動に応じてポジションを増やしたり減らしたりする
  4. 振動の逆転を防ぐために他の指標を組み合わせて傾向の方向性を決定する

結論

この戦略は,直感的で明確な取引信号で市場勢力の変化を診断するために,高速で遅い中位価格SMA構造で設計された Awesome Oscillatorを使用します. しかし,振動と逆転の影響を受け,安定性を改善するために適切なパラメータチューニングとストップロスの戦略が必要です.効果的なリスク管理により,この戦略はシンプルで実用的で,さらなる最適化と適用に値します.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/12/2016
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy("Bill Williams. Awesome Oscillator (AC)")
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
nRes =  xSMA1_SMA2 - xSMA_hl2
cClr = nRes > nRes[1] ? blue : red
pos = iff(nRes > nRes[1], 1,
	   iff(nRes < nRes[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, style=histogram, linewidth=1, color=cClr)

もっと