Strategi penjejakan gabungan berbilang penunjuk penyesuaian berbilang pasaran

CMF DPO ROC WMA ATR
Tarikh penciptaan: 2024-12-12 15:23:28 Akhirnya diubah suai: 2024-12-12 15:23:28
Salin: 0 Bilangan klik: 459
1
fokus pada
1617
Pengikut

Strategi penjejakan gabungan berbilang penunjuk penyesuaian berbilang pasaran

Gambaran keseluruhan

Ini adalah strategi pengesanan trend yang beradaptasi sendiri berdasarkan gabungan pelbagai indikator teknikal, yang dapat menyesuaikan parameter secara automatik mengikut ciri-ciri pasaran yang berbeza. Strategi ini menggunakan indikator aliran dana (CMF), indikator pergerakan harga ke arah trend (DPO) dan indikator Koppock (Coppock) untuk menangkap trend pasaran, dan menyesuaikan faktor dengan kadar turun naik untuk menyesuaikan diri dengan ciri-ciri pasaran yang berbeza.

Prinsip Strategi

Logik teras strategi adalah untuk mengesahkan arah trend dan masa perdagangan melalui gabungan pelbagai petunjuk. Secara khusus:

  1. Menggunakan CMF untuk mengukur aliran dana dan menilai sentimen pasaran
  2. Menyingkirkan kesan trend jangka panjang melalui penunjuk DPO, memberi perhatian kepada turun naik harga jangka pendek dan pertengahan
  3. Menggunakan Indeks Coppock yang Diperbaiki untuk Menangkap Titik Peralihan Trend
  4. Isyarat perdagangan dihasilkan apabila ketiga-tiga penunjuk bersama-sama mengesahkan
  5. Menghitung kedudukan hentian kerugian secara dinamik melalui ATR
  6. Menyesuaikan parameter kadar leverage dan kadar turun naik secara automatik mengikut ciri-ciri pasaran yang berbeza (saham, forex, niaga hadapan)

Kelebihan Strategik

  1. Multi-indicator cross-verification, yang boleh menyaring isyarat palsu dengan berkesan
  2. Adaptif, boleh digunakan dalam keadaan pasaran yang berbeza
  3. Sistem pengurusan kedudukan yang baik, memegang kedudukan mengikut kadar turun naik yang dinamik
  4. Mempunyai mekanisme penangguhan kerugian, mengawal risiko dan melindungi keuntungan
  5. Menyokong perdagangan serentak pelbagai jenis untuk menyebarkan risiko
  6. Logik urus niaga yang jelas, mudah untuk dijaga dan dioptimumkan

Risiko Strategik

  1. Sistem multi-indikator mungkin ketinggalan zaman, kehilangan peluang dalam masa yang cepat
  2. Optimasi parameter yang berlebihan boleh menyebabkan overfitting
  3. Sinyal yang salah boleh berlaku semasa peralihan pasaran
  4. Tetapan henti rugi yang terlalu ketat boleh menyebabkan henti rugi yang kerap
  5. Kos urus niaga mempengaruhi keuntungan strategi Ia disyorkan untuk menguruskan risiko dengan:
  • Semak parameter secara berkala
  • Pemantauan dalam masa nyata
  • Kawalan Leverage
  • Tetapkan had pengeluaran maksimum

Arah pengoptimuman strategi

  1. Memperkenalkan penilaian keadaan kadar turun naik pasaran, menggunakan kombinasi parameter yang berbeza dalam persekitaran turun naik yang berbeza
  2. Tambah lebih banyak penanda pengenalan ciri pasaran untuk meningkatkan kebolehpasaran strategi
  3. Mengoptimumkan mekanisme penangguhan kerugian, boleh mempertimbangkan penggunaan kerugian bergerak
  4. Membangunkan sistem pengoptimuman parameter automatik, menyesuaikan parameter secara berkala
  5. Tambah modul analisis kos urus niaga
  6. Menyertai mekanisme amaran awal risiko

ringkaskan

