Sumber dimuat naik... memuat...

Trend Momentum Purata Multi-Moving Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-11-12 15:05:09
Tag:SMARSIMA

img

Ringkasan

Strategi ini adalah sistem perdagangan mengikut trend berdasarkan pelbagai purata bergerak dan penunjuk momentum. Ia terutamanya menggunakan hubungan dinamik antara purata bergerak mudah (SMA) 20 hari, 50 hari, 150 hari, dan 200 hari, digabungkan dengan jumlah dan penunjuk RSI untuk menangkap aliran naik yang kuat pada jangka masa harian dan kedudukan keluar apabila trend melemah. Strategi ini berkesan menapis isyarat palsu dan meningkatkan ketepatan perdagangan melalui penggunaan pelbagai penunjuk teknikal yang diselaraskan.

Prinsip Strategi

Logik teras merangkumi komponen utama berikut:

  1. Sistem Purata Bergerak: Menggunakan purata bergerak 20/50/150/200 hari untuk membina sistem penilaian trend, yang memerlukan penyelarasan menaik.
  2. Pengesahan Momentum: Menggunakan penunjuk RSI dan purata bergerak untuk menilai momentum harga, memerlukan RSI di atas 55 atau RSI SMA di atas 50 dan meningkat.
  3. Pengesahan Volume: Memastikan keabsahan isyarat melalui perbandingan purata jumlah 20 hari dan jumlah terkini.
  4. Pengesahan Persistensi Trend: Memeriksa sama ada MA 50-hari mengekalkan trend menaik sekurang-kurangnya 25 hari daripada 40 hari dagangan.
  5. Pengesahan Kedudukan: Harga mesti kekal di atas MA 150 hari selama sekurang-kurangnya 20 hari dagangan.

Syarat pembelian memerlukan:

  • Lebih daripada 4 hari menaik dalam 10 hari terakhir dengan sekurang-kurangnya 1 hari volume tinggi
  • Indikator RSI memenuhi keadaan momentum
  • Sistem purata bergerak menunjukkan penyelarasan menaik dan kenaikan berterusan
  • Harga stabil di atas MA 150 hari

Syarat jualan termasuk:

  • Penembusan harga di bawah MA 150 hari
  • Penurunan jumlah besar berturut-turut
  • Peningkatan MA 50 hari di bawah MA 150 hari
  • Lilin penurunan baru-baru ini dengan peningkatan jumlah

Kelebihan Strategi

  1. Penanda teknikal berbilang penanda silang mengurangkan penilaian yang salah
  2. Keperluan kesinambungan trend yang ketat menapis turun naik jangka pendek
  3. Integrasi analisis jumlah meningkatkan kebolehpercayaan isyarat
  4. Syarat stop-loss dan mengambil keuntungan yang jelas mengawal risiko dengan berkesan
  5. Sesuai untuk menangkap trend jangka sederhana hingga panjang, mengurangkan kekerapan dagangan
  6. Logik strategi yang jelas, mudah difahami dan dilaksanakan

Risiko Strategi

  1. Sistem purata bergerak mempunyai kelewatan, mungkin terlepas peringkat awal trend
  2. Syarat kemasukan yang ketat mungkin kehilangan beberapa peluang perdagangan
  3. Boleh menghasilkan isyarat palsu yang kerap di pasaran yang bergelora
  4. Kelewatan dalam mengenal pasti pembalikan pasaran
  5. Memerlukan skala modal yang lebih besar untuk menahan pengeluaran

Cadangan Kawalan Risiko:

  • Menetapkan kedudukan stop loss yang munasabah
  • Pengurusan wang konservatif
  • Pertimbangkan untuk menambah penunjuk pengesahan trend
  • Penyesuaian parameter berdasarkan persekitaran pasaran

Arahan Pengoptimuman Strategi

  1. Tambah Parameter Sesuai
  • Sesuaikan tempoh MA secara dinamik berdasarkan turun naik pasaran
  • Mengoptimumkan tetapan ambang RSI
  1. Meningkatkan mekanisme Stop-Loss
  • Tambah penangguhan
  • Tetapkan hentian berasaskan masa
  1. Memperkenalkan Analisis Persekitaran Pasaran
  • Tambah penunjuk kekuatan trend
  • Pertimbangkan penunjuk turun naik
  1. Mengoptimumkan Saiz Dagangan
  • Reka bentuk pengurusan kedudukan dinamik
  • Sesuaikan berdasarkan kekuatan isyarat

Ringkasan

Ini adalah strategi trend yang dirancang dengan ketat yang berkesan menangkap peluang trend yang kuat melalui penggunaan pelbagai penunjuk teknikal yang diselaraskan. Kelebihan utama strategi terletak pada mekanisme pengesahan isyarat yang komprehensif dan sistem kawalan risiko yang ketat. Walaupun terdapat beberapa kelewatan, melalui pengoptimuman parameter yang munasabah dan pengurusan risiko, strategi dapat mengekalkan prestasi yang stabil dalam operasi jangka panjang. Pelabur dinasihatkan untuk memberi perhatian kepada kebolehsesuaian persekitaran pasaran, mengawal kedudukan dengan munasabah, dan membuat pengoptimuman yang disasarkan berdasarkan keadaan sebenar ketika menerapkan strategi dalam perdagangan langsung.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Micho's 150 (1D Time Frame Only)", overlay=true)

