Sumber dimuat naik... memuat...

Strategi Dagangan Dua Arah Penembusan Volatiliti Besar: Sistem Masuk Sempadan Berasaskan Titik

Penulis:ChaoZhang, Tarikh: 2024-11-18 16:11:21
Tag:ATRSLTP

img

Ringkasan

Strategi ini adalah sistem dagangan dua arah berdasarkan lilin 30 minit, mencari peluang dagangan melalui pemantauan turun naik harga. Mekanisme teras melibatkan mengenal pasti pergerakan harga yang signifikan menggunakan ambang titik dan melaksanakan dagangan apabila pengesahan pecah. Strategi ini menggabungkan pengurusan masa yang ketat, mekanisme henti rugi / mengambil keuntungan, dan protokol pengurusan perdagangan untuk perdagangan automatik terkawal.

Prinsip Strategi

Strategi ini menggunakan pelbagai mekanisme penapisan untuk mengenal pasti isyarat dagangan yang sah. Ia mengira julat turun naik setiap lilin 30 minit pada penutupan, menandakan peluang dagangan yang berpotensi apabila julat melebihi ambang yang telah ditetapkan. Untuk memastikan keabsahan isyarat, strategi melaksanakan titik penyangga tambahan, mencetuskan isyarat dagangan sebenar hanya apabila harga menembusi zon penyangga ini. Sistem ini membolehkan kedua-dua kedudukan panjang dan pendek, memasuki panjang pada pecah ke atas dan pendek pada pecah ke bawah, dengan sasaran keuntungan dan tahap stop-loss yang sesuai.

Kelebihan Strategi

  1. Pengurusan masa yang komprehensif: Jendela dagangan yang terhad mengelakkan isyarat palsu semasa tempoh tidak aktif
  2. Perdagangan dua arah: Mengambil peluang di kedua-dua arah pasaran, meningkatkan kecekapan modal
  3. Kawalan risiko yang kukuh: paras stop-loss dan mengambil keuntungan yang tetap memudahkan penilaian dan pengurusan risiko
  4. Automasi tinggi: sepenuhnya automatik dari pengenalan isyarat hingga pelaksanaan perdagangan, meminimumkan campur tangan manusia
  5. Tetapan parameter yang fleksibel: Parameter utama yang boleh diselaraskan menyesuaikan diri dengan keadaan pasaran yang berbeza

Risiko Strategi

  1. Risiko pecah palsu: Volatiliti yang besar boleh menyebabkan pecah palsu yang mengakibatkan keluar stop-loss.
  2. Sensitiviti parameter: Tetapan ambang yang tidak betul boleh menyebabkan peluang yang hilang atau perdagangan berlebihan
  3. Kebergantungan persekitaran pasaran: Boleh mencetuskan stop-loss yang kerap di pasaran yang berbeza
  4. Kesan slippage: Harga pelaksanaan sebenar boleh menyimpang dengan ketara dari harga isyarat semasa turun naik yang tinggi
  5. Risiko pengurusan modal: Kekurangan mekanisme saiz kedudukan boleh membawa kepada pendedahan risiko yang berlebihan

Arahan Pengoptimuman Strategi

  1. Tambah penapisan trend: Masukkan penunjuk trend jangka panjang untuk meningkatkan kualiti isyarat
  2. Pengoptimuman parameter dinamik: Sesuaikan paras ambang dan parameter stop-loss secara automatik berdasarkan turun naik pasaran
  3. Pengesahan jumlah: Tambah keadaan penapisan jumlah untuk meningkatkan kebolehpercayaan pecah
  4. Mengoptimumkan stop-loss/take-profit: Melaksanakan keluar dinamik yang menyesuaikan diri dengan keadaan pasaran yang berbeza
  5. Menggabungkan saiz kedudukan: Sesuaikan saiz kedudukan secara dinamik berdasarkan kekuatan isyarat dan turun naik pasaran

Kesimpulan

Ini adalah strategi perdagangan automatik yang direka secara komprehensif dengan logik yang jelas. Melalui penapisan keadaan yang ketat dan kawalan risiko, strategi menunjukkan penerapan praktikal. Walau bagaimanapun, ujian menyeluruh dan pengoptimuman dalam perdagangan langsung diperlukan, terutamanya dalam tetapan parameter dan aspek kawalan risiko yang memerlukan penyesuaian berdasarkan keadaan pasaran sebenar. Pelaksanaan strategi yang berjaya memerlukan keadaan pasaran yang stabil dan konfigurasi parameter yang sesuai, dengan pengujian balik yang meluas disyorkan sebelum penggunaan langsung.


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


Berkaitan

Lebih lanjut