Strategi persilangan purata bergerak dinamik


Tarikh penciptaan: 2024-02-05 10:23:10 Akhirnya diubah suai: 2024-02-05 10:23:10
Salin: 0 Bilangan klik: 536
1
fokus pada
1617
Pengikut

Strategi persilangan purata bergerak dinamik

Gambaran keseluruhan

Strategi silang silang purata bergerak dinamik adalah strategi perdagangan komposit yang mengintegrasikan beberapa petunjuk teknikal dan pengesanan peringkat pasaran. Ia secara dinamik mengira turun naik pasaran, menilai turun naik pasaran berdasarkan jarak dan turun naik harga dari purata bergerak jangka panjang dalam tiga peringkat: goyah, trend, dan menyusun.

Prinsip Strategi

Mengira turun naik pasaran

Menggunakan ATR (Average True Rate of Volatility) untuk mengira turun naik dalam pasaran dalam masa 14 hari terakhir. Kemudian, dengan 100 hari Simple Moving Average, turun naik rata-rata diperoleh.

Memutuskan peringkat pasaran

Hitung jarak harga berbanding purata bergerak sederhana 200 hari. Jika jarak melebihi 1.5 kali turun naik purata, dan arahnya jelas, maka ia dianggap sebagai trend. Jika turun naik semasa melebihi 1.5 kali turun naik purata, maka ia dianggap sebagai turun naik.

EMA/SMA silang

EMA pantas mempunyai kitaran 10 hari dan SMA perlahan mempunyai kitaran 30 hari. Apabila EMA pantas melintasi SMA perlahan, ia menghasilkan isyarat beli.

MACD

Hitung parameter 12, 26, 9 MACD. Isyarat beli dihasilkan apabila lajur MACD menjadi positif.

Bollinger Bands

Hitung perbezaan standard dalam 20 hari Channel 。 Jika lebar saluran kurang daripada 20 hari SMA sendiri, maka ia dianggap sebagai tempoh penyusunan 。

Peraturan kemasukan

Tempoh goyah: Garis melintas dengan cepat atau tiang MACD berubah, dan harga penutupan berada di dalam Bollinger Bands, masuk lebih banyak.

Tempoh trend: Garis silang atau MACD bertukar menjadi lebih banyak.

Tempoh penyusunan: Garis melintas dengan pantas, dan harga penutupan lebih tinggi daripada Band Rendah.

Peraturan permainan

Keadaan berikut adalah syarat untuk keluar dari kedudukan kosong: MACD dua baris K berturut-turut negatif, dan harga penutupan turun dua hari berturut-turut.

Tempoh goyah: Jika RSI saham memasuki zon overbought, ia akan muncul.

Tempoh penyusunan: Bermain apabila harga lebih rendah daripada Upper Band.

Analisis kelebihan

Ini adalah strategi perdagangan pintar yang digabungkan dengan penilaian keadaan pasaran dan mempunyai kelebihan berikut:

  1. Pengendalian sistematik, pengurangan campur tangan subjektif.

  2. Berpasangan dengan parameter strategi penyesuaian kepada keadaan pasaran, lebih bersesuaian.

  3. Kombinasi pelbagai indikator untuk meningkatkan kepastian isyarat.

  4. Bollinger Bands menghentikan kerugian secara automatik untuk mengurangkan risiko.

  5. Penghakiman keadaan menyeluruh, penapisan isyarat palsu.

  6. Dinamika Stop Loss Stop Stop, Mengesan Trend dan Menjana Keuntungan

Analisis risiko

Risiko utama ialah:

  1. Tetapan parameter yang tidak betul boleh menyebabkan kegagalan strategi. Disyorkan untuk mengoptimumkan kombinasi parameter.

  2. Kejadian yang tidak dijangka menyebabkan model tidak berfungsi.

  3. Kompresi kos dagangan untuk mendapatkan keuntungan. Disarankan untuk memilih broker dengan bayaran rendah.

  4. Kombinasi pelbagai indikator meningkatkan kerumitan strategi. Ia disyorkan untuk memilih indikator teras.

Arah pengoptimuman

Ia boleh terus dioptimumkan dari beberapa dimensi:

  1. Mengoptimumkan kriteria penilaian persekitaran pasaran, meningkatkan ketepatan.

  2. Menambah modul pembelajaran mesin untuk menyesuaikan parameter.

  3. Pengurusan teks untuk menilai risiko insiden besar

  4. Kajian semula pelbagai pasaran untuk mencari kombinasi yang terbaik.

  5. Menambah strategi trailing stop untuk menghentikan penghentian.

ringkaskan

Strategi gabungan silang rata-rata bergerak dinamik adalah strategi perdagangan pintar berbilang indikator. Ia dapat menggabungkan parameter penyesuaian keadaan pasaran, untuk mencapai perdagangan sistematik berdasarkan penilaian syarat. Ia mempunyai kebolehan adaptasi dan kepastian yang kuat. Tetapi penyetempatan parameter dan modul tambahan perlu berhati-hati untuk mengelakkan menambah kerumitan strategi. Secara keseluruhan, ini adalah strategi kuantitatif yang sangat berkesan.

Kod sumber strategi
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)

// Volatility
volatility = ta.atr(14)
avg_volatility_sma = ta.sma(volatility, 100)
avg_volatility = na(avg_volatility_sma) ? 0 : avg_volatility_sma

// Market Phase detection
long_term_ma = ta.sma(close, 200)
distance_from_long_term_ma = close - long_term_ma
var bool isTrending = math.abs(distance_from_long_term_ma) > 1.5 * avg_volatility and not na(distance_from_long_term_ma)
var bool isVolatile = volatility > 1.5 * avg_volatility

// EMA/MA Crossover
fast_length = 10
slow_length = 30
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)

// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal or (macdHistogram > 0)

// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
isConsolidating = (upper - lower) < ta.sma(upper - lower, 20)

// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 75
oversold = 25

var float potential_SL = na
var float potential_TP = na
var bool buy_condition = na
var bool sell_condition = na

// Buy and Sell Control Variables
var bool hasBought = false
var bool hasSold = true

// Previous values tracking
prev_macdHistogram = macdHistogram[1]
prev_close = close[1]

// Modify sell_condition with the new criteria
if isVolatile
    buy_condition := not hasBought and crossover_signal or macd_signal and (close > lower) and (close < upper)
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

if isTrending
    buy_condition := not hasBought and crossover_signal or macd_signal
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - volatility
    potential_TP := close + 2 * volatility

if isConsolidating
    buy_condition := not hasBought and crossover_signal and (close > lower)
    sell_condition := hasBought and (close < upper) and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

// Update the hasBought and hasSold flags
if buy_condition
    hasBought := true
    hasSold := false

if sell_condition
    hasBought := false
    hasSold := true

// Strategy Entry and Exit
if buy_condition
    strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
    strategy.exit("SELL_TS", from_entry="BUY", trail_price=close, trail_offset=close * 0.05)

if sell_condition
    strategy.close("BUY")
    
// Visualization
plotshape(series=buy_condition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)

plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)

bgcolor(isVolatile ? color.new(color.purple, 90) : isTrending ? color.new(color.blue, 90) : isConsolidating ? color.new(color.orange, 90) : na)