資源の読み込みに... 荷物...

CCI + MA クロスオーバー・プルバック・買い戦略

作者: リン・ハーンチャオチャン開催日:2024年5月24日17時45分49秒
タグ:CCIマルチ

img

概要

CCI+MAクロスオーバープルバック購入戦略は,コモディティチャネルインデックス (CCI) とダブル移動平均クロスオーバー信号を組み合わせた定量的な取引戦略である. 戦略は,価格が高速移動平均に戻ると購入し,CCIは上昇型クロスオーバー後の過売り状態を示します. 価格が高速移動平均に上昇し,CCIは下落型クロスオーバー後に過買い状態を示したとき販売します. CCIとダブル移動平均クロスオーバー信号を組み合わせることで,この戦略はトレンドの機会をよりうまく捉え,プルバック購入とラリー販売を通じてより良いエントリーと出口ポイントを達成し,リスク・リターン比率を改善することができます.

戦略の論理

  1. CCI指標は,ユーザーによって定義されたCCIパラメータ (ソース,期間,移動平均の種類,過買い/過売値) を基に計算する.
  2. CCIの過剰購入/過剰販売条件を特定する.CCIが過剰購入の値を超えると背景色を赤色に,過剰販売の値を下ると緑色に設定する.
  3. ユーザーによって定義されたパラメータ (ソース,期間,移動平均の種類) を基に,高速移動平均と遅い移動平均を計算する.
  4. 上昇傾向と下落傾向のクロスオーバーを識別する. 急速なMAが遅いMAを超えると上昇信号と,急速なMAが遅いMAを下回ると下落信号を描画する.
  5. 取引の決断をする
    • ロング エントリー: 速いMAがスローMAより高く,前のキャンドルは速いMAより低く閉じて,現在のキャンドルは上昇傾向にあり,CCIは過剰販売の限界を下回ると,ロングポジションを開くために購入する.
    • 短入口: 速いMAがスローMAを下回り,前のキャンドルは速いMA以上で閉じる,現在のキャンドルは下落し,CCIは過剰購入の限界を超えると,ショートポジションを開くために売却する.

戦略 の 利点

  1. トレンドフォロー: 二重移動平均のクロスオーバー信号は,トレンドの方向性を特定し,市場のトレンドによりよく一致するのを助けます.
  2. 反トレンドエントリー:トレンドの確認後,価格の引き下げを待つことや価格の上昇を待つことにより,より良いエントリー価格とリスク・リターン比率が向上します.
  3. 誤った信号の減少:CCIと移動平均のクロスオーバー信号を組み合わせることで,単一の指標によって生成される誤った信号を効果的に減らすことができます.
  4. 柔軟なパラメータ: 戦略のパフォーマンスを最適化するために,ユーザーは自分の好みに応じてCCIと移動平均のパラメータを柔軟に設定できます.

戦略リスク

  1. 不安定な市場リスク: 不安定な市場では,頻繁な上昇と下落のクロスオーバーが,より多くの損失を招く可能性があります.
  2. パラメータリスク: パラメータの設定が不適切である場合,戦略のパフォーマンスが低下する可能性があります.異なる市場条件に最適なパラメータ組み合わせの徹底的なバックテストと分析が必要です.
  3. トレンドリスク: 市場のトレンドが逆転すると,戦略は退場を遅らせ,より大きな引き下げを受ける可能性があります.

戦略の最適化方向

  1. ポジションサイズを導入し,現在のトレンド強度と波動性に基づいて,それぞれの取引のポジションサイズを動的に調整し,よりよいリスク管理を図る.
  2. 入力信号の信頼性を向上させるために,音量指標または他の補助確認指標を組み込むことで入力条件を最適化する.
  3. トレーリングストップやタイムストップを設定して,取引あたりの最大損失を減らすことで,出口条件を最適化します.
  4. 戦略の適応性と強さを高めるために,異なる市場や手段のパラメータを個別に最適化する.

概要

