Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada crossover bivalen dan pengoptimalan waktu. Ini menggunakan crossover rata-rata bergerak jangka pendek dan jangka panjang untuk menghasilkan sinyal beli dan jual, dan digabungkan dengan jendela waktu perdagangan tertentu untuk mengoptimalkan eksekusi perdagangan. Strategi ini juga mencakup beberapa target harga dan tingkat stop loss untuk mengelola risiko dan keuntungan.
Prinsip inti dari strategi ini adalah menggunakan moving average (MA) dari dua periode yang berbeda untuk mengidentifikasi tren pasar dan menghasilkan sinyal perdagangan.
MA jangka pendek dan MA jangka panjang: Strategi menggunakan dua periode rata-rata bergerak yang disesuaikan pengguna, yang mewakili tren pasar jangka pendek dan jangka panjang.
Sinyal silang: ketika MA pendek naik melewati MA panjang, menghasilkan sinyal beli; ketika MA pendek turun melewati MA panjang, menghasilkan sinyal jual.
Optimalisasi waktu: Strategi ini memperkenalkan konsep jendela waktu perdagangan, yang hanya melakukan perdagangan dalam rentang waktu UTC yang ditentukan pengguna, yang membantu menghindari periode ketika pasar berfluktuasi lebih besar atau kurang likuiditas.
Multiple target price: Strategi ini menetapkan dua target price untuk setiap transaksi (Target_1 dan Target_2), yang memungkinkan keuntungan bertahap.
Manajemen risiko: Setiap perdagangan memiliki titik berhenti untuk membatasi potensi kerugian.
Visualisasi: Strategi menunjukkan sinyal jual beli dan harga mencapai titik target pada grafik, sehingga trader dapat memahami dinamika pasar secara intuitif.
Pelacakan tren: Dengan menggunakan crossover rata-rata bergerak, strategi dapat secara efektif menangkap tren pasar dan meningkatkan peluang keuntungan.
Optimalisasi waktu: Dengan membatasi jendela waktu perdagangan, strategi dapat fokus pada saat pasar paling aktif dan menguntungkan, meningkatkan efisiensi perdagangan.
Manajemen risiko: Berbagai target harga dan pengaturan stop loss membantu menyeimbangkan risiko dan keuntungan, melindungi keamanan dana.
Fleksibilitas: Pengguna dapat menyesuaikan siklus MA, target harga dan jendela waktu perdagangan sesuai dengan preferensi pribadi dan karakteristik pasar.
Bantuan visual: Dengan menandai sinyal jual beli dan harga sasaran pada grafik, pedagang dapat memahami kinerja strategi secara lebih intuitif.
Trading dua arah: Strategi yang mendukung perdagangan plus dan minus pada saat yang sama, dapat mencari peluang dalam berbagai kondisi pasar.
Risiko pasar bergoyang: Dalam pasar bergoyang horizontal, seringnya MA berpotongan dapat menyebabkan terlalu banyak sinyal palsu dan biaya transaksi.
Risiko slippage: Dalam pasar cepat, harga transaksi yang sebenarnya mungkin berbeda secara signifikan dari harga saat sinyal dihasilkan.
Terlalu mengandalkan data historis: Moving Average adalah indikator yang tertinggal, yang mungkin tidak bereaksi tepat waktu ketika pasar berubah secara dramatis.
Pembatasan Jendela Waktu: Pembatasan waktu perdagangan yang ketat dapat menyebabkan kehilangan peluang pasar yang penting.
Stop loss yang tetap: Stop loss yang menggunakan nilai tetap mungkin tidak cukup fleksibel pada periode volatilitas yang tinggi.
Overtrading: Dalam kondisi pasar tertentu, strategi dapat menghasilkan terlalu banyak sinyal perdagangan, meningkatkan biaya transaksi.
Penyesuaian parameter dinamis: pertimbangkan untuk memperkenalkan mekanisme adaptasi, menyesuaikan siklus MA dan parameter perdagangan sesuai dengan dinamika volatilitas pasar.
Tambahkan filter volatilitas: Evaluasi volatilitas pasar sebelum menghasilkan sinyal perdagangan, untuk menghindari perdagangan berlebihan pada periode volatilitas rendah.
Meningkatkan mekanisme stop loss: Anda dapat mempertimbangkan untuk menggunakan stop loss dinamis berdasarkan ATR (Average True Range) untuk menyesuaikan dengan kondisi pasar yang berbeda.
Mengintegrasikan indikator teknis lainnya: seperti RSI atau MACD, untuk mengkonfirmasi kekuatan tren dan meningkatkan kualitas sinyal.
Optimisasi retrospeksi: melakukan retrospeksi data historis yang lebih luas untuk menemukan kombinasi parameter dan pengaturan jendela waktu yang optimal.
Pengelolaan dana yang optimal: menerapkan strategi manajemen posisi yang lebih kompleks, seperti skala transaksi yang disesuaikan berdasarkan ukuran akun dan volatilitas pasar.
Pertimbangkan faktor-faktor mendasar: menyesuaikan perilaku strategis sebelum dan sesudah data ekonomi penting dirilis, dan hindari perdagangan selama periode ketidakpastian tinggi.
Integrasi Pembelajaran Mesin: mengeksplorasi proses optimasi pilihan parameter dan pembuatan sinyal menggunakan algoritma pembelajaran mesin.
Strategi ini bertujuan untuk menangkap tren pasar dan mengoptimalkan pelaksanaan perdagangan. Meskipun strategi ini memiliki keunggulan seperti intuisi dan fleksibilitas, tetapi juga menghadapi risiko perdagangan seperti fluktuasi pasar dan keterlaluan. Dengan terus-menerus mengoptimalkan dan memperbaiki, seperti memperkenalkan penyesuaian parameter dinamis, memperbaiki mekanisme manajemen risiko, dan mengintegrasikan lebih banyak indikator teknis, strategi ini memiliki potensi untuk menjadi sistem perdagangan yang lebih kuat dan efisien.
/*backtest
start: 2024-07-23 00:00:00
end: 2024-07-30 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Gold Trend Trader", shorttitle="Gold Trader", overlay=true)
// User-defined input for moving averages
shortMA = input.int(10, minval=1, title="Short MA Period")
longMA = input.int(100, minval=1, title="Long MA Period")
target_1 = input.int(100, minval=1, title="Target_1")
target_2 = input.int(150, minval=1, title="Target_2")
// User-defined input for the start and end times with default values
startTimeInput = input.int(12, title="Start Time for Session (UTC, in hours)", minval=0, maxval=23)
endTimeInput = input.int(17, title="End Time Session (UTC, in hours)", minval=0, maxval=23)
// Convert the input hours to minutes from midnight
startTime = startTimeInput * 60
endTime = endTimeInput * 60
// Function to convert the current exchange time to UTC time in minutes
toUTCTime(exchangeTime) =>
exchangeTimeInMinutes = exchangeTime / 60000
// Adjust for UTC time
utcTime = exchangeTimeInMinutes % 1440
utcTime
// Get the current time in UTC in minutes from midnight
utcTime = toUTCTime(time)
// Check if the current UTC time is within the allowed timeframe
isAllowedTime = (utcTime >= startTime and utcTime < endTime)
// Calculating moving averages
shortMAValue = ta.sma(close, shortMA)
longMAValue = ta.sma(close, longMA)
// Plotting the MAs
plot(shortMAValue, title="Short MA", color=color.blue)
plot(longMAValue, title="Long MA", color=color.red)
// Tracking buy and sell signals
var float buyEntryPrice_1 = na
var float buyEntryPrice_2 = na
var float sellEntryPrice_1 = na
var float sellEntryPrice_2 = na
// Logic for Buy and Sell signals
buySignal = ta.crossover(shortMAValue, longMAValue) and isAllowedTime
sellSignal = ta.crossunder(shortMAValue, longMAValue) and isAllowedTime
// Entry conditions for long and short trades
if (buySignal)
strategy.entry("Buy_1", strategy.long)
strategy.exit("TP_1", "Buy_1", limit=close + target_1, stop=close - 100)
strategy.entry("Buy_2", strategy.long)
strategy.exit("TP_2", "Buy_2", limit=close + target_2, stop=close - 1500)
if (sellSignal)
strategy.entry("Sell_1", strategy.short)
strategy.exit("TP_3", "Sell_1", limit=close - target_1, stop=close + 100)
strategy.entry("Sell_2", strategy.short)
strategy.exit("TP_4", "Sell_2", limit=close - target_2, stop=close + 150)
// Apply background color for entry candles
barcolor(buySignal ? color.green : sellSignal ? color.red : na)
// Creating buy and sell labels
if (buySignal)
label.new(bar_index, low, text="BUY", style=label.style_label_up, color=color.green, textcolor=color.white, yloc=yloc.belowbar)
if (sellSignal)
label.new(bar_index, high, text="SELL", style=label.style_label_down, color=color.red, textcolor=color.white, yloc=yloc.abovebar)
// Creating labels for 100-point movement
if (not na(buyEntryPrice_1) and close >= buyEntryPrice_1 + target_1)
label.new(bar_index, high, text=str.tostring(target_1), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
buyEntryPrice_1 := na // Reset after label is created
if (not na(buyEntryPrice_2) and close >= buyEntryPrice_2 + target_2)
label.new(bar_index, high, text=str.tostring(target_2), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
buyEntryPrice_2 := na // Reset after label is created
if (not na(sellEntryPrice_1) and close <= sellEntryPrice_1 - target_1)
label.new(bar_index, low, text=str.tostring(target_1), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
sellEntryPrice_1 := na // Reset after label is created
if (not na(sellEntryPrice_2) and close <= sellEntryPrice_2 - target_2)
label.new(bar_index, low, text=str.tostring(target_2), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
sellEntryPrice_2 := na // Reset after label is created