シンプルな組み合わせ戦略: ピボットポイントスーパートレンドと二重指数移動平均

ATR DEMA EMA
作成日: 2024-06-17 14:49:14 最終変更日: 2024-06-17 14:49:14
コピー: 0 クリック数: 723
1
フォロー
1617
フォロワー

シンプルな組み合わせ戦略: ピボットポイントスーパートレンドと二重指数移動平均

概要

この戦略は,枢軸超トレンド指数と二重指数移動平均 ((DEMA) 指数を組み合わせて,価格がこの2つの指数間の位置関係を分析することによって,取引信号を判断する.価格が枢軸超トレンド指数を破り,DEMA指数より高くなったら,多信号を生成し,価格が枢軸超トレンド指数を破り,DEMA指数より低くなったら,空信号を生成する.この戦略は,市場の中期的傾向を捉え,短期間の価格変動にも対応する.

戦略原則

  1. 枢軸ポイントスーパートレンド指数計算: 周期内の最高値と最低値の平均値を中心点として計算し,その後,平均真波幅 ((ATR)) に基づいて上下を計算し,ダイナミックなサポートとレジスタンス位置を形成する.
  2. DEMA指標を計算する.まず,閉盘価格の指数移動平均 ((EMA) を計算し,次にEMAを1度指数移動平均にすると,最後に2倍EMAをDEMAから引いて最終的なDEMA指標が得られる.
  3. 取引シグナルを生成する:閉盤価格が枢軸の超トレンドを突破してDEMA指数より上線したとき,多値シグナルを生成する.閉盤価格が枢軸の超トレンドを突破してDEMA指数より下線したとき,空調シグナルを生成する.
  4. ストップ・ロズとストップ・ストップを設定します. 特定のストップ・ロズとストップ・ストップの価格を,ピップ値と既定のストップ・ロズ・ピップとテイク・プロフィット・ピップに基づいて計算します.

戦略的優位性

  1. トレンド追跡能力の強さ:枢軸の超トレンド指標は市場トレンドを効果的に捉え,DEMA指標は価格のノイズを排除し,よりスムーズなトレンド判断の根拠を提供し,両者は,市場の主要なトレンドを正確に把握することができます.
  2. 適応性:軸の超トレンド指数の上下を動的に調整することで,異なる市場の変動状況に適応し,戦略の適応性を向上させる.
  3. リスク管理能力:明確なストップ・ロズとストップ・ストップの位置を設定することで,単一取引のリスクの限界を効果的に制御し,既得利益をタイムリーにロックすることができます.

戦略リスク

  1. パラメータ設定リスク:戦略のパフォーマンスは,枢軸点周期,ATR因子,DEMA長さなどの複数のパラメータの設定に依存し,異なるパラメータの組み合わせは,戦略のパフォーマンスの大きな差異を引き起こす可能性があり,慎重に選択して最適化する必要があります.
  2. 波動市場リスク:波動市場環境では,頻繁に取引するシグナルが過剰取引を引き起こし,取引コストと滑り場リスクを増やす可能性があります.
  3. トレンド転換リスク:市場のトレンドが逆転すると,戦略が連続して損失を伴う可能性があり,他の分析手段と組み合わせて戦略を適時調整する必要があります.

戦略最適化の方向性

  1. パラメータ最適化:異なる時間周期と取引品種に対するパラメータ最適化テストを行い,最適なパラメータの組み合わせを見つけ,戦略の安定性と収益性を向上させる.
  2. シグナルフィルター:取引シグナルが生じるとき,他の技術指標または価格行動特性と組み合わせて二次確認を行うことができ,信号の信頼性を高め,偽の信号による損失を減らす.
  3. ポジション管理:市場の変動や口座のリスク承受能力に応じて,取引ごとにポジションの大きさを動的に調整し,全体のリスクのを制御する.
  4. ポートフォリオ最適化:この戦略を他の戦略または取引システムと組み合わせ,リスクを分散し,安定性を高め,戦略の長期的なパフォーマンスを向上させる.

要約する

この戦略は,枢軸の超トレンド指標とDEMA指標を組み合わせることで,市場トレンドをよりよく捉え,短期的な変動にも対応することができる.戦略は,トレンド追跡能力,適応力,リスク管理能力などの優位性を持っているが,同時にパラメータ設定,市場の揺れ,トレンド転換などのリスクにも直面する.パラメータ最適化,シグナルフィルタリング,ポジション管理,ポートフォリオ最適化などの手段によって,戦略の安定性と収益性をさらに向上させ,異なる市場環境によりよく適応することができる.

ストラテジーソースコード
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple Combined Strategy: Pivot Point SuperTrend and DEMA", overlay=true)

// Pivot Point SuperTrend settings
prd = input.int(2, title="Pivot Point Period", minval=1, maxval=50)
Factor = input.float(3.0, title="ATR Factor", minval=1, step=0.1)
Pd = input.int(10, title="ATR Period", minval=1)

// Double EMA settings
demaLength = input.int(200, title="DEMA Length", minval=1)
src = input(close, title="Source")

// Pip settings
pipValue = input.float(0.0001, title="Pip Value")
stopLossPips = input.int(15, title="Stop Loss (pips)")
takeProfitPips = input.int(35, title="Take Profit (pips)")

// Pivot Point SuperTrend Calculation
float ph = ta.pivothigh(prd, prd)
float pl = ta.pivotlow(prd, prd)
var float center = na
if not na(ph)
    center := na(center) ? ph : (center * 2 + ph) / 3
if not na(pl)
    center := na(center) ? pl : (center * 2 + pl) / 3

Up = center - (Factor * ta.atr(Pd))
Dn = center + (Factor * ta.atr(Pd))
var float TUp = na
var float TDown = na
var int Trend = na

if na(Trend)
    TUp := Up
    TDown := Dn
    Trend := close > Dn ? 1 : -1
else
    TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
    TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
    Trend := close > TDown[1] ? 1 : close < TUp[1] ? -1 : nz(Trend[1], 1)

Trailingsl = Trend == 1 ? TUp : TDown
linecolor = Trend == 1 ? color.lime : color.red
plot(Trailingsl, color=linecolor, linewidth=2, title="PP SuperTrend")

// Double EMA Calculation
e1 = ta.ema(src, demaLength)
e2 = ta.ema(e1, demaLength)
dema = 2 * e1 - e2
plot(dema, "DEMA", color=color.new(#43A047, 0))

// Strategy Logic
longCondition = close > Trailingsl and close > dema and strategy.position_size <= 0
shortCondition = close < Trailingsl and close < dema and strategy.position_size >= 0

// Plot signals
plotshape(series=longCondition, title="Long", location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortCondition, title="Short", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Long", strategy.long, stop=close - (stopLossPips * pipValue), limit=close + (takeProfitPips * pipValue))
if (shortCondition)
    strategy.entry("Short", strategy.short, stop=close + (stopLossPips * pipValue), limit=close - (takeProfitPips * pipValue))

alertcondition(longCondition, title="Long Alert", message="Long Signal")
alertcondition(shortCondition, title="Short Alert", message="Short Signal")