Sumber dimuat naik... memuat...

Trend Multi-Pasar Beradaptasi Multi-Indikator Mengikut Strategi

Penulis:ChaoZhang, Tarikh: 2024-12-12 15:23:28
Tag:CMFDPOROCWMAATR

img

Ringkasan

Ini adalah strategi trend adaptif berdasarkan pelbagai penunjuk teknikal yang menyesuaikan parameter secara automatik mengikut ciri pasaran yang berbeza. Strategi ini menggabungkan Chaikin Money Flow (CMF), Detrended Price Oscillator (DPO), dan Curve Coppock untuk menangkap trend pasaran, dengan faktor penyesuaian turun naik untuk menyesuaikan diri dengan ciri pasaran yang berbeza. Ia merangkumi sistem pengurusan kedudukan dan kawalan risiko yang komprehensif yang secara dinamik menyesuaikan saiz dagangan berdasarkan turun naik pasaran.

Prinsip Strategi

Logik teras strategi ini adalah untuk mengesahkan arah trend dan masa dagangan melalui kerjasama pelbagai penunjuk:

  1. Menggunakan penunjuk CMF untuk mengukur aliran wang dan menilai sentimen pasaran
  2. Mempekerjakan DPO untuk menghapuskan pengaruh trend jangka panjang dan memberi tumpuan kepada turun naik harga jangka sederhana dan pendek
  3. Menggunakan penunjuk Coppock yang diubah suai untuk menangkap titik perubahan trend
  4. Menghasilkan isyarat dagangan hanya apabila ketiga-tiga penunjuk mengesahkan
  5. Mengira secara dinamik paras stop-loss dan mengambil keuntungan menggunakan ATR
  6. Mengatur parameter leverage dan volatiliti secara automatik berdasarkan ciri pasaran yang berbeza ( saham, forex, niaga hadapan)

Kelebihan Strategi

  1. Penyelidikan silang pelbagai penunjuk berkesan menapis isyarat palsu
  2. Kemudahan penyesuaian yang tinggi yang sesuai untuk persekitaran pasaran yang berbeza
  3. Sistem pengurusan kedudukan yang komprehensif dengan saiz kedudukan dinamik berdasarkan turun naik
  4. Termasuk mekanisme stop loss dan mengambil keuntungan untuk mengawal risiko sambil melindungi keuntungan
  5. Menyokong perdagangan pelbagai instrumen untuk kepelbagaian risiko
  6. Logik perdagangan yang jelas yang mudah dikekalkan dan dioptimumkan

Risiko Strategi

  1. Sistem pelbagai penunjuk mungkin mempunyai kelewatan dalam pasaran bergerak pantas
  2. Pengoptimuman parameter boleh membawa kepada overfit
  3. Isyarat palsu mungkin berlaku semasa perubahan rejim pasaran
  4. Tetapan stop-loss yang ketat boleh menyebabkan berhenti yang kerap
  5. Kos dagangan akan memberi kesan kepada pulangan strategi Cadangan pengurusan risiko:
  • Pemeriksaan keabsahan parameter secara berkala
  • Pemantauan kedudukan masa nyata
  • Kawalan leverage yang betul
  • Had pengeluaran maksimum

Arahan pengoptimuman

  1. Memperkenalkan penilaian keadaan turun naik pasaran untuk menggunakan set parameter yang berbeza dalam persekitaran turun naik yang berbeza
  2. Tambah lebih banyak penunjuk pengenalan ciri pasaran untuk meningkatkan kesesuaian strategi
  3. Mengoptimumkan mekanisme stop-loss dan mengambil keuntungan, mempertimbangkan pelaksanaan trailing stops
  4. Membangunkan sistem pengoptimuman parameter automatik untuk pelarasan berkala
  5. Tambah modul analisis kos dagangan
  6. Melaksanakan mekanisme amaran risiko

Ringkasan

Strategi ini adalah sistem trend yang menyeluruh yang menyeimbangkan pulangan dan risiko melalui pelbagai penunjuk dan mekanisme kawalan risiko. Strategi ini mempunyai keluasan yang kuat dengan ruang yang signifikan untuk pengoptimuman.


/*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, "#.##"))

Berkaitan

Lebih lanjut