Strategi perdagangan ini adalah sistem yang didasarkan pada standar deviasi, menggunakan hubungan harga dengan rata-rata bergerak dan standar deviasi untuk mengidentifikasi peluang pembelian potensial. Strategi ini berfokus pada sinyal beli ketika harga menembus rel, dan mengelola risiko dengan mengatur stop dan stop loss.
Menghitung Moving Average (MA): Menggunakan Simple Moving Average (SMA) untuk menghitung rata-rata periode yang ditentukan.
Perhitungan standar perbedaan: Perhitungan standar perbedaan harga berdasarkan periode yang sama.
Membangun lintasan atas dan bawah:
Membuat sinyal beli: memicu sinyal beli ketika harga melintasi rel bawah dari bawah.
Manajemen Risiko:
Jangka waktu pengembalian: kebijakan memungkinkan pengguna untuk mengatur waktu awal dan akhir pengembalian yang spesifik, hanya melakukan transaksi dalam jangka waktu yang ditentukan.
Adaptif: Dengan menggunakan standar deviasi, strategi dapat secara otomatis menyesuaikan zona perdagangan sesuai dengan volatilitas pasar untuk menyesuaikan diri dengan lingkungan pasar yang berbeda.
Pengendalian risiko yang sempurna: Mengintegrasikan mekanisme stop-loss dan stop-loss untuk mengontrol risiko setiap transaksi secara efektif.
Fleksibilitas tinggi: memungkinkan pengguna untuk menyesuaikan beberapa parameter, seperti siklus standar deviasi, kelipatan, stop loss rasio, dan lain-lain, dapat disesuaikan sesuai dengan pasar yang berbeda dan preferensi risiko pribadi.
Strategi memetakan moving averages, uptrends, dan buy signals pada grafik untuk memudahkan pemahaman dan analisis.
Fungsi feedback yang kuat: Pengguna dapat mengatur rentang waktu feedback yang tepat untuk menilai kinerja strategi dalam lingkungan pasar tertentu.
Risiko false breakout: Dalam pasar horizontal atau rendah volatilitas, false breakout dapat terjadi secara sering, menyebabkan terlalu banyak transaksi dan kehilangan biaya yang tidak perlu.
Jangka waktu mengikuti tren: Beberapa peluang masuk awal mungkin terlewatkan di pasar tren yang kuat karena strategi didasarkan pada rata-rata bergerak dan standar deviasi.
Sensitivitas parameter: kinerja strategi sangat bergantung pada pengaturan parameter, kombinasi parameter yang berbeda dapat menghasilkan hasil yang sangat berbeda, yang memerlukan banyak pengujian dan pengoptimalan.
Pembatasan perdagangan satu arah: Strategi ini saat ini hanya memungkinkan untuk melakukan multi-logika, yang dapat kehilangan peluang atau menanggung kerugian besar dalam pasar yang menurun.
Ketergantungan pada lingkungan pasar: Strategi mungkin bekerja lebih baik di pasar cryptocurrency yang berfluktuasi tinggi dan volume transaksi yang rendah, tetapi efeknya mungkin tidak sama di lingkungan pasar lainnya.
Memperkenalkan mekanisme shorting: menambah logika shorting ketika harga menembus tren, sehingga strategi dapat menguntungkan di pasar dua arah.
Penyesuaian parameter dinamis: Fungsi untuk menyesuaikan parameter secara otomatis sesuai dengan kondisi pasar, seperti standar deviasi ganda, stop loss rasio, meningkatkan kemampuan strategi untuk beradaptasi.
Analisis multi-frame waktu: menggabungkan data periode waktu yang lebih panjang dan lebih pendek untuk meningkatkan keandalan sinyal dan akurasi waktu masuk.
Menambahkan penyaringan volume transaksi: memperkenalkan indikator volume transaksi, memfilter sinyal false breakout saat volume transaksi rendah, meningkatkan kualitas transaksi.
Mengoptimalkan mekanisme stop loss: Membuat stop loss yang dinamis, seperti memperkenalkan stop loss yang dilacak atau pengaturan stop loss berbasis ATR, untuk lebih beradaptasi dengan fluktuasi pasar
Menambahkan kondisi penyaringan: Menetapkan kondisi transaksi tambahan yang dikombinasikan dengan indikator teknis atau fundamental lainnya untuk mengurangi sinyal palsu.
Menerapkan manajemen dana: Menambahkan logika manajemen posisi, menyesuaikan proporsi dana untuk setiap transaksi sesuai dengan ukuran akun dan dinamika volatilitas pasar.
Adaptive standard deviation breakout trading strategy adalah sistem perdagangan kuantitatif yang didasarkan pada prinsip-prinsip statistik untuk menangkap peluang perdagangan yang ditimbulkan oleh fluktuasi pasar yang tidak biasa melalui saluran harga yang disesuaikan secara dinamis. Keunggulan inti dari strategi ini adalah kemampuan beradaptasi dan manajemen risiko, yang dapat mempertahankan kinerja yang relatif stabil dalam berbagai lingkungan pasar. Namun, strategi ini juga menghadapi tantangan seperti breakout palsu dan sensitivitas parameter, yang perlu digunakan dengan hati-hati oleh pedagang dan terus dioptimalkan.
Strategi ini diharapkan dapat meningkatkan stabilitas dan profitabilitasnya lebih lanjut dengan memperkenalkan mekanisme shorting, penyesuaian parameter dinamis, dan analisis multi-frame. Bagi pedagang kuantitatif yang berpengalaman, strategi ini memberikan kerangka dasar yang bagus, di mana personalisasi dan pengoptimalan yang mendalam dapat dilakukan untuk menyesuaikan dengan gaya perdagangan dan lingkungan pasar yang berbeda.
Secara keseluruhan, strategi trading breakout ini menunjukkan esensi dari trading kuantitatif dengan menggunakan model matematika dan metode statistik untuk menangkap peluang pasar sambil mengendalikan risiko secara ketat. Ini tidak hanya berlaku untuk pasar cryptocurrency yang sangat volatil, tetapi juga dapat diterapkan ke pasar keuangan lainnya dengan penyesuaian yang tepat, memberikan 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")