Strategi pengoptimuman dagangan dinamik gabungan berbilang penunjuk

CCI RSI MFI WMA IFT
Tarikh penciptaan: 2024-12-20 16:31:21 Akhirnya diubah suai: 2024-12-20 16:31:21
Salin: 1 Bilangan klik: 397
1
fokus pada
1617
Pengikut

Strategi pengoptimuman dagangan dinamik gabungan berbilang penunjuk

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan berdasarkan gabungan pelbagai petunjuk teknikal, yang membina kerangka analisis pasaran yang komprehensif dengan menggabungkan empat petunjuk utama seperti CCI, RSI, indikator rawak (Stochastic) dan MFI, dan digabungkan dengan pemprosesan indeks yang lancar. Strategi ini menggunakan IFT (Inverse Fisher Transform) untuk menstandardkan output indikator, dan akhirnya menghasilkan keputusan perdagangan melalui sintesis isyarat.

Prinsip Strategi

Inti strategi ini adalah untuk menyediakan isyarat dagangan yang lebih dipercayai melalui penggabungan pelbagai penunjuk. Pertama, pengolahan standard dan pelepasan WMA untuk setiap penunjuk, dan kemudian memetakan nilai penunjuk ke[-1,1] Bahagian. Termasuk:

  1. Empat indikator CCI, RSI, Stochastic dan MFI dikira dan disatukan secara berasingan
  2. WMA digunakan untuk menghaluskan nilai indikator
  3. Menukar nilai penunjuk ke julat seragam melalui penukaran IFT
  4. Mengira purata empat penunjuk selepas penukaran sebagai isyarat akhir
  5. Apabila garis isyarat menembusi -0.5 menghasilkan isyarat berbilang, apabila menembusi 0.5 menghasilkan isyarat kosong
  6. Tetapkan 0.5% Stop Loss dan 1% Stop Stop untuk mengawal risiko

Kelebihan Strategik

  1. Gabungan pelbagai penunjuk memberi pandangan pasaran yang lebih menyeluruh dan mengurangkan batasan satu penunjuk
  2. Penukaran IFT memastikan keserasian output penunjuk untuk memudahkan sintesis isyarat
  3. Pengurusan WMA yang lancar berkesan mengurangkan isyarat palsu
  4. Menetapkan sekatan kerugian yang munasabah untuk mengawal risiko dan memastikan ruang untuk keuntungan
  5. Mekanisme penjanaan isyarat jelas, mudah untuk memulakan dan mengoptimumkan

Risiko Strategik

  1. Indikator-indikator boleh terbelakang dalam pasaran yang bergolak
  2. Parameter stop loss tetap mungkin tidak sesuai untuk semua keadaan pasaran
  3. WMA meluruskan mungkin menyebabkan kelewatan isyarat
  4. Parameter penunjuk perlu dioptimumkan untuk pasaran yang berbeza Cadangan: penyesuaian dinamik parameter stop-loss, pengenalan penunjuk kadar turun naik, pengoptimuman parameter kelancaran

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penangguhan kerugian yang beradaptasi, menyesuaikan diri dengan pergerakan pasaran yang tidak menentu
  2. Menambah mekanisme penapisan persekitaran pasaran, menggunakan parameter yang berbeza untuk kekuatan trend yang berbeza
  3. Untuk mengoptimumkan sintesis isyarat, pertimbangkan untuk menggunakan purata sederhana sebagai alternatif purata berat.
  4. Memperkenalkan mekanisme penyesuaian kadar turun naik dan penambahan jumlah
  5. Sistem pengoptimuman automatik untuk parameter penunjuk

ringkaskan

Strategi ini membina sistem perdagangan yang agak lengkap melalui penggabungan pelbagai petunjuk dan pengoptimuman isyarat. Kelebihan strategi adalah kebolehpercayaan isyarat dan integriti kawalan risiko, tetapi masih memerlukan pengoptimuman parameter berdasarkan ciri-ciri pasaran dalam aplikasi sebenar. Dengan arah pengoptimuman yang dicadangkan, strategi ini dijangka dapat mencapai prestasi yang lebih baik dalam keadaan pasaran yang berbeza.

Kod sumber strategi
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('wombocombo', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// IFTCOMBO Hesaplamaları
ccilength = input.int(5, 'CCI Length')
wmalength = input.int(9, 'Smoothing Length')
rsilength = input.int(5, 'RSI Length')
stochlength = input.int(5, 'STOCH Length')
mfilength = input.int(5, 'MFI Length')

// CCI
v11 = 0.1 * (ta.cci(close, ccilength) / 4)
v21 = ta.wma(v11, wmalength)
INV1 = (math.exp(2 * v21) - 1) / (math.exp(2 * v21) + 1)

// RSI
v12 = 0.1 * (ta.rsi(close, rsilength) - 50)
v22 = ta.wma(v12, wmalength)
INV2 = (math.exp(2 * v22) - 1) / (math.exp(2 * v22) + 1)

// Stochastic
v1 = 0.1 * (ta.stoch(close, high, low, stochlength) - 50)
v2 = ta.wma(v1, wmalength)
INVLine = (math.exp(2 * v2) - 1) / (math.exp(2 * v2) + 1)

// MFI
source = hlc3
up = math.sum(volume * (ta.change(source) <= 0 ? 0 : source), mfilength)
lo = math.sum(volume * (ta.change(source) >= 0 ? 0 : source), mfilength)
mfi = 100.0 - 100.0 / (1.0 + up / lo)
v13 = 0.1 * (mfi - 50)
v23 = ta.wma(v13, wmalength)
INV3 = (math.exp(2 * v23) - 1) / (math.exp(2 * v23) + 1)

// Ortalama IFTCOMBO değeri
AVINV = (INV1 + INV2 + INVLine + INV3) / 4

// Sinyal çizgileri
hline(0.5, color=color.red, linestyle=hline.style_dashed)
hline(-0.5, color=color.green, linestyle=hline.style_dashed)

// IFTCOMBO çizgisi
plot(AVINV, color=color.red, linewidth=2, title='IFTCOMBO')

// Long Trading Sinyalleri
longCondition = ta.crossover(AVINV, -0.5) 
longCloseCondition = ta.crossunder(AVINV, 0.5) 

// Short Trading Sinyalleri
shortCondition = ta.crossunder(AVINV, 0.5) 
shortCloseCondition = ta.crossover(AVINV, -0.5) 

// Stop-loss seviyesi (%0.5 kayıp)
stopLoss = strategy.position_avg_price * (1 - 0.005) // Long için
takeProfit = strategy.position_avg_price * (1 + 0.01) // Long için


// Long Strateji Kuralları
if longCondition
    strategy.entry('Long', strategy.long)
    strategy.exit('Long Exit', 'Long', stop=stopLoss, limit=takeProfit) // Stop-loss eklendi


if longCloseCondition
    strategy.close('Long')

// Stop-loss seviyesi (%0.5 kayıp)
stopLossShort = strategy.position_avg_price * (1 + 0.005) // Short için
takeProfitShort = strategy.position_avg_price * (1 - 0.01) // Short için

// Short Strateji Kuralları
if shortCondition
    strategy.entry('Short', strategy.short)
    strategy.exit('Short Exit', 'Short', stop=stopLossShort, limit=takeProfitShort) // Stop-loss eklendi


if shortCloseCondition
    strategy.close('Short')

// Sinyal noktalarını plotlama
plotshape(longCondition, title='Long Signal', location=location.belowbar, color=color.purple, size=size.small)
plotshape(shortCondition, title='Short Signal', location=location.abovebar, color=color.yellow, size=size.small)