Strategi Dagangan Penunjuk Momentum Trend Kependaman Sifar

EMA SMA ATR ROC RSI TP SL
Tarikh penciptaan: 2025-02-21 10:19:25 Akhirnya diubah suai: 2025-02-21 10:19:25
Salin: 1 Bilangan klik: 409
2
fokus pada
319
Pengikut

Strategi Dagangan Penunjuk Momentum Trend Kependaman Sifar Strategi Dagangan Penunjuk Momentum Trend Kependaman Sifar

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan kuantitatif berdasarkan purata bergerak dengan penundaan sifar dan penilaian kekuatan trend. Ia mengenal pasti trend pasaran dengan menghilangkan keterlambatan purata bergerak tradisional, menggabungkan saluran kadar turun naik dan penilaian kekuatan trend, untuk menangkap peluang turun naik harga dalam jangka pendek.

Prinsip Strategi

Strategi ini bertujuan untuk menghapuskan kesan ketinggalan dari purata bergerak tradisional dengan menggunakan purata bergerak dengan kelewatan sifar. Cara pelaksanaan adalah: pertama, kira perbezaan harga semasa dengan harga ketinggalan, kemudian tambah perbezaan itu dengan harga semasa, dan kemudian kira purata bergerak. Strategi ini juga memperkenalkan sistem penilaian kekuatan trend untuk mengukur kekuatan trend dengan membandingkan harga yang tinggi dan rendah dalam tempoh masa yang berbeza.

Kelebihan Strategik

  1. Ciri penundaan sifar membolehkan strategi untuk menangkap perubahan trend pasaran dengan lebih cepat, mengurangkan kerugian yang disebabkan oleh keterlambatan strategi purata bergerak tradisional.
  2. Sistem penilaian kekuatan trend menyediakan ukuran kuantitatif terhadap trend pasaran yang membantu menapis isyarat palsu.
  3. Saluran kadar turun naik dinamik boleh disesuaikan mengikut turun naik pasaran, meningkatkan kestabilan strategi.
  4. Strategi ini menggunakan model perdagangan dua hala, yang membolehkan anda menangkap peluang keuntungan di kedua-dua arah.
  5. Mempunyai mekanisme penangguhan kerugian yang baik untuk mengawal risiko dengan berkesan.

Risiko Strategik

  1. Dalam pasaran yang bergolak, isyarat pecah palsu yang kerap boleh berlaku, yang menyebabkan perdagangan berlebihan.
  2. Pengaturan parameter sistem penilaian kekuatan trend adalah lebih rumit dan mungkin memerlukan penyesuaian yang kerap dalam keadaan pasaran yang berbeza.
  3. Pengiraan tanpa kelewatan mungkin menghasilkan keputusan yang tidak stabil dalam keadaan pasaran yang melampau.
  4. Strategi ini bergantung kepada data sejarah untuk mengira kekuatan trend dan mungkin tidak berkesan apabila pasaran bergolak.

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penyesuaian diri untuk penunjuk kadar turun naik pasaran (seperti ATR) yang secara dinamik menyesuaikan nilai terhad penilaian kekuatan trend.
  2. Menambah indikator analisis jumlah transaksi untuk mengesahkan keberkesanan trend.
  3. Membangunkan modul pengiktirafan keadaan pasaran, menggunakan parameter yang berbeza dalam keadaan pasaran yang berbeza.
  4. Tambahkan penapis masa untuk mengelakkan dagangan pada masa pasaran yang bergolak.
  5. Mengoptimumkan mekanisme stop loss, menyesuaikan kadar stop loss mengikut dinamik turun naik pasaran.

ringkaskan

Strategi ini menyelesaikan masalah ketinggalan dalam strategi pengesanan trend tradisional dengan menggunakan kaedah pengiraan penangguhan sifar yang inovatif dan sistem penilaian kekuatan trend. Pada masa yang sama, dengan memperkenalkan saluran kadar turun naik yang dinamik dan mekanisme kawalan risiko yang baik, ia meningkatkan kestabilan dan kebolehpercayaan strategi. Walaupun strategi ini masih mempunyai ruang untuk diperbaiki dalam pengoptimuman parameter dan kesesuaian pasaran, tetapi pemikiran reka bentuk keseluruhan jelas dan mempunyai aplikasi nilai sebenar yang lebih baik.

Kod sumber strategi
/*backtest
start: 2024-11-14 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © josephdelvecchio

//@version=6
strategy("Zero Lag Trend Strategy", overlay=true)

// -- Input Parameters --
timeframe = input.timeframe("10", "Timeframe")
zeroLagMovAvg = input.string("ema", "Zero Lag Moving Average", options=["ema", "sma"])
length = input.int(50, "Lookback Period")
volatility_mult = input.float(1.5, "Volatility Multiplier")
loop_start = input.int(1, "Loop Start")
loop_end = input.int(50, "Loop End")
threshold_up = input.int(5, "Threshold Up")
threshold_down = input.int(-5, "Threshold Down")
signalpct = input.float(8, "Signal Percentage")
stoppct = input.float(0, "Stop Percentage")

// -- Helper Variables --
nATR = ta.atr(length)
lag = math.floor((length - 1) / 2)
zl_basis = zeroLagMovAvg == "ema" ? ta.ema(2 * close - close[lag], length) : ta.sma(2 * close - close[lag], length)
volatility = ta.highest(nATR, length * 3) * volatility_mult

// -- Trend Strength Scoring Function --
forloop_analysis(basis_price, loop_start, loop_end) =>
    int sum = 0 // Use 'sum' as you did originally, for the +/- logic
    for i = loop_start to loop_end
        if basis_price > basis_price[i]
            sum += 1
        else if basis_price < basis_price[i] // Explicitly check for less than
            sum -= 1
        // If they are equal, do nothing (sum remains unchanged)
    sum

score = forloop_analysis(zl_basis, loop_start, loop_end)

// -- Signal Generation --
long_signal = score > threshold_up and close > zl_basis + volatility
short_signal = score < threshold_down and close < zl_basis - volatility

// -- Trend Detection (Ensure One Trade Until Reversal) --
var int trend = na
trend := long_signal ? 1 : short_signal ? -1 : trend[1]
trend_changed = trend != trend[1]

// -- Stop-Loss & Take-Profit --
stop_loss = close * (1 - stoppct / 100)
take_profit = close * (1 + signalpct / 100)

// -- Strategy Orders (Enter Only When Trend Changes) --

if long_signal
    strategy.entry("Long", strategy.long)
else if short_signal
    strategy.entry("Short", strategy.short)

// -- Strategy Exits --
strategy.exit("Exit Long", from_entry="Long", stop=stop_loss, limit=take_profit)
strategy.exit("Exit Short", from_entry="Short", stop=take_profit, limit=stop_loss)

// -- Visualization --
p_basis = zl_basis
plot(p_basis, title="Zero Lag Line", color=color.blue, linewidth=2)

// -- Buy/Sell Arrows --
plotshape(series=trend_changed and trend == 1, location=location.belowbar, color=color.green, style=shape.triangleup, size=size.large, title="Buy Signal")
plotshape(series=trend_changed and trend == -1, location=location.abovebar, color=color.red, style=shape.triangledown, size=size.large, title="Sell Signal")