この戦略は,ZZ指標の価格チャネルに基づいて取引し,価格がチャネル帯以上/下を突破したとき,ロング/ショートポジションを取ります.チャネル範囲外のトレンド突破動きを把握することを目的としています.
価格チャネル帯を計算するために,ZZインジケーターを使用する.価格が下帯から上向きに突破したとき,ロングに行く.価格が上帯から下向きに突破したとき,ショートに行く.ストップ・ロスのオーダーはチャネル帯でストップ・ロスのレベルとして使用される.取引時間は,一夜間のリスクを避けるためにも定義されている.
チャンネルの範囲を拡大し,ストップ損失を最適化し,トレンド強度を測定することでリスクを軽減できます.
この戦略は,トレンドブレイクを特定するために価格チャネルブレイクを取引する.プロはシンプルな明確な信号と簡単な操作であり,デメリットはウィップソーとトレンドに乗れないことである.パラメータ最適化と戦略の組み合わせは,プロを保持しながらデメリットを克服することができます.これはトレーダーが価格チャネル技術を適用することをマスターするのに役立ちます.
/*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")