Strategi perdagangan dua hala pelarian turun naik yang besar: sistem kemasukan panjang dan pendek berdasarkan ambang mata

ATR SL TP
Tarikh penciptaan: 2024-11-18 16:11:21 Akhirnya diubah suai: 2024-11-18 16:11:21
Salin: 0 Bilangan klik: 576
1
fokus pada
1617
Pengikut

Strategi perdagangan dua hala pelarian turun naik yang besar: sistem kemasukan panjang dan pendek berdasarkan ambang mata

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan dua arah berdasarkan 30 minit K-Line untuk mencari peluang perdagangan dengan memantau ketinggian turun naik harga. Inti strategi adalah untuk mengenal pasti turun naik yang besar dengan menetapkan titik titik dan melakukan perdagangan dengan arah yang sesuai setelah penembusan disahkan. Strategi ini merangkumi pengurusan masa yang ketat, menghentikan kerugian dan mekanisme pengurusan perdagangan untuk mencapai perdagangan automatik yang dapat dikawal risiko.

Prinsip Strategi

Strategi ini menggunakan mekanisme penapisan berganda untuk mengenal pasti isyarat perdagangan yang berkesan. Pertama, strategi ini menganggarkan julat turun naik entiti setiap 30 minit pada penutupan K, dan apabila ketinggian turun naik melebihi had yang ditetapkan, ia akan ditandakan sebagai peluang perdagangan yang berpotensi. Untuk memastikan kesahihan perdagangan, strategi ini menetapkan titik penangguhan tambahan, yang hanya akan mencetuskan isyarat perdagangan sebenar apabila harga menembusi kawasan penangguhan ini.

Kelebihan Strategik

  1. Pengurusan masa yang baik: Hadkan tetingkap masa dagangan, mengelakkan isyarat palsu pada masa yang tidak aktif
  2. Mekanisme perdagangan dua hala: menangkap peluang dua hala pasaran dan meningkatkan kecekapan penggunaan dana
  3. Kawalan risiko yang sempurna: Stop loss dengan titik tetap untuk memudahkan penilaian dan pengurusan risiko
  4. Tingkat automasi yang tinggi: Pengesanan automatik dari pengiktirafan isyarat hingga pelaksanaan perdagangan, mengurangkan campur tangan manusia
  5. Tetapan parameter yang fleksibel: parameter utama boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

Risiko Strategik

  1. Risiko False Break: Kemungkinan False Break selepas turun naik yang besar, menyebabkan Stop Loss
  2. Sensitiviti parameter: tetapan had yang tidak betul boleh menyebabkan peluang yang terlewat atau terlalu banyak perdagangan
  3. Ketergantungan pada keadaan pasaran: kemungkinan sering mencetuskan stop loss dalam pasaran yang bergolak
  4. Kesan slippage: semasa turun naik yang tinggi, harga transaksi sebenar mungkin lebih jauh daripada harga isyarat
  5. Risiko pengurusan dana: Kekurangan mekanisme pengurusan kedudukan boleh menyebabkan celah risiko yang terlalu besar

Arah pengoptimuman strategi

  1. Menambah penapisan trend: meningkatkan kualiti isyarat dengan menggabungkan indikator trend dengan tempoh yang lebih lama
  2. Pengoptimuman parameter dinamik: penyesuaian parameter penurunan dan henti secara automatik mengikut turun naik pasaran
  3. Memperkenalkan pengesahan kuantiti: meningkatkan syarat penapisan kuantiti dan meningkatkan kebolehpercayaan penembusan
  4. Mengoptimumkan Stop Loss: mewujudkan Stop Loss yang dinamik, menyesuaikan diri dengan keadaan pasaran yang berbeza
  5. Menambah pengurusan kedudukan: menyesuaikan kedudukan secara dinamik mengikut kekuatan isyarat dan kadar turun naik pasaran

ringkaskan

Ini adalah strategi perdagangan automatik yang direka dengan sempurna dan logik yang jelas. Strategi ini mempunyai kepraktisan yang baik melalui penapisan syarat dan kawalan risiko yang ketat. Tetapi masih perlu diuji dan dioptimumkan secara menyeluruh di lapangan, terutamanya dalam pengaturan parameter dan kawalan risiko yang perlu disesuaikan dengan keadaan pasaran sebenar.

Kod sumber strategi
/*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")