クロスタイムフレームのダブルブレークアウトレベル戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月15日 17:27:36
タグ:

img

概要

これは,異なるタイムフレームのキーレベルを利用してダブルブレークアウトの取引信号を生成する戦略です. 傾向価格がキーサポートまたはレジスタンスレベルを突破して中期から長期間のトレンドを捕捉するときに,ロングまたはショートポジションに入ることができます.

戦略の論理

この戦略は,価格動向を2つの異なるタイムフレーム (tfと tf2) で同時に分析し, tfは中長期トレンドを反映するより長いタイムフレームであり, tf2は短期動向を反映するより短いタイムフレームである.この戦略は,以下の取引信号を監視する.

  1. 価格が tf タイムフレームのレベル (レベル) を破ると,アップ1=true を記録します.
  2. 価格が tf タイムフレームのレベルを下回ると, dn1=true を記録します.
  3. 価格が tf2 タイムフレームのレベル (level2) を破ると,up2=true を記録します.
  4. 価格が tf2 の時間枠のレベルを下回ると, dn2=true を記録します.

up1とup2が trueで合わさると,長期と短期の両方が上昇し,go longになる. dn1と dn2が trueで合わさると,長期と短期の両方が下落し,go shortになる.

この戦略には,逆スカルピングやカラーキャンドルスタイクなどのフィルターも含まれています.

戦略は全体的に多期間の分析を最大限に活用し,中期から長期間のトレンドが期待に応え,短期間の市場の騒音による干渉を回避し,高品質の取引信号を生成することを保証します.

利点分析

  1. キーレベルを突破して 中期から長期間の傾向を把握する

    2つのタイムフレームでキーレベルブレイクを監視することで,トレンド開始段階で明確なエントリーシグナルを捉えることができます.

  2. 二重確認は誤信号を大幅に減少させる

    2つの異なるタイムフレームで同時にブレイクアウトを必要とすることで ランダムな変動から誤った信号が大幅に減少し 信号の質が向上します

  3. 逆の頭皮やカラーキャンドルスタイルのようなフィルター

    逆スカルピングとカラーキャンドルフィルターを追加することで 低品質のブレイクシグナルを取り除き 大きな損失を防ぐことができます

  4. シンプルなパラメータ設定

    この戦略は2つの時間枠のパラメータだけで機能し,異なる製品に対して柔軟な調整が可能になります.

  5. 分かりやすく,最適化できます

    明確な構造が論理を理解しやすくし,市場条件に基づいてパラメータを最適化することができます.

リスク分析

  1. 2度目の脱出で入国遅延

    シングルブレイクと比べて ダブルブレイクでは 初期トレンドの強い利益が 欠けているため 入場が遅れる可能性があります

  2. キーレベル選択

    異なる製品と市場サイクルに適したキーレベルを選択することは非常に重要です.そうでなければ,誤った信号を生む可能性があります.

  3. 突破失敗

    突破が失敗し 急速な撤退が起こり 損失を伴う可能性があります

  4. 傾向の逆転による損失

    遅いトレンドエントリは突然の逆転に直面し,ストップロスを通して間に合うように退場できず,大きな損失を負う可能性があります.

  5. 難しいパラメータ最適化

    シンプルではあるが,最適なパラメータセットを見つけるには,高い最適化困難度を持つ広範なテストが必要である.

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

  1. ストップ損失戦略を追加

    損失が大きすぎる前に 損失を止めるために 遅延ストップやタイムストップを設定できます

  2. フィルターを最適化する

    異なる逆頭皮振幅パラメータや他のフィルタ方法をテストすることができます.

  3. ダイナミックキーレベル

    主要レベルは 静的レベルではなく 市場の変化に合わせて 動的に変化させる

  4. 多製品パラメータ最適化

    機械学習を使用して,異なる製品に最適なパラメータセットを最適化します.

  5. 音量確認を追加する

    音量確認を組み込む 音量がないと 誤った信号が発信されないように

概要

概してこれはシンプルで実用的なトレンドフォロー戦略である. 2つのタイムフレームを分析することで,ノイズを効果的にフィルタリングするために中期から長期間の方向適合を入力する.シグナルは明確で,直感的なパラメータ設定で解釈が簡単である.しかし,誤ったエントリー,キーレベルを選択する難しさなどの問題もあります.要約すると,この戦略は他の要因と組み合わせるトレンド検証ツールとしてよりうまく機能しますが,独立した取引システムとして最適化する余地があります.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels Strategy v1.0", shorttitle = "Levels str 1.0", 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, %")
tf = input('W',  title = "timeframe 1")
tf2 = input('D',  title = "timeframe 2")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
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")

//Signals
level = request.security(syminfo.tickerid, tf, src[1])
level2 = request.security(syminfo.tickerid, tf2, src[1])
plot(level, linewidth = 3, color = silver)
plot(level2, linewidth = 3, color = gray)
up1 = close > level and ap == false ? true : low > level ? true : false
dn1 = close < level and ap == false ? true : high < level ? true : false
up2 = close > level2 and ap == false ? true : low > level2 ? true : false
dn2 = close < level2 and ap == false ? true : high < level2 ? true : false

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 and up2 and (close < open or cf == false)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if dn1 and dn2 and (close > open or cf == false)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

もっと