価格チャネルに基づくブレイクアウト戦略


作成日: 2024-01-16 14:22:57 最終変更日: 2024-01-16 14:22:57
コピー: 0 クリック数: 664
1
フォロー
1617
フォロワー

価格チャネルに基づくブレイクアウト戦略

概要

この策略は,価格チャネルに基づくの突破策略と名付けられており,その主な考えは,価格チャネルを使用して市場の傾向と方向を判断し,価格がチャネルを突破するときにポジションを確立することです.それは,まず価格のチャネル範囲を図り,次にK線が連続して2つの赤いまたは緑のK線が現れるかどうかを判断し,もし最後のK線がチャネルの半分以上を突破してチャネルの外に閉ざされれば,買入または売り出しシグナルを生成します.

戦略原則

この戦略は,過去一定期間の最高価格と最低価格を, highest ((() と lowest ((() の関数を使って計算し,価格チャネルの上下軌道を決定する.チャネルの中線は上下軌道の平均値として定義される.K線実体の大小を計算し,SMAを平滑化して,最後のK線実体が平均実体より半分大きいかどうかを判断する.また,最後の2つのK線が同方向であるかどうかを判断する.これらの条件が満たされると,つまり,買入/出入シグナルが生み出され,価格がチャネルの方向に戻るとき,ポジションを平坦にする.

優位分析

これは,価格チャネルを活用してトレンドを判断する突破策であり,以下の利点があります.

  1. 価格チャネルは,全体的なトレンドの方向性を判断するために使用され,市場騒音を効果的にフィルターすることができます.

  2. 連続した2本のK線が同方向の突破通路を示し,動力が強く,突破成功率が高い.

  3. K線実体が平均実体の半分以上であると判断すると,偽突破の欺瞞を避けることができる.

  4. 戦略の論理は単純で理解しやすく,実行しやすい.

  5. 経路周期,取引品種,取引時間などのカスタマイズ可能なパラメータは,適応性が高い.

リスク分析

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

  1. 突破失敗の可能性は残っており,損害を招く可能性がある.

  2. 状況が激しく波動すると,通路判断は失効するかもしれない.

  3. 損失を抑制する仕組みがなく, 損失を効果的にコントロールできない.

  4. 取引のルールがシンプルで, 過剰適合の危険性があります.

  5. 市場環境がより複雑になるのに適応できない

対応方法は以下の通りです.

  1. 突破の成功率を向上させるためのパラメータを最適化する

  2. 波動性指数に加入し,震動を回避する.

  3. モバイル・ストップ・レジを追加した.

  4. 複合性テストを行い,適合性を確認する.

  5. 機械学習のアルゴリズムを増やし,戦略の適応性を向上させる.

最適化の方向

この戦略の最適化方向は以下の通りです.

  1. 止損メカニズムを増やし,リスクをよりよく制御する.価格の逆転止損を設定することも,ATRなどの指標を使用して移動止損を設定することもできます.

  2. 経路周期,突破幅度パラメータなどの最適化パラメータ.遺伝的アルゴリズム,格子検索などの方法によって最適なパラメータを検索することができる.

  3. フィルタリング条件を追加し,突破の確実性を高めます.例えば,取引量と組み合わせて突破を確認できます.

  4. 機械学習モデルを追加し,より多くのデータを活用して,戦略の予測力と適応性を向上させる.LSTMなどの深層学習は,より複雑な状況パターンを捉えることができる.

  5. 組み合わせの最適化を行って,異なるタイプの突破策を組み合わせて正交配を実現し,類似性を減らす.

要約する

この戦略は,全体として,価格通路判断の傾向に基づいて,突破信号を発見する定量戦略である.それは,判断の傾向があり,突破を確認する利点があるが,ある程度の偽の突破のリスクも存在する.パラメータ最適化,ストップ損失設定,条件フィルターを追加するなどの方法によって戦略を改良して,リスクを減らすことができる.また,機械学習モデルの加入は,戦略の予測能力をさらに強化することができる.全体として,これは,深入な研究と改善に値する潜在的定量戦略の道である.

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

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.0", shorttitle = "Price Channel 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")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
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")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Signals
body = abs(close - open)
abody = sma(body, 10)
up = rbars and close > center and body > abody / 2
dn = gbars and close < center and body > abody / 2
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()