
Ini adalah strategi perdagangan kuantitatif yang kompleks yang menggabungkan beberapa petunjuk teknikal dan falsafah perdagangan. Strategi ini adalah berdasarkan blok pesanan, pengesanan perubahan trend, persilangan purata bergerak, dan analisis pelbagai tempoh masa untuk menghasilkan isyarat perdagangan.
Blok pesanan: Kaedah menggunakan fungsi tersuai untuk mengira blok pesanan, yang merupakan tahap harga penting, yang biasanya mewakili kawasan terpusat untuk pesanan institusi besar.
Pengesanan perubahan trend: menggunakan simpulan purata bergerak ((SMA) untuk mengenal pasti perubahan trend yang berpotensi.
Analisis jangka masa berbilang: Pengiraan purata bergerak indeks 50 dan 200 kitaran pada jangka masa 1 jam (EMA) untuk menentukan trend pasaran yang lebih besar.
Syarat penyertaan:
Strategi Keluar: Menggunakan peratusan yang ditetapkan untuk menghentikan dan menghentikan tahap kerugian untuk menguruskan risiko dan mengunci keuntungan.
Analisis pelbagai dimensi: menggabungkan pelbagai kerangka masa dan petunjuk teknikal untuk memberikan perspektif pasaran yang lebih menyeluruh.
Trend Tracking: meningkatkan peluang keuntungan dengan berdagang di arah trend besar.
Kemasukan tepat: Menggunakan blok pesanan dan perubahan trend jangka pendek untuk mengoptimumkan masa kemasukan.
Pengurusan risiko: Menggunakan peratusan berhenti dan henti yang ditetapkan untuk mengawal risiko setiap perdagangan.
Adaptif: parameter strategi boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Perdagangan berlebihan: Ia boleh menyebabkan isyarat perdagangan yang kerap dalam pasaran yang bergolak, meningkatkan kos perdagangan.
Risiko slippage: Dalam pasaran yang kurang cair, harga pelaksanaan sebenar mungkin jauh berbeza dengan harga yang diingini.
Risiko trend reversal: Strategi mungkin mengalami kerugian berturut-turut berhampiran titik perubahan trend.
Sensitiviti parameter: Prestasi strategi mungkin sangat sensitif terhadap tetapan parameter yang memerlukan pengoptimuman berterusan.
Bergantung kepada keadaan pasaran: Strategi mungkin tidak berkesan dalam pasaran yang berlainan arah atau pasaran yang bergolak dengan cepat.
Penyesuaian parameter dinamik: Pertimbangkan untuk menyesuaikan peratusan stop loss secara automatik mengikut turun naik pasaran.
Menambah penapis: memperkenalkan petunjuk teknikal tambahan atau sentimen pasaran untuk mengurangkan isyarat palsu.
Penapisan masa: Sertakan sekatan pada tetingkap masa perdagangan untuk mengelakkan pergerakan rendah.
Pengurusan kedudukan: melaksanakan strategi pengurusan kedudukan yang lebih kompleks, seperti penyesuaian kedudukan berdasarkan turun naik.
Pemantauan dan pengoptimuman: melakukan pemantauan data sejarah yang lebih luas untuk mencari kombinasi parameter terbaik.
Meningkatkan pengenalan keadaan pasaran: membangunkan algoritma untuk mengenal pasti keadaan pasaran yang berbeza dan menyesuaikan strategi dengan sewajarnya.
Ini adalah strategi perdagangan kuantitatif yang komprehensif dan logik yang kompleks, yang menggabungkan analisis pelbagai kerangka masa, teori blok pesanan, dan teknologi pengesanan trend. Strategi ini bertujuan untuk meningkatkan kadar kejayaan perdagangan dengan mencari titik masuk yang tepat ke arah trend yang besar.
/*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)