CCI+MAクロスオーバープルバック買い戦略は,トレンドフォローとコントラトレンドエントリーの利点を組み合わせた定量的な取引戦略である. ツールの移動平均値でトレンド方向を把握し,CCI指標でオーバーバイト/オーバーセールゾーンを特定し,より良いエントリー価格を達成するために価格のプルバックとラリーを待機しながら,戦略は収益性とリスク・リターン比率を一定程度向上させる可能性がある.しかし,この戦略はパラメータ最適化,不安定な市場,急激なトレンド変化などのリスクにも直面している.戦略の堅牢性と収益性を高めるためにさらなる最適化と改善が必要である.戦略の論理は明確であり,コード構造は完全であり,全体的なライブ取引に適している.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tradedots

//@version=5
strategy("CCI + MA Crossover Pullback Buy Strategy [TradeDots]", overlay=true)


ma(source, length, type) =>
  type == "SMA" ? ta.sma(source[1], length) :
  type == "EMA" ? ta.ema(source[1], length) :
  type == "SMMA (RMA)" ? ta.rma(source[1], length) :
  type == "WMA" ? ta.wma(source[1], length) :
  type == "VWMA" ? ta.vwma(source[1], length) :
  na

//CCI settings
cci_coloring  = input.bool(true, "CCI Background Color", group = "Commodity channel index")
cci_length    = input.int(20,"CCI Length", group = "Commodity channel index")
cci_ma_type   = input.string("EMA","CCI MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group = "Commodity channel index")
cci_soruce    = input(hlc3, "CCI Source", group = "Commodity channel index")
cci_threshold = input.int(100, "CCI Threshold", group = "Commodity channel index")
cci_ma = ma(cci_soruce, cci_length, cci_ma_type)
cci = (cci_soruce - cci_ma) / (0.015 * ta.dev(cci_soruce, cci_length))

bgcolor(cci > cci_threshold and cci_coloring ? color.new(#f9396a, 80) : cci < -cci_threshold and cci_coloring? color.new(#9cff87, 80) : na, title = "CCI Overbought / Oversold")

//ma crossover settings
input_crossover_labels = input.bool(true, "Show Crossover Labels", group="Moving average")

fastma_type   = input.string("EMA","", inline="fastma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
fastma_source = input(close, "", inline="fastma", group="Moving average")
fastma_length = input.int(10, "", inline="fastma", minval=1,group="Moving average")
fastma_color  = input(#e2fdff, "", inline="fastma",group="Moving average")
fastma = ma(fastma_source, fastma_length, fastma_type)
fastmaPlot = plot(fastma, color = #b7e4c7, linewidth = 2, title = "Fast MA")

slowma_type   = input.string("EMA","", inline="slowma", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Moving average")
slowma_source = input(close, "", inline="slowma", group="Moving average")
slowma_length = input.int(30, "", inline="slowma", minval=1,group="Moving average")
slowma_color  = input(#e2fdff, "", inline="slowma",group="Moving average")
slowma = ma(slowma_source, slowma_length, slowma_type)
slowmaPlot = plot(slowma, color = #2d6a4f, linewidth = 2, title = "Slow MA")

bullish_crossover = ta.crossover(fastma, slowma)
bearish_crossover = ta.crossunder(fastma, slowma)

// // strategy
// if bullish_crossover and input_crossover_labels
//     line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#9cff87, 30), style = line.style_dotted, width = 3)
//     label.new(bar_index,low, "Bullish Crossover", style = label.style_label_up, color = #9cff87)

// else if bearish_crossover and input_crossover_labels
//     line.new(bar_index, close, bar_index, close * 1.01, extend = extend.both, color = color.new(#f9396a, 30), style = line.style_dotted, width = 3)
//     label.new(bar_index, high, "Bearish Crossover", style = label.style_label_down, color = #f9396a, textcolor = color.white)

if fastma > slowma and close[1] < fastma and close > open and cci < -cci_threshold
    strategy.entry("Long", strategy.long)
    // if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) < 0
    //     label.new(bar_index,low, "🟢 Long", style = label.style_label_up, color = #9cff87)

if fastma < slowma and close[1] > fastma and close < open and cci > cci_threshold
    strategy.entry("Short", strategy.short)
    // if strategy.opentrades == 0 or strategy.opentrades.size(strategy.opentrades -1) > 0
    //     label.new(bar_index, high, "🔴 Short", style = label.style_label_down, color = #f9396a, textcolor = color.white)

関連性

もっと