Sumber dimuat naik... memuat...

Adaptive Standard Deviation Breakout Trading Strategy: Sistem pengoptimuman pelbagai tempoh berdasarkan turun naik dinamik

Penulis:ChaoZhang, Tarikh: 2024-07-30 16:09:04
Tag:MASMAPenyakit STDSLTP

img

Ringkasan

Strategi perdagangan ini adalah sistem yang berasaskan penembusan penyimpangan standard, menggunakan hubungan antara harga dan purata bergerak, serta penyimpangan standard, untuk mengenal pasti peluang pembelian yang berpotensi. Strategi ini terutamanya memberi tumpuan kepada isyarat beli apabila harga memecahkan jalur bawah, dan menguruskan risiko dengan menetapkan tahap mengambil keuntungan dan stop-loss. Idea teras strategi adalah untuk berdagang semasa tempoh turun naik harga yang tidak normal sambil menggunakan purata bergerak dan penyimpangan standard untuk menapis isyarat palsu yang berpotensi.

Prinsip Strategi

  1. Mengira Purata Bergerak (MA): Gunakan Purata Bergerak Sederhana (SMA) untuk mengira garis purata untuk tempoh tertentu.

  2. Mengira Penyimpangan Standard: Mengira penyimpangan standard harga berdasarkan tempoh yang sama.

  3. Membina Band Atas dan Bawah:

    • Band atas = MA + (Standard Deviation * Pengganda)
    • Bahagian bawah = MA - (Standard Deviation * Multiplier)
  4. Menghasilkan Isyarat Beli: Memicu isyarat beli apabila harga melintasi di atas jalur bawah dari bawah.

  5. Pengurusan Risiko:

    • Tetapkan harga mengambil keuntungan: Harga kemasukan * (1 + Peratusan mengambil keuntungan)
    • Set Stop Loss Price: Entry Price * (1 - Peratusan Stop Loss)
  6. Julat Masa Ujian Belakang: Strategi ini membolehkan pengguna menetapkan waktu permulaan dan akhir tertentu untuk pengujian balik, menjalankan perdagangan hanya dalam julat masa yang ditentukan.

Kelebihan Strategi

  1. Kebolehsesuaian yang tinggi: Dengan menggunakan penyimpangan standard, strategi dapat menyesuaikan julat perdagangan secara automatik mengikut turun naik pasaran, menyesuaikan diri dengan persekitaran pasaran yang berbeza.

  2. Kawalan Risiko Komprehensif: Mengintegrasikan mekanisme mengambil keuntungan dan menghentikan kerugian, mengawal risiko untuk setiap perdagangan dengan berkesan.

  3. Fleksibiliti yang tinggi: Membolehkan pengguna menyesuaikan pelbagai parameter seperti tempoh penyimpangan standard, pengganda, peratusan mengambil keuntungan dan stop-loss, yang boleh diselaraskan mengikut pasaran yang berbeza dan keutamaan risiko peribadi.

  4. Visualisasi yang baik: Strategi ini memetakan purata bergerak, jalur atas dan bawah, dan membeli isyarat pada carta, memudahkan pemahaman dan analisis intuitif.

  5. Fungsi Backtesting yang Kuat: Pengguna boleh menetapkan julat masa backtesting dengan tepat, yang bermanfaat untuk menilai prestasi strategi di bawah keadaan pasaran tertentu.

Risiko Strategi

  1. Risiko Penembusan Palsu: Dalam pasaran sampingan atau turun naik yang rendah, penembusan palsu yang kerap boleh berlaku, yang membawa kepada perdagangan yang berlebihan dan kerugian bayaran urus niaga yang tidak perlu.

  2. Trend Following Delay: Oleh kerana strategi ini berdasarkan purata bergerak dan penyimpangan standard, ia mungkin kehilangan beberapa peluang kemasukan awal ke pasaran yang mempunyai trend yang kuat.

  3. Sensitiviti Parameter: Prestasi strategi sangat bergantung pada tetapan parameter. Kombinasi parameter yang berbeza boleh membawa kepada hasil yang sangat berbeza, yang memerlukan pengujian dan pengoptimuman yang luas.

  4. Pembatasan Dagangan Satu Arah: Strategi ini kini hanya melaksanakan logik panjang, yang mungkin kehilangan peluang atau mengalami kerugian yang ketara di pasaran penurunan.

  5. Kebergantungan Lingkungan Pasaran: Strategi ini mungkin berfungsi dengan lebih baik di pasaran cryptocurrency yang sangat tidak menentu dan bervolume rendah, tetapi keberkesanannya dalam persekitaran pasaran lain mungkin berbeza.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan Mekanisme Jualan Singkat: Tambah logik jualan pendek apabila harga memecahkan jalur atas, membolehkan strategi untuk memperoleh keuntungan di pasaran dua arah.

  2. Penyesuaian Parameter Dinamik: Melaksanakan fungsi untuk menyesuaikan parameter secara automatik seperti pengganda penyimpangan piawaian dan nisbah mengambil keuntungan / hentian kerugian berdasarkan keadaan pasaran, meningkatkan daya adaptasi strategi.

  3. Analisis pelbagai jangka masa: Menggabungkan data dari tempoh masa yang lebih lama dan lebih pendek untuk meningkatkan kebolehpercayaan isyarat dan ketepatan masa kemasukan.

  4. Tambah Penapisan Volume: Memperkenalkan penunjuk jumlah untuk menapis isyarat pecah palsu semasa tempoh jumlah yang rendah, meningkatkan kualiti perdagangan.

  5. Mengoptimumkan mekanisme mengambil keuntungan dan menghentikan kerugian: Melaksanakan mengambil keuntungan dan menghentikan kerugian dinamik, seperti memperkenalkan hentian penggantungan atau tetapan hentian kerugian berasaskan ATR, untuk menyesuaikan diri dengan lebih baik dengan turun naik pasaran.

  6. Meningkatkan Syarat Penapisan: Gabungkan penunjuk teknikal atau data asas lain untuk menetapkan syarat perdagangan tambahan, mengurangkan isyarat palsu.

  7. Melaksanakan Pengurusan Wang: Tambah logik saiz kedudukan untuk menyesuaikan secara dinamik bahagian dana untuk setiap perdagangan berdasarkan saiz akaun dan turun naik pasaran.