// Define the length for the SMAs and RSI
sma20Length = 20
sma50Length = 50
sma150Length = 150
sma200Length = 200
volumeMaLength = 20
rsiLength = 14
rsiSmaLength = 14
smaCheckLength = 40  // Check the last month of trading days (~20 days)
requiredRisingDays = 25  // Require SMA to rise in at least 16 of the past 20 days
sma150AboveSma200CheckDays = 1  // Require SMA150 > SMA200 for the last 10 days

// Calculate the SMAs for price
sma20 = ta.sma(close, sma20Length)
sma50 = ta.sma(close, sma50Length)
sma150 = ta.sma(close, sma150Length)
sma200 = ta.sma(close, sma200Length)

// Calculate the 20-period moving average of volume
volumeMA20 = ta.sma(volume, volumeMaLength)

// Calculate the 14-period RSI
rsi = ta.rsi(close, rsiLength)

// Calculate the 14-period SMA of RSI
rsiSMA = ta.sma(rsi, rsiSmaLength)

// Check if most of the last 5 days are buyer days (close > open)
buyerDays = 0
for i = 0 to 9
    if close[i] > open[i]
        buyerDays := buyerDays + 1

// Check if at least 1 day has volume higher than the 20-period volume MA
highVolumeDays = 0
for i = 0 to 9
    if close[i] > open[i] and volume[i] > volumeMA20
        highVolumeDays := highVolumeDays + 1

// Define the new RSI condition
rsiCondition = (rsi >= 55) or (rsiSMA > 50 and rsi > rsi[1])

// Check if the 50-day SMA has been rising on at least 16 of the last 20 trading days
risingDays = 0
for i = 1 to smaCheckLength
    if sma50[i] > sma50[i + 1]
        risingDays := risingDays + 1

// Check if the SMA has risen on at least 16 of the last 20 days
sma50Rising = risingDays >= requiredRisingDays

// Check if the price has been above the SMA150 for the last 20 trading days
priceAboveSma150 = true
for i = 1 to smaCheckLength
    if close[i] < sma150[i]
        priceAboveSma150 := false

// Check if the SMA150 has been above the SMA200 for the last 10 days
sma150AboveSma200 = true
for i = 1 to sma150AboveSma200CheckDays
    if sma150[i] < sma200[i]
        sma150AboveSma200 := false

// Define the conditions for the 150-day and 200-day SMAs being rising
sma150Rising = sma150 > sma150[1]
sma200Rising = sma200 > sma200[1]

// Check if most of the last 5 days are seller days (close < open)
sellerDays = 0
for i = 0 to 9
    if close[i] < open[i]
        sellerDays := sellerDays + 1

// Check if at least 1 day has seller volume higher than the 20-period volume MA
highSellerVolumeDays = 0
for i = 0 to 9
    if close[i] < open[i] and volume[i] > volumeMA20
        highSellerVolumeDays := highSellerVolumeDays + 1

// Check in the last N days the price below 150
priceBelowSma150 = true
for i = 0 to 0
    if close[i] > sma150[i]
        priceBelowSma150 := false

// Restrict the strategy to 1D time frame
if timeframe.isdaily
    // Buy condition:
    // - Most of the last 5 days are buyer days (buyerDays > 2)
    // - At least 1 of those days has high buyer volume (highVolumeDays >= 1)
    // - RSI SMA (14-period) between 45 and 50 with RSI >= 55, or RSI SMA > 50 and RSI rising
    // - 50-day SMA > 150-day SMA and 150-day SMA > 200-day SMA
    // - 50-day SMA has been rising on at least 16 of the last 20 trading days
    // - The price hasn't been below the 150-day SMA in the last 20 days
    // - 150-day SMA has been above the 200-day SMA for the last 10 days
    // - 150-day and 200-day SMAs are rising
    buyCondition = (close > sma150 and buyerDays > 4 and highVolumeDays >= 1 and rsiCondition  and sma50 > sma150 and sma50Rising and sma150Rising and sma200Rising and priceAboveSma150)

    // Sell condition:
    // - Price crossing below SMA 150
    // - Seller volume (current volume > volume MA 20)
    // - 150-day SMA crosses below 200-day SMA
    // - Most of the last 5 days are seller days (sellerDays > 2) and at least 1 day of higher seller volume (highSellerVolumeDays >= 1)
    sellCondition = (priceBelowSma150 and (sma50 < sma150 or (sellerDays >5 and highSellerVolumeDays >= 5)))

    // Execute buy when all conditions are met
    if (buyCondition)
        strategy.entry("Buy", strategy.long)

    // Execute sell when all conditions are met
    if (sellCondition)
        strategy.close("Buy")


Berkaitan

Lebih lanjut