スーパートレンド ボリンガー帯 双動平均取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-23 13:58:36
タグ:

img

概要

この戦略は,スーパートレンド,ダブル移動平均値 (DEMA) とボリンジャー帯を含む複数の技術指標を統合し,その強みを活用し,より正確な取引信号を生成します.

戦略の論理

この戦略は,12期間のATRと価格平均を使用して,スーパートレンドの上下帯を計算し,価格がそれらの帯を突破したときの長短信号を識別する.一方,200期間のDEMAはトレンド判断のための補助指標として機能する.また,ボリンジャー帯はエントリーとストップ損失の最適なタイミングを決定するのに役立ちます.

購入信号は価格が上位帯を超えると生成される.販売信号は価格が下位帯を下回ると生成される.価格がスーパートレンドの上位または下位帯を通過すると,マーカーとテキスト"購入"または"販売"が対応する帯にプロットされる.モバイルアラートも同時に送信される.

DEMAは,市場全体の傾向の方向性を判断するために,価格曲線の上下を白色でグラフ化しています.

ボリンジャー帯は,エントリーとストップ損失の最適なタイミングを特定するために使用されます.その上部と下部帯は,価格変動を含むチャネルを形成し,価格が通常の範囲から離れ,つまり過剰に不安定になったときに判断するのに役立ちます.

取引を開始した後,ストップ・ロストとプロフィート・テイク・メソッドを使用して,ストップ・ロスト価格を設定し,自動的なポジション削減のためにプロフィート・テイク・プロフィート価格を設定することで,利益を固定または損失を削減します.

利点分析

複数の指標を統合することで,この戦略はより正確な取引信号を生成するために個々の強みを最大限に活用することができます.

Supertrendは市場騒音をフィルタリングし,過剰取引を避ける能力がある.DEMAは一般的なトレンド方向を決定し,トレンドに反する取引を防ぐことができる.ボリンガーバンドはエントリーとストップ損失の最適なタイミングを特定する.

自動ストップ・ロストとテイク・プロフィートにより 利益を固定し損失を削減できます

リスク分析

複数の指標の統合は戦略の複雑性とエラーの確率を増加させる.指標パラメータの設定はまた,取引機会を逃すか,誤った信号を生成する可能性があります.

さらに,過度に攻撃的なストップ損失設定は損失を増幅する可能性があります.モバイルアラートの安定性は,タイムリーな利益とストップ損失の有効性にも影響を与えます.

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

最適なパラメータセットを見つけるために,異なるパラメータ組み合わせをテストすることができる.パラメータは,異なる市場状況に基づいて調整することもできる.

個々の指標を単独で使用しようとすると,誤った信号が減少する可能性があります.さらに最適化するために,補足的な指標も追加できます.

ストップ・ロスの基準や 利益を得る基準は,ストップ・ロスの遅れや 部分的なストップ・ロスのような調整の対象となります.

概要

この戦略は,取引信号生成のための複数の技術指標の強みを組み合わせ,比較的高い実用性を持っています.しかし,それはまた,特定のリスクに直面し,効果的かつ収益性の高い雇用のために継続的なテストと最適化を必要とします.


/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
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/
// © zhuenrong

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))

dnPlot = plot(showSupertrend ? (trend == 1 ? na : dn) : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)
// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    //strategy.exit("Sell")
    //alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    //strategy.exit("Cover")
    //alert("Sell Signal - Supertrend")


// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)

もっと