双重スーパートレンドとMACD組み合わせ取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-26 17:45:03
タグ:

概要

双重スーパートレンドとMACD組み合わせの取引戦略は,トレンドをフォローする指標2つ (スーパートレンド1とスーパートレンド2) とモメントオシレーター (MACD) を併用して,裁量的な意思決定なしで取引に体系的なアプローチを提供します.

この戦略の主な利点は:

  • デュアル・スーパートレンド検証 - 異なるATR期間と因子を持つ2つのスーパートレンドインジケーターを使用してトレンド方向を確認することで,誤った信号を最小限に抑える.

  • モメント確認 - MACD ヒストグラムは,エントリーと出口を検証するためのモメントフィルターとして機能します.

  • 目標 入国・退出規則 - 戦略は,トレンドと勢力の組み合わせに基づいた明確な購入・売却信号を生成します.

  • 自動化取引管理 - プロミス,スリップ,初期資本の内蔵設定は,取引実行プロセスを自動化します.

  • カスタマイズ可能性 - すべてのパラメータは,特定の取引ニーズと変化する市場状況に合わせて簡単にカスタマイズできます.

働き方

この戦略は,定義されたルールに基づいて動作し,主にダブルスーパートレンドによって確認されたトレンド方向とMACDヒストグラムで示されたモメントに焦点を当てています.

入国規則

  • ロング エントリー:スーパートレンドが上昇し,MACDヒストグラムがゼロ以上です.

  • ショート エントリー:スーパートレンドはベアシストで MACDヒストグラムはゼロ以下.

退去規則

  • エグジット・ロング:スーパートレンドが下落し,MACDヒストグラムがゼロを下回る.

  • エグジット・ショート:スーパートレンドが上昇するか,MACDヒストグラムがゼロ以上上昇するか.

貿易管理

  • 定額手数料と滑り値設定

  • 過剰な曝露を防ぐための自動リスク管理

取引方向

この戦略は,バリーッシュ市場とベアッシュ市場の両方で取引を可能にします.ユーザーは,市場観に合わせて方向 (ロング,ショート,または両方) を選択できます.

使用

  • 傾向が顕著な時間枠で適用されるのが最善です

  • ユーザはスーパートレンドとMACDパラメータをカスタマイズできます.

デフォルト設定

  • スーパートレンド 1 ATR 期間: 10

  • スーパートレンド 1 要素: 3.0

  • スーパートレンド2 ATR期間:20

  • スーパートレンド2 ファクター: 5.0

  • MACD 速度の長さ: 12

  • MACD スロー長さ: 26

  • MACD信号のスムージング: 9

  • コミッション: 0.1%

  • 滑り: 1ポイント

  • 監督: 両方

デフォルトパラメータはバランスの取れたアプローチですが,カスタマイズできます.

利点

この戦略の主な利点は:

  1. 二重トレンド検証は 誤った信号を最小限に抑える

2つのスーパートレンド指標を使用すると,単一指標戦略と比較して誤った信号が大幅に減少します.二重確認メカニズムは信頼性を向上させます.

  1. MACDモメントフィルターは正確性を向上させる

MACDヒストグラムは理想的でない取引信号をフィルタリングし,エントリー精度を向上させます.

  1. 効果的な抽出管理

二重トレンドインジケーターの組み合わせにより,トレンドが変わると迅速な出口が可能になり,引き下げを制御するのに役立ちます.

  1. 高度な自動化,裁量が必要ない

明確に定義された入出規則は 主観的な解釈や人間の誤りを排除します

  1. 幅広い適用のために高度にカスタマイズできます

調整可能なパラメータにより,この戦略は異なる楽器と取引の好みに適しています.

リスク と 最適化

潜在的なリスクには,以下が含まれます.

  1. 動的トレンド移行における困難

傾向の反転が頻繁に起きることは,二重傾向指標の設定に課題となる可能性があります.

  1. 強い傾向の際の限られた抽出制御

ストップ・ロスは強いトレンド・ムーブメントに遅れ,より大きな引き下げにつながる可能性があります.

  1. 突然の出来事に対して反応できないこと

ブラック・スワン事件に 素早く適応できず 引き上げリスクも高まります

オプティマイゼーションの可能性

  1. 異なる楽器のための微調整パラメータ

  2. ストップ・ロスのメカニズムを追加します トレイリング・ストップのようなもの

  3. 突発的な出来事を特定し,引き上げを減らすために他の指標を組み込む.

結論

概要すると,ダブルスーパートレンドとMACDの組み合わせ戦略は,トレンドフォローとモメント分析の強みを組み合わせています.明確なルールと高度な自動化により,ノイズを効果的にフィルタリングし,強力な実用的なユーティリティを提供します.しかし,引き下げ制御とパラメータ最適化に取り組む必要があります.全体として,これは体系的なトレンド取引戦略の最良の例の一つです.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

//@version=5
// Define the strategy settings
// strategy("Dual-Supertrend with MACD - Strategy [presentTrading]", overlay=true, precision=3, default_qty_type=strategy.cash, 
//  commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
//   currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Trading Direction Dropdown
tradeDirection = input.string("both", "Trading Direction", options=["long", "short", "both"])

// MACD Inputs
fast_length = input(12, "Fast Length")
slow_length = input(26, "Slow Length")
signal_length = input(9, "Signal Smoothing")
sma_source = input.string("EMA", "Oscillator MA Type", options=["SMA", "EMA"])
sma_signal = input.string("EMA", "Signal Line MA Type", options=["SMA", "EMA"])


// MACD Calculation
fast_ma = sma_source == "SMA" ? ta.sma(close, fast_length) : ta.ema(close, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(close, slow_length) : ta.ema(close, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Input Parameters for Supertrend 1
atrPeriod1 = input(10, "ATR Length for Supertrend 1")
factor1 = input.float(3.0, "Factor for Supertrend 1", step=0.01)

// Supertrend Calculation for 1
[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)

// Input Parameters for Supertrend 2
atrPeriod2 = input(20, "ATR Length for Supertrend 2")
factor2 = input.float(5.0, "Factor for Supertrend 2", step=0.01)

// Supertrend Calculation for 2
[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)

// Combined Conditions
isBullish = direction1 < 0 and direction2 < 0 and hist > 0
isBearish = direction1 > 0 and direction2 > 0 and hist < 0
exitLong = direction1 > 0 or direction2 > 0 or hist < 0
exitShort = direction1 < 0 or direction2 < 0 or hist > 0

// Strategy Entry and Exit based on Trading Direction
if (tradeDirection == "both" or tradeDirection == "long")
    strategy.entry("Buy", strategy.long, when=isBullish)
    strategy.close("Buy", when=exitLong)

if (tradeDirection == "both" or tradeDirection == "short")
    strategy.entry("Sell", strategy.short, when=isBearish)
    strategy.close("Sell", when=exitShort)

bodyMiddle1 = plot((open + close) / 2, display=display.none)
upTrend1 = plot(direction1 < 0 ? supertrend1 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend1 = plot(direction1 < 0? na : supertrend1, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle1, upTrend1, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle1, downTrend1, color.new(color.red, 90), fillgaps=false)

bodyMiddle2 = plot((open + close) / 2, display=display.none)
upTrend2 = plot(direction2 < 0 ? supertrend2 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend2 = plot(direction2 < 0? na : supertrend2, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle2, upTrend2, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle2, downTrend2, color.new(color.red, 90), fillgaps=false)

もっと