Strategi perdagangan kuantitatif pelbagai fungsi berdasarkan arah aliran dan pindah silang purata bergerak


Tarikh penciptaan: 2023-12-08 12:14:50 Akhirnya diubah suai: 2023-12-08 12:14:50
Salin: 0 Bilangan klik: 631
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif pelbagai fungsi berdasarkan arah aliran dan pindah silang purata bergerak

Gambaran keseluruhan

Strategi ini mengintegrasikan pelbagai petunjuk teknikal dan konsep perdagangan yang boleh digunakan untuk menghasilkan isyarat membeli dan menjual secara automatik. Ciri utamanya adalah untuk mengoptimumkan hentian kerugian dalam kombinasi dengan indikator analisis trend, sambil menggunakan persilangan garis rata untuk menghasilkan isyarat perdagangan.

Prinsip Strategi

Penunjuk teknikal

  • Indikator UTSTC yang disesuaikan: Indikator berhenti yang disesuaikan berdasarkan purata gelombang sebenar yang dapat disesuaikan dengan jangkauan berhenti yang disesuaikan dengan turun naik pasaran.

  • Indeks STC: Perbezaan antara purata bergerak mudah cepat dan purata bergerak mudah perlahan, digunakan untuk menentukan arah trend pasaran dan potensi titik balik.

  • Purata bergerak mudah (SMA) dan purata bergerak indeks (EMA): Mengira purata bergerak untuk tempoh yang berbeza dan melukisnya, memberikan maklumat tambahan untuk menilai trend.

Isyarat dagangan

  • Isyarat beli: dihasilkan apabila harga penutupan menembusi UTSTC dan STC berada dalam keadaan bullish.

  • Isyarat menjual: dihasilkan apabila harga penutupan menembusi penunjuk UTSTC dan penunjuk STC berada dalam keadaan menurun.

Kelebihan Strategik

  • Mengintegrasikan pelbagai petunjuk untuk menilai trend pasaran dapat meningkatkan ketepatan isyarat.

  • Penunjuk UTSTC secara automatik menyesuaikan julat hentian kerugian berdasarkan gelombang sebenar, yang dapat mengawal setiap kerugian secara berkesan.

  • Mencipta isyarat perdagangan yang mudah dan berkesan dengan menggunakan persilangan rata-rata.

  • Kombinasi parameter yang berbeza boleh disesuaikan dengan lebih banyak keadaan pasaran.

Risiko Strategik

  • STC dan lain-lain, mungkin terlepas peluang untuk berpatah balik dalam jangka pendek.

  • Sinyal persilangan garis rata mungkin menghasilkan isyarat palsu.

  • Pengaturan parameter perlu dinilai dengan teliti, kombinasi yang tidak betul boleh mengurangkan keuntungan atau meningkatkan kerugian.

  • Terlalu besar boleh meningkatkan risiko kerugian, terlalu kecil boleh berhenti terlalu awal.

Arah pengoptimuman

  • Uji parameter penunjuk STC untuk tempoh panjang yang berbeza untuk mencari tetapan yang mempunyai kesan minimum terhadap strategi.

  • Cuba untuk memfilterkan isyarat palsu dengan menggunakan penunjuk lain seperti KDJ, MACD dan sebagainya.

  • Mengubah parameter stop loss mengikut hasil pengukuran untuk mencari kombinasi parameter yang optimum.

  • Menilai pelbagai tetapan tempoh pegangan untuk mencari tempoh pegangan yang optimum.

ringkaskan

Strategi ini mengintegrasikan penilaian trend, pengurusan stop-loss automatik dan penilaian isyarat perdagangan dalam beberapa modul, membentuk rancangan perdagangan kuantitatif yang lebih menyeluruh. Dengan penyesuaian parameter dan fungsi yang diperluaskan, keuntungan yang stabil diharapkan. Tetapi tidak ada strategi yang dapat sepenuhnya mengelakkan kerugian, yang memerlukan pengujian yang teliti dan kawalan risiko yang baik.

Kod sumber strategi
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("OB+LQ+UTSTC+SMA+EMA-NORA-MIP21-Jashore-Bangladesh-OneMinuteTF", shorttitle="OB+LS+UTSTC-MIP21-Jashore-Bangladesh-OneMinuteTF", overlay=true)

// Order Block + Liquidity Swings [NORA] Settings
pivot_length = input(14, title="Pivot Lookback")
bull_ext_last = input(3, title="Bullish OB Extension")
bear_ext_last = input(3, title="Bearish OB Extension")
swing_length = input(5, title="Swing Length")
area = input("Wick Extremity", title="Swing Area", options=["Wick Extremity", "Full Range"])
min_profit = input(0.5, title="Minimum Profit Target")
max_loss = input(0.5, title="Maximum Loss Stop")

// Variables
var float bull_ob_price = na
var float bear_ob_price = na
var float swing_high = na
var float swing_low = na

// Calculate Order Block Prices
var float low_lowest = na
var float high_highest = na
if bar_index >= pivot_length
    low_lowest := lowest(low, pivot_length)
    high_highest := highest(high, pivot_length)
    bull_ob_price := low_lowest
    bear_ob_price := high_highest

// Calculate Swing High/Low Prices
var float low_lowest_swing = na
var float high_highest_swing = na

if area == "Wick Extremity"
    low_lowest_swing := lowest(low, swing_length)
    high_highest_swing := highest(high, swing_length)
else
    low_lowest_swing := lowest(high - low, swing_length)
    high_highest_swing := highest(high - low, swing_length)

swing_low := low_lowest_swing
swing_high := high_highest_swing

// Trading Logic for Order Block + Liquidity Swings
buy_liquidity = crossover(close, bull_ob_price) and close > swing_low
sell_liquidity = crossunder(close, bear_ob_price) and close < swing_high

// Plot Buy/Sell Signals for Order Block + Liquidity Swings
plotshape(series=buy_liquidity, style=shape.labelup, location=location.belowbar, color=color.rgb(39, 166, 175), size=size.small, title="Bullish LQ")
plotshape(series=sell_liquidity, style=shape.labeldown, location=location.abovebar, color=color.rgb(248, 95, 215), size=size.small, title="Bearish LQ")

// UTSTC-SMA-EMA-NORA-New Settings
keyvalue = input(3, title="UT Bot Key Value", step=0.5)
atrperiod = input(10, title="UT Bot ATR Period")
src = close

xATR = atr(atrperiod)
nLoss = keyvalue * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
pos = 0   
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(xATRTrailingStop, color=xcolor, title="UT Bot Trailing Stop")

// STC Settings
stc_length = input(12, title="STC Length")
fastLength = input(26, title="STC Fast Length")
slowLength = input(50, title="STC Slow Length")
fastMA = ema(close, fastLength)
slowMA = ema(close, slowLength)
STC = fastMA - slowMA
STCColor = STC > STC[1] ? color.green : color.red
plot(STC, color=STCColor, title="STC")

// Add SMAs
sma21 = sma(close, 21)
sma44 = sma(close, 44)
plot(sma21, color=color.blue, title="SMA 21")
plot(sma44, color=color.orange, title="SMA 44")

// Add EMA
ema5 = ema(close, 5)
plot(ema5, color=color.yellow, title="EMA 5")

// Combined Strategy
buySignal = crossover(src, xATRTrailingStop) and STC < 25 and STCColor == color.green
sellSignal = crossunder(src, xATRTrailingStop) and STC > 75 and STCColor == color.red

// Plot Buy and Sell signals as triangles
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)