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


作成日: 2023-09-21 10:59:55 最終変更日: 2023-09-21 10:59:55
コピー: 0 クリック数: 647
1
フォロー
1617
フォロワー

概要

この戦略は,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")