Strategi ini adalah sistem pengesanan trend yang lebih lengkap, dengan mekanisme pengendalian risiko dan pengendalian risiko, dengan jaminan keuntungan, risiko dikendalikan dengan baik. Strategi ini sangat berskala dan mempunyai ruang pengoptimuman yang besar. Ia disyorkan untuk memulakan dari skala kecil dalam perdagangan langsung, meningkatkan skala perdagangan secara beransur-ansur, sambil terus memantau prestasi strategi dan menyesuaikan parameter tepat pada masanya.

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

//@version=5
strategy("Multi-Market Adaptive Trading Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Input parameters
i_market_type = input.string("Crypto", "Market Type", options=["Forex", "Crypto", "Futures"])
i_risk_percent = input.float(1, "Risk Per Trade (%)", minval=0.1, maxval=100, step=0.1)
i_volatility_adjustment = input.float(1.0, "Volatility Adjustment", minval=0.1, maxval=5.0, step=0.1)
i_max_position_size = input.float(5.0, "Max Position Size (%)", minval=1.0, maxval=100.0, step=1.0)
i_max_open_trades = input.int(3, "Max Open Trades", minval=1, maxval=10)

// Indicator Parameters
i_cmf_length = input.int(20, "CMF Length", minval=1)
i_dpo_length = input.int(21, "DPO Length", minval=1)
i_coppock_short = input.int(11, "Coppock Short ROC", minval=1)
i_coppock_long = input.int(14, "Coppock Long ROC", minval=1)
i_coppock_wma = input.int(10, "Coppock WMA", minval=1)
i_atr_length = input.int(14, "ATR Length", minval=1)

// Market-specific Adjustments
volatility_factor = i_market_type == "Forex" ? 0.1 : i_market_type == "Futures" ? 1.5 : 1.0
volatility_factor *= i_volatility_adjustment
leverage = i_market_type == "Forex" ? 100.0 : i_market_type == "Futures" ? 20.0 : 3.0

// Calculate Indicators
mf_multiplier = ((close - low) - (high - close)) / (high - low)
mf_volume = mf_multiplier * volume
cmf = ta.sma(mf_volume, i_cmf_length) / ta.sma(volume, i_cmf_length)

dpo_offset = math.floor(i_dpo_length / 2) + 1
dpo = close - ta.sma(close, i_dpo_length)[dpo_offset]

roc1 = ta.roc(close, i_coppock_short)
roc2 = ta.roc(close, i_coppock_long)
coppock = ta.wma(roc1 + roc2, i_coppock_wma)

atr = ta.atr(i_atr_length)

// Define Entry Conditions
long_condition = cmf > 0 and dpo > 0 and coppock > 0 and ta.crossover(coppock, 0)
short_condition = cmf < 0 and dpo < 0 and coppock < 0 and ta.crossunder(coppock, 0)

// Calculate Position Size
account_size = strategy.equity
risk_amount = math.min(account_size * (i_risk_percent / 100), account_size * (i_max_position_size / 100))
position_size = (risk_amount / (atr * volatility_factor)) * leverage

// Execute Trades
if (long_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close - (atr * 2 * volatility_factor)
    tp_price = close + (atr * 3 * volatility_factor)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price)

if (short_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close + (atr * 2 * volatility_factor)
    tp_price = close - (atr * 3 * volatility_factor)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price)

// Plot Indicators
plot(cmf, color=color.blue, title="CMF")
plot(dpo, color=color.green, title="DPO")
plot(coppock, color=color.red, title="Coppock")
hline(0, "Zero Line", color=color.gray)

// Alerts
alertcondition(long_condition, title="Long Entry", message="Potential Long Entry Signal")
alertcondition(short_condition, title="Short Entry", message="Potential Short Entry Signal")

// // Performance reporting
// if barstate.islastconfirmedhistory
//     label.new(bar_index, high, text="Strategy Performance:\nTotal Trades: " + str.tostring(strategy.closedtrades) + 
//               "\nWin Rate: " + str.tostring(strategy.wintrades / strategy.closedtrades * 100, "#.##") + "%" +
//               "\nProfit Factor: " + str.tostring(strategy.grossprofit / strategy.grossloss, "#.##"))