Ringkasan

Adaptive Standard Deviation Breakout Trading Strategy adalah sistem perdagangan kuantitatif berdasarkan prinsip statistik, menangkap peluang perdagangan yang dibawa oleh anomali pasaran melalui saluran harga yang diselaraskan secara dinamik. Kelebihan utama strategi ini terletak pada keupayaan penyesuaian dan pengurusan risiko, yang membolehkannya mengekalkan prestasi yang agak stabil dalam persekitaran pasaran yang berbeza. Walau bagaimanapun, strategi ini juga menghadapi cabaran seperti pecah palsu dan kepekaan parameter, yang memerlukan peniaga menggunakannya dengan berhati-hati dan terus mengoptimumkan.

Dengan memperkenalkan mekanisme jualan pendek, penyesuaian parameter dinamik, analisis pelbagai jangka masa, dan langkah pengoptimuman lain, strategi ini berpotensi untuk meningkatkan kestabilan dan keuntungan.

Secara keseluruhannya, Strategi Dagangan Penembusan Penyimpangan Standar Adaptif ini menunjukkan intipati perdagangan kuantitatif - menangkap peluang pasaran melalui model matematik dan kaedah statistik sambil mengawal risiko dengan ketat. Ia tidak hanya boleh digunakan untuk pasaran cryptocurrency yang sangat tidak menentu tetapi juga boleh digunakan untuk pasaran kewangan lain dengan penyesuaian yang sesuai, menyediakan pedagang dengan alat perdagangan yang kuat dan fleksibel.


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

//@version=5
strategy("MikEy Scali 3 STD Dev Buy Strategy with TP and SL", overlay=true)

// Input parameters for the strategy
length = input.int(20, title="Standard Deviation Length", minval=1)
src = input(close, title="Source")
mult = input.float(3.0, title="Standard Deviation Multiplier", step=0.1)

// Input for the take profit and stop loss percentages
takeProfitPerc = input.float(1.0, title="Take Profit Percentage", step=0.1) / 100
stopLossPerc = input.float(0.5, title="Stop Loss Percentage", step=0.1) / 100

// Input parameters for the backtesting range
testStartYear = input.int(2023, title="Backtest Start Year", minval=2000)
testStartMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
testStartDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)

testEndYear = input.int(2024, title="Backtest End Year", minval=2000)
testEndMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
testEndDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

// Define the backtesting range
testStartTime = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00)
testEndTime = timestamp(testEndYear, testEndMonth, testEndDay, 23, 59)

// Determine if the current bar is within the backtesting range
inBacktestRange = (time >= testStartTime) and (time <= testEndTime)

// Calculate the moving average and standard deviation
ma = ta.sma(src, length)
std_dev = ta.stdev(src, length)

// Calculate upper and lower bands
upper_band = ma + (std_dev * mult)
lower_band = ma - (std_dev * mult)

// Buy condition within the backtesting range
buyCondition = inBacktestRange and ta.crossover(src, lower_band)

// Plot the buy signal on the chart
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Execute buy orders based on the condition within the backtesting range
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Calculate the take profit and stop loss prices when a position is opened
entryPrice = na(strategy.opentrades.entry_price(0)) ? src : strategy.opentrades.entry_price(0)
takeProfitPrice = entryPrice * (1 + takeProfitPerc)
stopLossPrice = entryPrice * (1 - stopLossPerc)

// Take profit condition
takeProfitCondition = strategy.position_size > 0 and close >= takeProfitPrice

// Stop loss condition
stopLossCondition = strategy.position_size > 0 and close <= stopLossPrice

// Execute sell order when take profit condition is met within the backtesting range
if (takeProfitCondition and inBacktestRange)
    strategy.close("Buy", "Take Profit")

// Execute sell order when stop loss condition is met within the backtesting range
if (stopLossCondition and inBacktestRange)
    strategy.close("Buy", "Stop Loss")

// Plot the moving average and the bands
plot(ma, color=color.blue, title="Moving Average")
plot(upper_band, color=color.red, title="Upper Band (3 STD)")
plot(lower_band, color=color.green, title="Lower Band (3 STD)")

// Optional: Plot the source
plot(src, color=color.gray, title="Source")

// Add labels for clarity
bgcolor(buyCondition ? color.new(color.green, 90) : na, offset=-1, title="Buy Signal Background")

// Optional: Highlight the backtesting range on the chart
bgcolor(inBacktestRange ? color.new(color.blue, 90) : na, title="Backtest Range Background")

// Plot the take profit and stop loss levels if a position is open
plot(strategy.position_size > 0 ? takeProfitPrice : na, color=color.orange, title="Take Profit Level")
plot(strategy.position_size > 0 ? stopLossPrice : na, color=color.red, title="Stop Loss Level")

Berkaitan

Lebih lanjut