CMO オシレーター取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-19 21:16:26
タグ:

概要

この戦略は,チャンド・モメントム・オシレーター (CMO) を使用して,取引信号のオーバー買いおよびオーバーセールレベルを決定する. 3つの期間の絶対CMO値は,極端を特定するためにオシレーターを滑らかにするために平均される.典型的な平均逆転オシレーター取引戦略.

戦略の論理

基本的な論理は以下の通りです

  1. 3つの異なる期間における絶対CMO値の計算
  2. 3 期間の絶対 CMO 値の平均を取ること
  3. 平均値が上限を超えるとショート
  4. 平均値が低値を下回る場合,ロング
  5. CMOが通常の範囲に戻ったときの閉じるポジション

CMOは価格変動の勢いを反映する.高い絶対値は,過剰購入/過剰販売ゾーンに入る価格の差を表す.この戦略は,多期平均を使用して,極端を特定するための曲線を滑らかにするために,CMOのこの特徴を利用する.

利点

  • 過剰購入/過剰販売地域を特定するためにCMOを使用する
  • 多期平均値は曲線を滑らかにし,誤った信号を避ける.
  • 過剰購入/過剰販売の検出のための健全な理論的根拠
  • 調整可能なパラメータの限界値
  • 単純な平均逆転の実装

リスクと緩和策

  • 誤ったCMO信号の可能性
  • 継続的な値最適化が必要です
  • トレンド期間の持続的な極端は損失を引き起こす可能性があります

緩和策

  1. トレンドに反する取引を避けるためにトレンドフィルターを追加する
  2. より良いCMOの感受性のためにパラメータの最適化
  3. 損失を制限するためにストップを使用する

増進 の 機会

戦略は以下を通じて強化できます.

  1. 誤ったブレイクを避けるため 量確認
  2. リスク管理の改善のために後続停止を組み込むこと
  3. 機械学習によるパラメータの自動最適化
  4. 波動性に基づくポジションサイズ
  5. 利回りを多様化して改善するための他の戦略と組み合わせる

結論

この戦略は,CMOを使用して,平均逆転取引のオーバーバイト/オーバーセールを特定する.多期平均値は,誤った信号を避けるのに役立ちます.CMO自体には,差異を測定するための健全な理論的基盤があります.より良いパラメータ,ストップ,フィルターによる改善により,安定した振動器取引戦略になります.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// 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(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -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, color=blue, title="CMOabsav")

もっと