CCIとEMAに基づくトレンドフォロー取引戦略


作成日: 2023-11-02 15:17:22 最終変更日: 2023-11-02 15:17:22
コピー: 0 クリック数: 963
1
フォロー
1617
フォロワー

CCIとEMAに基づくトレンドフォロー取引戦略

概要

この戦略の核心思想は,CCI指標を使用して市場の傾向の方向を判断すること,およびEMA指標を使用してCCIを平滑に処理し,トレンドフォロー取引を実現することです.CCIの上部でバイポイントを横切るときに多めにし,CCI下部でバイポイントを横切るときに空いて,市場トレンドフォローの目的を達成します.

戦略原則

  1. CCI指標の計算.CCI指標は,当日の閉店価格と過去20日の平均線の偏差度で,現在の株価が過買または過売りされているかどうかを判断する.公式は: ((typical price - 20日SMA) / (0.015 * 20日典型的な価格標準差) である).

  2. CCI指標にEMA平滑処理を行い,CCI-EMA曲線を得,CCI指標の振動を軽減し,信号をより明確にする.

  3. CCIの買点と売点を設定する.CCI-EMA上では買点を通るときは多行し,CCI-EMA下では売点を通るときは空行する.

  4. CCI-EMAが再び買点または売点に触れるまでポジションを保持し,平仓する.

戦略的優位分析

  1. CCIは市場動向の方向を判断し,EMAフィルターによる偽信号と組み合わせて,市場動向を効果的に追跡することができる.

  2. CCI指標は価格に異常な敏感性があり,トレンドの転換を素早く捉えることができる。EMA指標は誤報率を減らすことができる。この2つの組み合わせを使用すると,トレンドの初期段階でチャンスを捉えることができる。

  3. トレンドフォロー戦略は,取引回数を最大限に抑え,取引コストとスライドポイントの損失を削減します.

  4. 戦略の反省はより効果的で,実地での実用性がある.

戦略的リスク分析

  1. CCI指標には曲線に対する過度に敏感な問題があり,EMAはすべての偽信号を完全に排除できないため,ある程度の誤報リスクが残っている.

  2. 純粋なトレンドは戦略に従っており,トレンドが揺れや逆転した場合に損失を伴う.トレンド判断指標は適切に配合して使用すべきである.

  3. 市場状況に応じてパラメータを柔軟に調整できない純粋に機械的な取引戦略は,過度に最適化されるリスクがあります.

  4. 回測データは不十分で,実盤のパフォーマンスを完全に反映することはできません.実盤時にパラメータを適切に調整し,ストップダスを厳格に制御する必要があります.

戦略最適化の方向性

  1. CCIのパラメータを最適化し,異なる長さの周期のパラメータの効果をテストする.

  2. EMAパラメータを最適化して,最適なEMA周期長さを探す.

  3. 異なるポイントのパラメータの組み合わせをテストし,最適なパラメータを見つけます.

  4. 他の指標と組み合わせて,トレンドの逆転を判断し,損失の拡大を防ぐためにストップ・ローズを設定します.

  5. 自動パラメータ最適化機能が追加され,異なる品種に応じて最適なパラメータの組み合わせを自動的に探す.

要約する

この戦略は,全体として,比較的単純なトレンドフォローの取引戦略である. CCIを活用してトレンドの方向を判断し,価格変化に敏感であり,EMAと連携して波を行い,取引シグナルを生成する. この戦略には一定の利点があるが,注意すべきいくつかのリスクもあります.

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

//@version=4
strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07)

length = input(20, minval=1)
src = input(close, title="Source")
cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer) 
cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer) 
lengthcci = input(12,"length cci ema", minval=1)

ma = sma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
cciema=ema(cci,lengthcci)
plot(cci, "CCI", color=#996A15)
plot(cciSellPoint, title = 'CCI  Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35)
plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35)
band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed)
band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed)
fill(band1, band0, color=#9C6E1B, title="Background")

startLongTrade=  cciema >cciBuyPoint 
startShortTrade= cciema <cciSellPoint

//exitLong = cciema <cciSellPoint
//exitShort = cciema >cciBuyPoint 

strategy.entry("long",strategy.long, when = startLongTrade )
//strategy.close( "long", when=exitLong)
strategy.entry("short",strategy.short,when=startShortTrade )
//strategy.close("short", when=exitShort)