
Strategi perdagangan ini adalah sistem yang berasaskan standard deviation breakout, menggunakan hubungan harga dengan purata bergerak dan standard deviation untuk mengenal pasti peluang membeli yang berpotensi. Strategi ini memfokuskan pada isyarat beli apabila harga menembusi bawah landasan, dan untuk menguruskan risiko dengan menetapkan berhenti dan berhenti.
Hitung purata bergerak ((MA): Menggunakan purata bergerak sederhana ((SMA) untuk mengira purata tempoh yang ditetapkan.
Perbezaan piawai yang dikira: Perbezaan piawai berdasarkan harga yang dikira pada kitaran yang sama.
Membina laluan atas dan bawah:
Menjana isyarat beli: mencetuskan isyarat beli apabila harga bergerak dari bawah ke bawah.
Pengurusan Risiko:
Julat masa pengembalian: Strategi membolehkan pengguna menetapkan masa permulaan dan penamatan pengembalian tertentu, dan hanya melakukan perdagangan dalam julat masa yang ditentukan.
Adaptif: Dengan menggunakan standard deviation, strategi dapat menyesuaikan ruang dagangan secara automatik mengikut turun naik pasaran dan menyesuaikan diri dengan keadaan pasaran yang berbeza.
Pengendalian risiko yang sempurna: mekanisme terintegrasi untuk menghentikan dan menghentikan kerugian, mengawal risiko setiap perdagangan dengan berkesan.
Fleksibiliti yang tinggi: membolehkan pengguna menyesuaikan pelbagai parameter, seperti kitaran standard deviasi, pengganda, kadar stop loss, dan sebagainya, yang boleh disesuaikan dengan pasaran yang berbeza dan keutamaan risiko peribadi.
Kesan visual yang baik: Strategi memetakan purata bergerak, orbit ke atas dan ke bawah, dan isyarat beli di carta untuk memudahkan pemahaman dan analisis.
Fungsi umpan balik yang kuat: Pengguna boleh menetapkan jangka masa umpan balik yang tepat, yang membantu menilai prestasi strategi dalam keadaan pasaran tertentu.
Risiko penembusan palsu: Dalam pasaran yang berlainan arah atau rendah, penembusan palsu boleh berlaku secara kerap, menyebabkan terlalu banyak perdagangan dan kehilangan yuran yang tidak perlu.
Kelewatan mengikut trend: Strategi berdasarkan purata bergerak dan perbezaan piawaian, mungkin terlepas beberapa peluang masuk awal di pasaran yang sedang tren kuat.
Sensitiviti parameter: Prestasi strategi sangat bergantung kepada tetapan parameter, kombinasi parameter yang berbeza boleh menyebabkan hasil yang sangat berbeza, yang memerlukan banyak pengujian dan pengoptimuman.
Sekatan perdagangan satu arah: Strategi ini hanya dapat dilaksanakan dengan logik yang lebih banyak dan mungkin kehilangan peluang atau menanggung kerugian yang lebih besar dalam pasaran yang menurun.
Ketergantungan kepada persekitaran pasaran: Strategi mungkin lebih baik dalam pasaran cryptocurrency yang bergelombang tinggi dan jumlah transaksi yang rendah, tetapi kesannya mungkin berbeza dalam persekitaran pasaran lain.
Memperkenalkan mekanisme shorting: menambah logik shorting apabila harga menembusi landasan, membolehkan strategi untuk mendapat keuntungan dalam pasaran dua hala.
Penyesuaian parameter dinamik: fungsi untuk menyesuaikan parameter secara automatik mengikut keadaan pasaran seperti kelipatan perbezaan piawai, nisbah hentian hentian, meningkatkan kemampuan penyesuaian strategi.
Analisis pelbagai bingkai masa: menggabungkan data jangka masa yang lebih lama dan lebih pendek untuk meningkatkan kebolehpercayaan isyarat dan ketepatan masa masuk.
Menambah penapis kuantiti urus niaga: memperkenalkan penunjuk kuantiti urus niaga, menapis isyarat penembusan palsu apabila jumlah urus niaga rendah, meningkatkan kualiti urus niaga.
Optimumkan mekanisme hentian hentian: mewujudkan hentian hentian yang dinamik, seperti pengenalan hentian hentian atau tetapan hentian berdasarkan ATR, untuk lebih menyesuaikan diri dengan turun naik pasaran.
Tambah syarat penapisan: Tetapkan syarat dagangan tambahan untuk mengurangkan isyarat palsu dalam kombinasi dengan petunjuk teknikal atau data asas yang lain.
Menerapkan pengurusan dana: Menambah logik pengurusan kedudukan, menyesuaikan peratusan dana untuk setiap urus niaga mengikut saiz akaun dan dinamik turun naik pasaran.
Strategi perdagangan penembusan standard yang beradaptasi adalah sistem perdagangan kuantitatif berdasarkan prinsip statistik yang menangkap peluang perdagangan yang disebabkan oleh turun naik pasaran yang luar biasa melalui saluran harga yang disesuaikan secara dinamik. Kelebihan utama strategi ini adalah kemampuan beradaptasi dan pengurusan risiko, yang dapat mengekalkan prestasi yang agak stabil dalam pelbagai persekitaran pasaran. Walau bagaimanapun, strategi ini juga menghadapi cabaran seperti penembusan palsu dan kepekaan parameter, yang memerlukan pedagang untuk menggunakan dengan berhati-hati dan terus mengoptimumkannya.
Strategi ini dijangka meningkatkan lagi kestabilan dan keuntungan dengan memperkenalkan mekanisme penyingkiran, penyesuaian parameter dinamik, analisis pelbagai kerangka masa. Bagi pedagang kuantitatif yang berpengalaman, strategi ini menyediakan kerangka asas yang baik, di mana anda boleh melakukan penyesuaian dan pengoptimuman yang mendalam untuk menyesuaikan diri dengan gaya perdagangan dan persekitaran pasaran yang berbeza.
Secara keseluruhannya, strategi perdagangan penembusan standard standard yang menyesuaikan diri ini menunjukkan esensi perdagangan kuantitatif untuk menangkap peluang pasaran melalui model matematik dan kaedah statistik sambil mengawal risiko dengan ketat. Ia tidak hanya berlaku untuk pasaran cryptocurrency yang sangat bergolak, tetapi juga boleh digunakan untuk pasaran kewangan lain dengan penyesuaian yang sesuai, memberikan pedagang 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")