CCIとEMAのトレンド 取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月2日 15:17:22
タグ:

img

概要

この戦略の主な考え方は,CCI指標を使用して市場傾向の方向性を決定し,EMA指標を使用してCCIを平滑させ,取引後のトレンドを実装することです.CCIが買い点を超えるとロングで,CCIが売り点を下回るとショートで,市場のトレンドをたどります.

戦略の論理

  1. CCI指標を計算する.CCI指標は,現在の株価が20日間の移動平均値からの偏差程度に基づいて過買いまたは過売りされているかどうかを判断する.公式は: (典型的な価格 - 20D SMA) / (0.015 * 20D TP標準偏差).

  2. CCIの変動を軽減し,信号をより明確にするCCI-EMA曲線を得るため,CCI指標をEMAで滑らかにします.

  3. CCIの買い売りポイントを設定します.CCI-EMAが買いポイントを超えるとロングで,CCI-EMAが売りポイントを下回るとショートします.

  4. CCI-EMAが買い/売点に再び触れるまでポジションを保持し,ポジションを閉じます.

利点分析

  1. 市場動向の方向性を決定するためにCCIを用い,EMAを誤った信号をフィルタリングするために使えば,市場の動向を効果的に追跡することができる.

  2. CCIは価格異常に敏感で,トレンド逆転を迅速に把握することができる. EMAは誤った信号を減らす.一緒に使用すると,トレンドの開始時に機会を掴むことができます.

  3. トレンドフォローする戦略は取引を最小限に抑え,取引コストとスライドを減らす.

  4. バックテストの結果は良好で 戦略には実用性がある

リスク分析

  1. CCIは曲線に過度に敏感で,EMAはすべての誤った信号を完全にフィルターすることはできません.

  2. 純トレンドフォロー戦略は,トレンドが収束または逆転するときに損失を起こす傾向があります.トレンド判断指標を使用する必要があります.

  3. メカニカルな取引システムは 市場に基づいてパラメータを柔軟に調整できません 過剰な最適化はリスクです

  4. 制限されたバックテストデータは,ライブパフォーマンスを完全に反映することはできません.パラメータは慎重に調整され,ストップは厳格に管理する必要があります.

オプティマイゼーションの方向性

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

  2. EMA パラメータを最適化して最適な EMA 期間を見つけます.

  3. 最適なパラメータを見つけるために 異なる買い/売点組み合わせをテストします

  4. 傾向の逆転とストップ損失を決定するための他の指標を組み込む.

  5. 異なる製品の最適なパラメータを見つけるために,自動パラメータ最適化を追加します.

概要

基本的には,このトレンドフォロワーストラテジーは比較的単純なトレンドフォロワーストラテジーである.TCIを使用してトレンド方向を決定し,価格変化に敏感であり,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)

もっと