定量的レンジブレイクアウトに基づく適応型ボラティリティ戦略


作成日: 2024-02-22 16:50:46 最終変更日: 2024-02-22 16:50:46
コピー: 0 クリック数: 563
1
フォロー
1617
フォロワー

定量的レンジブレイクアウトに基づく適応型ボラティリティ戦略

概要

この戦略は,最近の一定期間の取引量の最高値と最低値を計算することによって,自己適応した波動範囲を形成し,現在の周期の取引量がこの範囲を破るときに取引信号を生成する. 信号方向は,陰陽の判断により,単純に有効な追跡市場突発的な大單の戦略に属している.

戦略原則

核心論理は,最近のNサイクルにおける正負の取引量の最大最小値を計算し,自適性波動範囲を形成する.この範囲に基づいて,当期に突破が発生したかどうかを判断する.同時に陰陽線信号を統合して,判断を完了する.

具体的には以下の通りです

  1. 最新のNサイクルにおける最高取引量Highestと最低取引量Lowestを計算する
  2. この周期の取引量を判断する
  3. 突破信号の判断を完了する
  4. 複数の空白信号を生成する

優位分析

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

  1. 適応範囲を設定し,市場の変化に敏感である
  2. 高波動の突発を捕捉し,漏れ率を下げる
  3. 偽突破を避けるために 歪んだ判断を組み合わせる
  4. シンプルで理解しやすく,修正しやすく
  5. フレキシブルなパラメータを調整し,異なる品種に対応

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 制御のパラメータを調整する必要があります.
  2. 大周期性波動の市場では,頻繁に誤信号が発生する可能性がある.
  3. 正常と異常の突破を区別できず,他の指標またはパターン判断を組み合わせる必要がある
  4. 突破するたびに入場するチャンスは一度しかなく,トレンドを追跡できない.

パラメータ周期を調整し,他の指標のフィルタリングと組み合わせて最適化することができる.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. パラメータの長さを追加して,異なる市場サイクルに合わせて調整する
  2. 平均線,ブリン帯などの指標を追加し,信号をフィルターします.
  3. K線形状を最適化し,偽突破を回避
  4. 戦略がトレンドを追跡できるように,再入場とストップ・ロスのモジュールを追加

要約する

この戦略は,全体的にシンプルで実用的で,自己適応範囲と量価の合併判断によって,突然の一方的な状況を効果的に捉えることができる.しかし,ある程度の誤報の危険性もあるため,パラメータを適切に調整し,他のツールの使用と連携して,最大限の効果を発揮する必要がある.

ストラテジーソースコード
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EvoCrypto

//@version=4
strategy("Ranged Volume Strategy - evo", shorttitle="Ranged Volume", format=format.volume)

// INPUTS {
Range_Length    =   input(5,        title="Range Length",                       minval=1)

Heikin_Ashi     =   input(true,     title="Heikin Ashi Colors")
Display_Bars    =   input(true,     title="Show Bar Colors")
Display_Break   =   input(true,     title="Show Break-Out")
Display_Range   =   input(true,     title="Show Range")
// }

// SETTINGS {
Close           =   Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, close)    : close
Open            =   Heikin_Ashi ? security(heikinashi(syminfo.tickerid), timeframe.period, open)     : open

Positive        =    volume
Negative        =   -volume

Highest         =   highest(volume, Range_Length)
Lowest          =   lowest(-volume, Range_Length)

Up              =   Highest > Highest[1] and Close > Open
Dn              =   Highest > Highest[1] and Close < Open

Volume_Color    =   
 Display_Break and Up   ? color.new(#ffeb3b, 0)     : 
 Display_Break and Dn   ? color.new(#f44336, 0)     : 
 Close > Open           ? color.new(#00c0ff, 60)    : 
 Close < Open           ? color.new(#000000, 60)    : na 
// }

//PLOTS {
plot(Positive,                      title="Positive Volume",    color=Volume_Color,             style=plot.style_histogram,  linewidth=4)
plot(Negative,                      title="Negative Volume",    color=Volume_Color,             style=plot.style_histogram,  linewidth=4)

plot(Display_Range ? Highest : na,  title="Highest",            color=color.new(#000000, 0),    style=plot.style_line,       linewidth=2)
plot(Display_Range ? Lowest  : na,  title="Lowest",             color=color.new(#000000, 0),    style=plot.style_line,       linewidth=2)

barcolor(Display_Bars ? Volume_Color : na)
// }

if (Up)
    strategy.entry("Long Entry", strategy.long)
if (Dn)
    strategy.entry("Short Entry", strategy.short)