
Ini adalah strategi perdagangan kuantitatif yang kompleks yang menggabungkan beberapa indikator teknis dan ide perdagangan. Strategi ini terutama didasarkan pada blok pesanan, deteksi perubahan tren, persilangan rata-rata bergerak, dan analisis multi-frame waktu untuk menghasilkan sinyal perdagangan. Gagasan inti dari strategi ini adalah dalam arah tren dari frame waktu yang lebih besar (jam 1), memanfaatkan perilaku harga dan indikator teknis dari frame waktu yang lebih kecil (menit 5) untuk masuk dan keluar yang tepat.
Blok pesanan: Strategi menggunakan fungsi khusus untuk menghitung blok pesanan, yang merupakan tingkat harga penting, yang biasanya mewakili area yang terpusat untuk pesanan lembaga besar.
Deteksi perubahan tren: Menggunakan simpul moving average (SMA) untuk mengidentifikasi perubahan tren potensial.
Analisis multi-frame waktu: menghitung rata-rata bergerak indeks 50 siklus dan 200 siklus pada frame waktu 1 jam (EMA) untuk menentukan tren pasar yang lebih besar.
Syarat masuk:
Strategi Keluar: Menggunakan Stop Loss dan Stop Loss dengan persentase tetap untuk mengelola risiko dan mengunci keuntungan.
Analisis multi-dimensi: menggabungkan beberapa kerangka waktu dan indikator teknis untuk memberikan perspektif pasar yang lebih komprehensif.
Pelacakan tren: meningkatkan probabilitas keuntungan dengan berdagang di arah tren besar.
Pendaftaran tepat waktu: Menggunakan blok pesanan dan perubahan tren jangka pendek untuk mengoptimalkan waktu pendaftaran.
Manajemen Risiko: Menggunakan Stop Loss dan Stop Loss Persentase yang telah ditentukan untuk mengontrol risiko setiap transaksi.
Adaptabilitas: Parameter strategi dapat disesuaikan untuk menyesuaikan diri dengan lingkungan pasar yang berbeda.
Overtrading: Bisa menimbulkan sinyal trading yang sering terjadi di pasar yang bergejolak, sehingga meningkatkan biaya transaksi.
Risiko slippage: Dalam pasar yang kurang likuid, harga eksekusi yang sebenarnya mungkin jauh berbeda dari harga yang diinginkan.
Risiko Trend Reversal: Strategi mungkin mengalami kerugian berturut-turut di dekat titik pembalikan tren.
Sensitivitas parameter: Kinerja strategi mungkin sangat sensitif terhadap pengaturan parameter yang perlu terus dioptimalkan.
Ketergantungan pada kondisi pasar: Strategi mungkin tidak efektif dalam pasar yang bergeser atau bergoyang cepat.
Penyesuaian parameter dinamis: Pertimbangkan untuk menyesuaikan persentase stop loss secara otomatis sesuai dengan volatilitas pasar.
Menambahkan filter: Masukkan indikator teknis tambahan atau indikator sentimen pasar untuk mengurangi sinyal palsu.
Filter waktu: Tambahkan batasan jendela waktu perdagangan untuk menghindari periode likuiditas rendah.
Manajemen posisi: menerapkan strategi manajemen posisi yang lebih kompleks, seperti penyesuaian posisi berdasarkan volatilitas.
Retesting dan optimasi: melakukan retesting data historis yang lebih luas untuk menemukan kombinasi parameter optimal.
Meningkatkan identifikasi lingkungan pasar: mengembangkan algoritma untuk mengidentifikasi kondisi pasar yang berbeda, dan menyesuaikan strategi sesuai.
Ini adalah strategi perdagangan kuantitatif yang komprehensif dan logis yang kompleks, yang menggabungkan analisis multi-frame waktu, teori blok pesanan, dan teknik pelacakan tren. Strategi ini bertujuan untuk meningkatkan tingkat keberhasilan perdagangan dengan mencari titik masuk yang tepat di arah tren besar. Namun, karena kompleksitasnya, strategi ini juga menghadapi over-fitting dan sensitivitas parameter.
/*backtest
start: 2024-06-28 00:00:00
end: 2024-07-28 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("S&P 500", overlay=true)
// Parámetros
length = input(14, "Longitud")
src = input(close, "Fuente")
profit_percent = input.float(0.08955, "Porcentaje de ganancia", step=0.00001, minval=0)
stop_loss_percent = input.float(0.04477, "Porcentaje de stop loss", step=0.00001, minval=0)
// Función para calcular el Order Block
order_block(src, len) =>
highest = ta.highest(high, len)
lowest = ta.lowest(low, len)
mid = (highest + lowest) / 2
ob = src > mid ? highest : lowest
ob
// Cálculo del Order Block
ob = order_block(src, length)
// Función para detectar cambios de tendencia
trend_change(src, len) =>
up = ta.crossover(src, ta.sma(src, len))
down = ta.crossunder(src, ta.sma(src, len))
[up, down]
// Detectar cambios de tendencia
[trend_up, trend_down] = trend_change(src, length)
// Calcular EMA 50 y EMA 200 en timeframe de 1 hora
ema50_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 50))
ema200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))
// Condiciones de EMA
ema_buy_condition = ema50_1h > ema200_1h
ema_sell_condition = ema50_1h < ema200_1h
// Señales de compra y venta
buy_signal = trend_up and close > ob and ema_buy_condition
sell_signal = trend_down and close < ob and ema_sell_condition
// Ejecutar la estrategia
if (buy_signal)
strategy.entry("Compra", strategy.long)
if (sell_signal)
strategy.entry("Venta", strategy.short)
// Calcular precios de toma de ganancias y stop loss
if (strategy.position_size != 0)
entry_price = strategy.position_avg_price
is_long = strategy.position_size > 0
take_profit = entry_price * (1 + (is_long ? 1 : -1) * profit_percent / 100)
stop_loss = entry_price * (1 + (is_long ? -1 : 1) * stop_loss_percent / 100)
strategy.exit(is_long ? "Long TP/SL" : "Short TP/SL", limit=take_profit, stop=stop_loss)
// Visualización
plot(ob, "Order Block", color.purple, 2)
plot(ta.sma(src, length), "SMA", color.blue)
plot(ema50_1h, "EMA 50 1h", color.yellow)
plot(ema200_1h, "EMA 200 1h", color.white)
bgcolor(buy_signal ? color.new(color.green, 90) : sell_signal ? color.new(color.red, 90) : na)