ブレイクアウト取引戦略


作成日: 2023-11-02 16:40:26 最終変更日: 2023-11-02 16:40:26
コピー: 1 クリック数: 573
1
フォロー
1617
フォロワー

ブレイクアウト取引戦略

概要

この戦略は,突破理論に基づいて,最高価格と最低価格の移動平均を比較して,トレンドが逆転したかどうかを判断し,潜在的突破点を発見し,突破点が発生したときに取引する. この戦略はシンプルで直接で,急激なトレンド変化の標識を追跡するのに適しています.

戦略原則

この戦略は,まず,ユーザの設定に基づいて,特定の周期内の最高価格と最低価格の移動平均を計算し,最高価格の移動平均は上位を表示し,最低価格の移動平均は下位を表示する.価格が上位を突破すると,価格が上昇傾向にあることを示し,この戦略は多めに開きます.価格が下位を突破すると,価格が下位傾向にあることを示し,この戦略は空っぽに開きます.ユーザは,多めにまたは空っぽにのみ設定することができます.

この戦略は,選択可能な止損設定も提供している.オーバーストップは上線で,オフストップは下線である.これは損失を減らすことができる.ユーザーは,ブレークスルーポイントを止損ポイントとして選択することもできる.つまり,オーバーストップは下線で,オフストップは上線で,これはより大きな利益の余地を得ることができる.

戦略的優位性

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

  1. 戦略はシンプルで直接的で,理解し,実行しやすい.

  2. 価格トレンドの転換点を素早く捉え,タイミングでポジションを調整する.

  3. 選択可能なストップ・ストップ方式が提供され,個人リスクの好みに合わせて設定できます.

  4. 取引シグナル生成は明瞭で,偽のシグナルが頻繁に発生しない.

  5. 設定できるパラメータが少なく,使いやすくなっています.

  6. フレキシブルな配置で,多めにやったり空いてやったりできます.

戦略リスク

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

  1. 突破信号は偽突破であり,継続できない.

  2. 突破周期が正しく設定されていない場合,長線のトレンドを逃す可能性があります.

  3. 突破は取引量を考慮しないことで,追いつく可能性が高い.

  4. 遅滞があるので,良いところを見逃すかもしれません.

  5. 状況が激しく波動すると,ストップダメージポイントが突破される危険性がある.

  6. 突破点のみをベースに取引すると,収益は不確実になります.

戦略の最適化

この戦略は以下の点で最適化できます.

  1. 取引量指標と組み合わせて,偽の突破を避ける.例えば,突破時に取引量が拡大され,突破が実効的かもしれないことを示している.

  2. 移動平均の周期パラメータを最適化して,異なる周期段の傾向変化にマッチさせることができる.また,異なるタイプの移動平均を試すこともできる.

  3. 逆調幅を設定して,突破点が発生した後にさらに確認して,偽突破を避ける.

  4. Bollinger 経路などの指数移動平均ツールに突破ベースで加えることができ,より多くの方向指示を得ることができます.

  5. RSI,MACDなどの他のINDICATORと組み合わせて,より多くの補助的な取引信号を得て,意思決定の正確性を向上させることができます.

  6. ストップ・ストップ・ストップ戦略を最適化して,市場変動に適応し,リスクをコントロールする.

要約する

この突破取引戦略の全体的な考え方は明確で分かりやすく,価格突破上下を追跡して出場タイミングを判断する.戦略の最適化スペースは大きく,より多くの指標情報とパラメータの最適化を統合することによって戦略の効果を強めることができる.この戦略の基本的な考え方を熟知した後,自身の必要なパラメータに応じて調整することで,より良い取引効果を得ることができる.

ストラテジーソースコード
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Brakeout Strategy v2.0", shorttitle = "Brakeout str 2.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, %")
len = input(4, defval = 4, minval = 1, maxval = 1000, title = "Length")
bod = input(false, defval = false, title = "Body mode")
rev = input(false, defval = false, title = "Revers")
showlines = input(true, defval = true, title = "Show Lines?")
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")

//Extremums
min = bod ? min(open, close) : low
max = bod ? max(open, close) : high
upex = highest(max, len) + syminfo.mintick * 10
dnex = lowest(min, len) - syminfo.mintick * 10
col = showlines ? blue : na
plot(upex, color = col, linewidth = 2)
plot(dnex, color = col, linewidth = 2)

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

if (not na(close[len])) and rev == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = upex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnex)
    
if (not na(close[len])) and rev == true
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

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