4時間CCI反転戦略


作成日: 2023-10-13 15:29:05 最終変更日: 2023-10-13 15:29:05
コピー: 2 クリック数: 929
1
フォロー
1617
フォロワー

概要

この戦略は,CCI指標をベースに逆転取引を行う戦略である.これは,CCI指標が超買い超売り領域に現れる時に,逆転取引を行う.全体的に,この戦略は,CCI指標の超買い超売り特性を利用して,価格逆転の機会を捕捉して取引する.

戦略原則

まず,この戦略はCCI指数に基づいています.CCI指数の計算式は次のとおりです.

CCI = (典型的な価格 - シンプル移動平均) / (0.015 *平均差)

その中で 典型的な価格 = (最高価格 + 最低価格 + 閉店価格) / 3 単純移動平均 = 過去N日の典型的な価格の移動平均 平均差 = 過去N日間の典型的な価格偏差の平方和の平均値

この戦略は,長さ11のCCI指標を使用し,150を超売区,150を超買区に設定した.

各 K 線の閉塞時に,長さ 11 の CCI 指針を検知する. CCI を 150 未満に突破すると,多信号が発せられる.CCI を 150 上に突破すると,空信号が発せられる.

シグナルを受け取った後,市場価格でポジションを開きます. 1%のストップ・ストップと0.5%のストップ・ストップを設定します.

戦略的優位性

  1. CCIを活用して,価格逆転の機会を有効に捉える
  2. CCIパラメータは調整可能で,優れたパラメータをテストできます.
  3. 固定比率のストップ・ストローを使用し,リスクを効果的に制御します.
  4. 戦略の論理はシンプルで明快で,実行は簡単です.

リスクと解決策

  1. CCIは多くの偽信号を生成し,市場に入る信号は必ずしも信頼できない.
  • 解決策:CCIのパラメータを最適化し,他の指標のフィルタリングと組み合わせる
  1. 固定ストップ・ストップ・レシオ,異なる品種のパラメータは必ずしも合理的ではない
  • 解決法: 動的ストップ・ストップを追加する
  1. CCIのみによる戦略,リスクは単一で失敗しやすい
  • 解決法:複数の指標の組み合わせで 安定性を高める
  1. 取引コストを考慮しない場合,リールディスクは効果的ではない.
  • 解決法: スライドポイント制御を追加し,取引頻度を下げます

最適化の方向

  1. CCIのパラメータを最適化して,より優れたパラメータの組み合わせを見つける
  2. MACD,KDJなどの他の指標に追加して,入場をフィルターします.
  3. 固定比率ではなくダイナミックなストップ・ストップ・メカニズムを開発
  4. 取引コストの影響を減らすために取引頻度を下げるための最適化戦略
  5. リターン・オプティマイゼーションを行い,最適のパラメータの組み合わせを見つけ,実盤取引に備える

要約する

4時間CCI反転戦略は,全体としてCCI指標を利用して反転取引を行う簡単な戦略である. 戦略の論理が明確で,実行しやすいという利点がある. しかし,CCI信号の不安定性,止損停止の柔軟性不足などの欠点もある. CCIパラメータを最適化して,フィルター指標を追加し,動的な止損停止を開発することで,この戦略の効果をさらに強化することができる. 全体として,この戦略は,CCI指標に基づく取引を量化するための考え方を提供しているが,さらに実体でのアプリケーションを最適化する必要がある.

ストラテジーソースコード
/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("4H CCI Strategy", overlay=true)
length = input( 11 )
overSold = input( -150 )
overBought = input( +150 )
price1 = high
price2 = low
ucci = cci(price1, length)
dcci = cci(price2, length)
vcci = cci(ohlc4, 11)

resCustom = input(title="Timeframe", defval="15")
Length = input(16, minval=1)
xPrice = request.security(syminfo.tickerid, resCustom, hlc3)
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
basis1 = nAMA
slope = change(basis1,1)

if (not na(vcci))
    if (crossover(dcci, overSold))
        strategy.entry("CCILE", strategy.long, comment="CCILE")
        strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005)
    if (crossunder(ucci, overBought))
        strategy.entry("CCISE", strategy.short, comment="CCISE")
        strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)