需要供給の勢いを逆転させる取引戦略

作者: リン・ハーンチャオチャン開催日:2024年1月22日 17:34:05
タグ:

img

概要

この戦略は,トレンドが方向を変えるときの市場動向と取引の逆転点を特定するために,モメントインジケーターと移動平均を組み合わせます.これはトレンドフォローおよびコントラトレンドトレード戦略に属します.主な構成要素には,供給と需要ゾーン,EMA,様々なHH,LL,LH,HLロングおよびショートゾーン,ATRトレーリングストップ損失などが含まれます.

戦略の論理

1. 供給と需要の識別

クラインの高低範囲に基づいて供給と需要関係を区別する.赤色の領域は供給が需要供給領域を超えていることを示している.緑色の領域は需要が供給需要領域を超えていることを示している.

2. EMAの傾向判断

200期間のEMAをプロットし,EMAと価格を比較して上昇傾向と下落傾向を決定します.EMAを超える価格は上昇傾向,EMA以下の価格は下落傾向とみなされます.

3. 長い 短い ゾーン の 標識

最近の2つのキャンドルの高低点に基づいて逆転ゾーンを決定します.

  • HHゾーン (Higher High Zone) - 連続して2本のキャンドルの最高値が,より高い高値になります.
  • LLゾーン (Lower Low Zone) - 2つ連続したキャンドルの低値が低値になります
  • LHゾーン (Low High Zone) - 最近の高値が低値に逆転した
  • HLゾーン (Higher Low Zone) - 最近の低低低値が高低値に逆転する

4. ATR トレイリングストップ損失

ストップ・ロスのレベルを導き出すために 14 期間の ATR 値を 2 倍に掛け算する.

5. 入口とストップ損失出口

前回のキャンドルの高値/低値との価格関係を監視する. 価格が前回の高値を超えるとロング信号が起動する. 価格が前回の低値を下回るとショート信号が起動する. 誤った信号を避けるために3番目のキャンドルまでエントリー信号の確認を遅らせます. 価格がATRの後ろストップ損失レベルを超えるとストップ損失で退出します.

利点分析

  1. 多数の指標を利用して 傾向と主要逆転領域を特定し 収益率を向上させる
  2. ATRのストップ・ロスは,取引毎の損失リスクを効果的に制限することができます.
  3. 遅れた入力信号の確認は 偽取引を最小限に抑える

リスク分析

  1. 基本情報を考慮せずに技術指標だけに頼ることは,重要なデータが欠けているため,取引の失敗につながる可能性があります.
  2. ATRのストップロスは 莫大な波動性により損失を伴う場合もあります
  3. 変動市場における EMA 逆転のシグナルが頻繁に発信されれば,取引が過剰になる可能性があります.

リスク対策

  1. 経済データと政策判断を補完する.
  2. ATR 掛け算係数に対してより広いバッファを許可する.
  3. ATR 期間パラメータを調整して範囲内での敏感性を回避する.

増進 の 機会

  1. MACD,RSIなどの技術指標を補完してタイミングを改善します
  2. 最適化のために異なる周期と倍数パラメータの組み合わせをバックテストします
  3. シグナルが壊れるのを防ぐために 再突出フィルターを追加してください
  4. パラメータを動的に最適化するために機械学習などを使用します.

結論

この戦略は,主要分野における市場の逆転機会を効果的に特定するために,供給/需要分析,傾向決定,逆転識別およびリスク管理モジュールを組み合わせます.これはトレンドフォローおよび反トレンドセットアップのための強力なシステムです.継続的なテスト,最適化,人間の経験判断は長期の安定した利益にとって重要です.


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

//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)

showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")

emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")

// Function to identify supply and demand zones
getZones(src, len, mult) =>
    base = request.security(syminfo.tickerid, "D", close)
    upper = request.security(syminfo.tickerid, "D", high)
    lower = request.security(syminfo.tickerid, "D", low)
    multiplier = request.security(syminfo.tickerid, "D", mult)
    zonetype = base + multiplier * len
    zone = src >= zonetype
    [zone, upper, lower]

// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)

// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)

// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)

// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)

// Plot EMA
plot(ema, color=emaColor, title="EMA")

// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and (bar_index >= 2)
shortCondition = ta.crossunder(close, low[1]) and (bar_index >= 2)

// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)

// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)

// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")

// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)


もっと