ジグザグ 脱出戦略

作者: リン・ハーンチャオチャン開催日:2023年10月20日 16:37:28
タグ:

img

概要

この戦略は,サポートとレジスタンスラインを引くため,ジグザック指標を使用し,価格がサポートまたはレジスタンスラインを突破したとき,ロングまたはショートポジションを取ります.

戦略の論理

この戦略は,まずジグザック指標を使用して,特定のパラメータの下でジグザック線を描きます.ジグザック指標が底を突破すると緑色サポート線が描かれます.ジグザックが上を突破すると赤色レジスタンス線が描かれます.価格が緑色の線を超えるとロングポジションが取られます.価格が赤線を下回るとショートポジションが取られます.

具体的には 基本的な論理は

  1. 3倍指数関数移動平均値で閉じる価格を平滑にします.

  2. 滑らかな曲線が上昇しているかどうかを判断します.上昇し,前のバーが上昇していなかった場合,それは底とみなされます.このバーの最低価格を取ります.落ちていた場合,前のバーが上昇していた場合は,それはトップとみなされます.このバーの最高価格を取ります.そうでなければNaNです.

  3. このプロセスを繰り返してジグザック線ジグザックを得ます

  4. シグザグで上昇すると,現在のピークポイントを記録します. 落ちるとき,現在の底点を記録します.

  5. 点が上昇すると緑のサポートラインを上向きに描き 点が落ちると赤の抵抗ラインをDNレベルに描きます

  6. 価格が緑線を超えるとロングポジションを取ります.価格が赤線を超えるとショートポジションを取ります.

利点分析

この戦略の利点は以下の通りです.

  1. ジグザグ指標を使用して主要なサポート/レジスタンスレベルを特定します.これらのレベルはしばしば重要です.

  2. シグザグは市場のノイズをフィルターで 明らかに取引信号を生成します

  3. 突破でポジションを入力し,トレンド逆転を間に合うようにします.

  4. サポート/レジスタンス線を描く簡単な方法です

  5. 明確な論理と大きなパラメータ最適化空間

  6. 製品や時間枠の選択に柔軟性 適応力

リスク分析

この戦略のリスク:

  1. 不適切なジグザグパラメータは 取引機会を逃す可能性があります

  2. ストップ・ロスはリスクをコントロールするために使用します.

  3. 突破信号は誤解を招く 傾向とパターンで検証が必要です

  4. 長期にわたる横向き取引は,過度に非効率な取引を生む可能性があります.

  5. 取引コストを考慮し,過度に頻繁な取引を避ける.

解決策:

  1. 最良の組み合わせを見つけるためにジグザグパラメータを最適化します.

  2. 損失を制限するために,ブレイク後にタイムリーストップ損失を設定します.

  3. 精度を高めるために 傾向指標のようなフィルターを追加します

  4. 横向きの取引を特定し,これらの期間中に取引を避けましょう.

  5. 不効率な取引を減らすために 脱出範囲を緩める

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

戦略は以下の側面で最適化できます.

  1. シグザグパラメータを最適化するためにバックテストを行います

  2. 突破後にサポート/レジスタンスを再テストする可能性を考慮します. 再テストシナリオのために出口論理を追加します.

  3. 低確率信号をスクリーンアウトします 低確率信号をスクリーンアウトします

  4. ボリュームインジケーターを組み込み ブレイク信号を確認します

  5. 誤った信号と利益をフィルタリングするために,ラッヘンブルクの二重的方法論 (長期と短期) を実施する.

  6. マシン学習を使って パーマータを動的に最適化します

  7. リスクを制限するためにストップ・ロスの戦略を導入する.

結論

簡単に言うと,これはシンプルで実用的な振動ブレイクアウト戦略です.ジグザックとトレードブレイクアウトを使用してサポート/レジスタンスを引き出す.この戦略は適応性がありますが,いくつかのリスクがあります.パラメータ,シグナルフィルター,リスク制御の最適化により改善できます.そのようなブレイクアウト戦略は,市場のリズムを理解できるアクティブトレーダーに適しています.


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

//Noro
//2018

//@version=3
// strategy(title = "Noro's ZZ-2 Strategy", shorttitle = "Noro's ZZ-2 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, %")
length = input(4, title = "ZigZag length")
Extreme = input(4, title = "ZigZag extreme")
src = input(close, title = "Source")
showzz = input(false, defval = false, title = "Show ZigZag")
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, Extreme)
zzcol = showzz ? black : na
plot(zigzag, color = zzcol, linewidth = 2)

//Levels
dot = 0.0
dot := zigzag > 0 ? zigzag : dot[1]
uplevel = 0.0
uplevel := dot > dot[1] ? zigzag : uplevel[1]
dnlevel = 0.0
dnlevel := dot < dot[1] ? zigzag : dnlevel[1]
upcol = na
upcol := dot > dot[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := dot < dot[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if dot > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)


もっと