ZZ-4 価格チャネルブレイク戦略

作者: リン・ハーンチャオチャン開催日:2023年9月21日 10:59:55
タグ:

概要

この戦略は,ZZ指標の価格チャネルに基づいて取引し,価格がチャネル帯以上/下を突破したとき,ロング/ショートポジションを取ります.チャネル範囲外のトレンド突破動きを把握することを目的としています.

戦略の論理

  1. 価格チャネルの上位/下位帯を計算する
  2. 価格が上位帯を突破すると長引く
  3. 価格が下帯を下回るとショート
  4. 取引時間帯を設定する
  5. 日々の閉店前にクリアするポジション

価格チャネル帯を計算するために,ZZインジケーターを使用する.価格が下帯から上向きに突破したとき,ロングに行く.価格が上帯から下向きに突破したとき,ショートに行く.ストップ・ロスのオーダーはチャネル帯でストップ・ロスのレベルとして使用される.取引時間は,一夜間のリスクを避けるためにも定義されている.

利点分析

  1. 価格チャネルは,潜在的なトレンドブレイクを特定します.
  2. シンプルで明確な取引信号
  3. カスタマイズ可能なチャネル期間が異なる製品とサイクルに適しています
  4. 取引時間と日々の出口リスク管理
  5. ストップ損失制限 単一の取引損失

リスク分析

  1. チャネル内部のウィップソーが繰り返しストップ・ロストを打つ可能性があります.
  2. 適時なパラメータ調節が必要で,そうでなければチャンネル範囲が不正確になる可能性があります.
  3. 脱出は偽りで 罠にかかったりする
  4. 収益の可能性はチャネル範囲によって制限されています
  5. トレンドの動きを完全に活用できない

チャンネルの範囲を拡大し,ストップ損失を最適化し,トレンド強度を測定することでリスクを軽減できます.

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

  1. 最適な設定のために異なるパラメータの組み合わせをテストする
  2. 価格チャネルを拡大して,より大きな動きを捉える
  3. 誤ったブレイクを避けるためにトレンドインジケーターを追加
  4. ストップ・ロスを最適化して 閉じ込められないようにする
  5. ブレイクアウト利益を最大化するためにポジションサイズを増やす
  6. 異なる日付範囲で収益性を評価する

概要

この戦略は,トレンドブレイクを特定するために価格チャネルブレイクを取引する.プロはシンプルな明確な信号と簡単な操作であり,デメリットはウィップソーとトレンドに乗れないことである.パラメータ最適化と戦略の組み合わせは,プロを保持しながらデメリットを克服することができます.これはトレーダーが価格チャネル技術を適用することをマスターするのに役立ちます.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ZZ-4 Strategy", shorttitle = "Noro's ZZ-4 Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(7, minval = 1, title = "Length")
showll = input(true, defval = true, title = "Show Levels")
showbg = input(false, defval = false, title = "Show Background")
showpc = input(false, defval = false, title = "Show Price Channel")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price channel
h = highest(ohlc4, len)
l = lowest(ohlc4, len)
pccol = showpc ? color.blue : na
plot(h, color = pccol, transp = 0)
plot(l, color = pccol, transp = 0)

//Levels
ml = 0
ml := l > l[1] ? 1 : l < l[1] ? -1 : ml[1]
ll = 0.0
ll := ml == 1 and ml[1] == -1 ? l[1] : ll[1]
mh = 0
mh := h > h[1] ? 1 : h < h[1] ? -1 : mh[1]
hl = 0.0
hl := mh == -1 and mh[1] == 1 ? h[1] : hl[1]

//Lines
colorh = showll and hl == hl[1] ? color.lime : na
colorl = showll and ll == ll[1] ? color.red : na
plot(hl, color = colorh, linewidth = 2, transp = 0, title = "Long")
plot(ll, color = colorl, linewidth = 2, transp = 0, title = "Short")

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= hl ? 1 : low <= ll ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if ll > 0 and hl > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = hl, when=(truetime))
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = ll, when=(truetime))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

もっと