資源の読み込みに... 荷物...

大波動性ブレイク 双方向取引戦略:ポイントベースの値エントリーシステム

作者: リン・ハーンチャオチャン開催日:2024年11月18日 16:11:21
タグ:ATRSLTP

img

概要

この戦略は,30分間のキャンドルに基づいた双方向取引システムで,価格変動モニタリングを通じて取引機会を探しています.コアメカニズムは,ポイントスローレッジを使用して有意な価格変動を特定し,ブレイクアウトの確認後に取引を実行することを含む.この戦略には厳格なタイムマネジメント,ストップ・ロスト/テイク・プロフィートメカニズム,制御された自動取引のための取引管理プロトコルが含まれています.

戦略原則

この戦略は,有効な取引信号を識別するために複数のフィルタリングメカニズムを使用している. 30分間のキャンドルの変動範囲を計算し,範囲が既定の限界を超えると潜在的な取引機会をマークする. 信号の有効性を確保するために,戦略は追加のバッファポイントを実装し,価格がこのバッファゾーンを突破するときにのみ実際の取引信号を起動する. システムは,上向きブレイクでロングとショートの両方,相応の利益目標とストップロストレベルで下向きブレイクでショートに入力することを可能にする.

戦略 の 利点

  1. 時間管理を徹底する: 取引期間が限られているため,非アクティブ期間の誤った信号を避ける.
  2. 双方向取引: 市場の両方向の機会を把握し,資本効率を向上させる
  3. 堅牢なリスク管理: 固定値のストップ・ロストとテイク・プロフィートのレベルがリスク評価と管理を容易にする
  4. 高度な自動化:信号識別から取引実行まで完全に自動化され,人間の介入を最小限に抑える
  5. 柔軟なパラメータ設定: 調整可能なキーパラメータは,異なる市場状況に適応する

戦略リスク

  1. 誤ったブレイクリスク: 高い変動は,誤ったブレイクに導いてストップ・ロスの出口につながる可能性があります.
  2. パラメータの敏感性: 誤った値設定は,見逃した機会や過剰取引を引き起こす可能性があります.
  3. 市場環境による依存: 変動する市場で頻繁にストップ・ロスを引き起こす可能性があります.
  4. スリップ効果: 高い波動性がある場合,実際の実行価格がシグナル価格から大幅に偏りやすい.
  5. 資本管理リスク: ポジションサイズ化メカニズムの欠如は,過度のリスクにさらされる可能性があります.

戦略の最適化方向

  1. トレンドフィルタリングを追加:信号品質を改善するために長期的なトレンド指標を組み込む
  2. ダイナミックパラメータ最適化: 市場の変動に基づいて,スローホルダーとストップ・ロスのパラメータを自動的に調整する
  3. ボリューム確認: ブレイクアウトの信頼性を高めるためにボリュームフィルタリング条件を追加
  4. ストップ・ロスト/テイク・プロフィートの最適化: 異なる市場状況に適応するダイナミックな出口を実施する
  5. ポジションサイズを組み込む: シグナル強さと市場の変動に基づいてポジションサイズを動的に調整する

結論

これは,明確な論理を持つ包括的に設計された自動取引戦略である.厳格な条件フィルタリングとリスク管理を通じて,戦略は実用的な適用性を実証している.しかし,特に実際の市場状況に基づいて調整する必要があるパラメータ設定とリスク管理の側面において,ライブ取引における徹底的なテストと最適化が必要である.戦略の成功の実施には,安定した市場条件と適切なパラメータ構成が必要であり,ライブ展開前に広範なバックテストを推奨する.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")


関連性

もっと