この戦略は,有名なトレーダーであるビル・ウィリアムズによって設計されたウィリアムズ指標の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が前の値よりも高くなかった場合,それは販売機会とみなされ,赤いバーとしてマークされます.
この戦略は,直感的で明確な取引信号で市場勢力の変化を診断するために,高速で遅い中位価格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)