
この戦略の核心思想は,CCI指標を使用して市場の傾向の方向を判断すること,およびEMA指標を使用してCCIを平滑に処理し,トレンドフォロー取引を実現することです.CCIの上部でバイポイントを横切るときに多めにし,CCI下部でバイポイントを横切るときに空いて,市場トレンドフォローの目的を達成します.
CCI指標の計算.CCI指標は,当日の閉店価格と過去20日の平均線の偏差度で,現在の株価が過買または過売りされているかどうかを判断する.公式は: ((typical price - 20日SMA) / (0.015 * 20日典型的な価格標準差) である).
CCI指標にEMA平滑処理を行い,CCI-EMA曲線を得,CCI指標の振動を軽減し,信号をより明確にする.
CCIの買点と売点を設定する.CCI-EMA上では買点を通るときは多行し,CCI-EMA下では売点を通るときは空行する.
CCI-EMAが再び買点または売点に触れるまでポジションを保持し,平仓する.
CCIは市場動向の方向を判断し,EMAフィルターによる偽信号と組み合わせて,市場動向を効果的に追跡することができる.
CCI指標は価格に異常な敏感性があり,トレンドの転換を素早く捉えることができる。EMA指標は誤報率を減らすことができる。この2つの組み合わせを使用すると,トレンドの初期段階でチャンスを捉えることができる。
トレンドフォロー戦略は,取引回数を最大限に抑え,取引コストとスライドポイントの損失を削減します.
戦略の反省はより効果的で,実地での実用性がある.
CCI指標には曲線に対する過度に敏感な問題があり,EMAはすべての偽信号を完全に排除できないため,ある程度の誤報リスクが残っている.
純粋なトレンドは戦略に従っており,トレンドが揺れや逆転した場合に損失を伴う.トレンド判断指標は適切に配合して使用すべきである.
市場状況に応じてパラメータを柔軟に調整できない純粋に機械的な取引戦略は,過度に最適化されるリスクがあります.
回測データは不十分で,実盤のパフォーマンスを完全に反映することはできません.実盤時にパラメータを適切に調整し,ストップダスを厳格に制御する必要があります.
CCIのパラメータを最適化し,異なる長さの周期のパラメータの効果をテストする.
EMAパラメータを最適化して,最適なEMA周期長さを探す.
異なるポイントのパラメータの組み合わせをテストし,最適なパラメータを見つけます.
他の指標と組み合わせて,トレンドの逆転を判断し,損失の拡大を防ぐためにストップ・ローズを設定します.
自動パラメータ最適化機能が追加され,異なる品種に応じて最適なパラメータの組み合わせを自動的に探す.
この戦略は,全体として,比較的単純なトレンドフォローの取引戦略である. 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)