Strategi Penunjuk Sentimen Pasaran Momentum


Tarikh penciptaan: 2023-11-13 17:51:20 Akhirnya diubah suai: 2023-11-13 17:51:20
Salin: 0 Bilangan klik: 619
1
fokus pada
1617
Pengikut

Strategi Penunjuk Sentimen Pasaran Momentum

Gambaran keseluruhan

Strategi ini mendedahkan sentimen para peserta pasaran dengan membandingkan pergerakan harga dan jumlah transaksi, yang ditunjukkan dalam bentuk MACD dan menghantar isyarat perdagangan.

Prinsip Strategi

Strategi ini mendedahkan sentimen pasaran melalui beberapa pengiraan:

  1. Perkembangan harga bagi setiap baris K dibahagikan kepada jumlah transaksi. Ini menunjukkan secara langsung kekuatan jual beli.

  2. Menggunakan purata bergerak indeks yang halus untuk perubahan harga dan jumlah dagangan, kemudian membahagikan EMA perubahan harga dengan EMA jumlah dagangan. Ini boleh menapis sebahagian daripada kebisingan dan mendapatkan kurva sentimen pasaran yang lebih halus.

  3. EMA dikira dengan cepat di atas sentimen pasaran ketumbar, dan menghasilkan kurva yang serupa dengan MACD. Di mana garis MACD menunjukkan arah dan kekuatan momentum, garis isyarat adalah purata bergeraknya, dan grafik tiang menunjukkan perbezaan antara dua kurva, yang mewakili perubahan momentum.

Apabila di atas carta tiang 0 adalah isyarat peningkatan sentimen pasaran berbilang kepala, di bawah 0 adalah isyarat peningkatan sentimen pasaran kosong. Anda juga boleh melihat fenomena penyingkiran carta tiang.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Ia juga boleh digunakan untuk menilai sentimen peserta pasaran dengan menggunakan maklumat mengenai jumlah dagangan.

  2. Format MACD intuitif dan mudah digunakan.

  3. Parameter boleh disesuaikan untuk pelbagai jenis dan tempoh.

  4. Ia juga boleh mengesan garis pilar yang terbelah dan mencari titik perubahan trend yang berpotensi.

  5. Kodnya jelas, mudah difahami dan dioptimumkan.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Jumlah transaksi boleh mencerminkan sentimen pasaran, tetapi tidak menjamin isyarat perdagangan yang betul.

  2. Tetapan parameter MACD yang tidak betul boleh menyebabkan isyarat yang salah atau menghasilkan isyarat palsu. Parameter perlu dioptimumkan untuk jenis dan kitaran.

  3. Jika anda melihat tanda-tanda yang berbeza, anda mungkin tidak dapat memastikan bahawa ia adalah tanda-tanda yang salah dan perlu berhati-hati.

  4. Terdapat risiko kemasukan lewat yang disematkan. Ia adalah sesuai untuk menunggu untuk menjejaki kerugian, atau dengan trend dan varieti yang berkaitan dengan pengesahan yang wajar.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Testing kombinasi parameter untuk pelbagai jenis dan kitaran, mencari parameter yang optimum.

  2. Menyertai strategi hentikan kerugian untuk mengurangkan risiko kerugian.

  3. Perkongsian dengan trend harga varieti yang berkaitan untuk mengesahkan isyarat dagangan.

  4. Parameter pengoptimuman dinamik menggunakan kaedah pembelajaran mesin.

  5. Menambah syarat penapisan, mengurangkan isyarat palsu. Contohnya, trend skala besar, kadar turun naik dan sebagainya.

ringkaskan

Strategi ini menggunakan perubahan harga dengan nisbah nilai jumlah urus niaga untuk menilai sentimen pasaran, menghasilkan isyarat perdagangan dalam bentuk MACD. Berbanding dengan hanya melihat maklumat harga, jumlah urus niaga dapat menentukan lebih tepat perbandingan kekuatan dan kehangatan pasaran.

Kod sumber strategi
/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dannylimardi

//@version=4
strategy("Sentiment Oscillator", "Sentiment", overlay=false, initial_capital=100, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.08)


//Inputs
msLen = input(49, type=input.integer, title="Market Sentiment Lookback Length")
emaLen1 = input(40, type=input.integer, title="Fast EMA Length")
emaLen2 = input(204, type=input.integer, title="Slow EMA Length")
signalLen = input(20, type=input.integer, title="Signal Length")
showMs = input(false, type=input.bool, title="Show Market Sentiment?")
showHist = input(true, type=input.bool, title="Show Momentum?")
showMacd = input(false, type=input.bool, title="Show MACD Line?")
showSignal = input(false, type=input.bool, title="Show Signal Line?")
showCpv = input(false, type=input.bool, title="(Show Change/Volume for Each Bar?)")
showEma1 = input(false, type=input.bool, title="(Show Fast EMA?)")
showEma2 = input(false, type=input.bool, title="(Show Slow EMA?)")

//Calculations
priceChange = close - close[1]
changePerVolume = (priceChange/volume) * 10000000  // (The 1000000 doesn't have any significance, it's just to avoid color-change errors when the values are too emall.)
priceChangeEma = ema(priceChange, msLen)
volumeEma = ema(volume, msLen)
marketSentiment = priceChangeEma/volumeEma * 100000000
msEma1 = ema(marketSentiment, emaLen1)
msEma2 = ema(marketSentiment, emaLen2)
macd = msEma1-msEma2
signal = ema(macd, signalLen)
hist = macd-signal

//Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

//Drawings
plot(showHist ? hist : na, title="Histogram", style=plot.style_area, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)), transp=0 )
plot(showMacd ? macd : na, title="MACD", color=col_macd, transp=0)
plot(showSignal ? signal : na, title="Signal", color=col_signal, transp=0)
plot(showCpv ? changePerVolume : na, color=changePerVolume > changePerVolume[1] ? color.teal : color.red)
plot(0, color=color.white, transp=80)
plot(showEma1 ? msEma1 : na, color=color.aqua)
plot(showEma2 ? msEma2 : na, color=color.yellow)
plot(showMs ? marketSentiment : na, color=color.lime)

//Strategy
strategy.entry("Buy", strategy.long, when=crossover(hist, 0))
strategy.close("Buy", when=crossunder(hist, 0))