
Strategi ini menggunakan sistem purata bergerak dwi untuk pertimbangan arah aliran dan keputusan perdagangan, dan mengenal pasti permulaan, kesinambungan atau akhir arah aliran pasaran melalui hubungan kedudukan relatif antara purata bergerak pantas dan purata bergerak perlahan pada titik masa tertentu. Strategi menyemak hubungan kedudukan antara EMA pantas dan EMA perlahan pada masa tetap setiap hari, menetapkan kedudukan panjang apabila garisan pantas berada di atas garisan perlahan, dan menetapkan kedudukan pendek apabila garisan pantas berada di bawah garisan perlahan, dengan itu mencapai dagangan pengesanan arah aliran.
Teras strategi adalah untuk membuat pertimbangan arah aliran berdasarkan dua purata bergerak eksponen (EMA) bagi tempoh yang berbeza. EMA pantas (tempoh lalai ialah 10) lebih sensitif kepada perubahan harga dan boleh menangkap arah aliran pasaran dengan lebih cepat EMA perlahan (tempoh lalai ialah 50) mencerminkan arah aliran jangka panjang. Strategi ini menyemak hubungan kedudukan kedua-dua purata bergerak pada masa tertentu pada setiap hari dagangan (lalai ialah 9:00), menentukan arah aliran pasaran dan berdagang berdasarkan isyarat persilangan purata bergerak. Apabila EMA pantas melintasi di atas EMA perlahan, ia menunjukkan bahawa momentum menaik jangka pendek telah meningkat, dan sudah tiba masanya untuk memasuki pasaran untuk pergi panjang apabila EMA pantas melintasi di bawah EMA perlahan, ia menunjukkan bahawa EMA pendek; momentum menurun jangka telah meningkat, dan sudah tiba masanya untuk memasuki pasaran untuk pergi pendek.
Strategi ini merealisasikan sistem perdagangan penjejakan arah aliran yang mudah dan berkesan dengan menggabungkan sistem purata bergerak dwi yang pantas dan perlahan dengan mekanisme semakan masa tetap. Kelebihan strategi ini ialah logik yang jelas dan tahap automasi yang tinggi, tetapi ia juga mempunyai had seperti lag purata bergerak dan masa kemasukan tetap. Masih terdapat banyak ruang untuk penambahbaikan dalam strategi dengan memperkenalkan penunjuk teknikal tambahan, mengoptimumkan mekanisme pemilihan parameter dan meningkatkan langkah kawalan risiko. Secara keseluruhan, ini adalah rangka kerja strategi asas dengan nilai praktikal, yang boleh dipertingkatkan dan dioptimumkan lagi mengikut keperluan khusus.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Daily EMA Comparison Strategy", shorttitle="Daily EMA cros Comparison", overlay=true)
//------------------------------------------------------------------------------
// Inputs
//------------------------------------------------------------------------------
fastEmaLength = input.int(10, title="Fast EMA Length", minval=1) // Fast EMA period
slowEmaLength = input.int(50, title="Slow EMA Length", minval=1) // Slow EMA period
checkHour = input.int(9, title="Check Hour (24h format)", minval=0, maxval=23) // Hour to check
checkMinute = input.int(0, title="Check Minute", minval=0, maxval=59) // Minute to check
//------------------------------------------------------------------------------
// EMA Calculation
//------------------------------------------------------------------------------
fastEMA = ta.ema(close, fastEmaLength)
slowEMA = ta.ema(close, slowEmaLength)
//------------------------------------------------------------------------------
// Time Check
//------------------------------------------------------------------------------
// Get the current bar's time in the exchange's timezone
currentTime = timestamp("GMT-0", year, month, dayofmonth, checkHour, checkMinute)
// Check if the bar's time equals or passes the daily check time
isCheckTime = (time >= currentTime and time < currentTime + 60 * 1000) // 1-minute tolerance
//------------------------------------------------------------------------------
// Entry Conditions
//------------------------------------------------------------------------------
// Buy if Fast EMA is above Slow EMA at the specified time
buyCondition = isCheckTime and fastEMA > slowEMA
// Sell if Fast EMA is below Slow EMA at the specified time
sellCondition = isCheckTime and fastEMA < slowEMA
//------------------------------------------------------------------------------
// Strategy Execution
//------------------------------------------------------------------------------
// Enter Long
if buyCondition
strategy.entry("Long", strategy.long)
// Enter Short
if sellCondition
strategy.entry("Short", strategy.short)
//------------------------------------------------------------------------------
// Plot EMAs
//------------------------------------------------------------------------------
plot(fastEMA, color=color.blue, title="Fast EMA")
plot(slowEMA, color=color.orange, title="Slow EMA")