Strategi Dagangan Gabungan Penunjuk Stoch Purata Pergerakan Berganda


Tarikh penciptaan: 2023-09-12 14:44:56 Akhirnya diubah suai: 2023-09-12 14:44:56
Salin: 0 Bilangan klik: 710
1
fokus pada
1617
Pengikut

Strategi ini merancang sistem perdagangan kuantitatif yang mempunyai fungsi penilaian trend dan penilaian overbought dan oversold dengan menggunakan kombinasi indikator rata-rata dan indikator Stoch. Strategi ini menggabungkan kelebihan beberapa indikator untuk membuat penilaian trend dan menangkap peluang secara sistematik.

Prinsip-prinsip strategi:

  1. Mengira purata jangka panjang ((MA) dan purata jangka pendek ((EMA), sebagai penunjuk teknikal untuk menentukan arah trend.

  2. Hitung nilai Stoch K dan D untuk menentukan sama ada anda berada dalam keadaan overbuy atau oversold.

  3. Apabila CLOSE menembusi MA dari bawah ke atas, dan nilai Stoch K dan nilai D adalah lebih tinggi daripada garis superbeli, dinilai sebagai masa masuk garis panjang, lakukan lebih banyak.

  4. Apabila CLOSE menembusi EMA dari atas ke bawah, dan nilai Stoch K dan nilai D berada di bawah garis jual, dinilai sebagai titik masuk ke dalam garis pendek, kosong.

  5. Arah urus niaga berdasarkan label COLOR.

Kelebihan strategi ini:

  1. Kombinasi dua garis sejajar menentukan arah trend utama, untuk mengelakkan isyarat yang salah.

  2. Indeks Stoch mengenal pasti kawasan yang lebih banyak dibeli dan lebih banyak dijual untuk meningkatkan peluang keuntungan.

  3. Kombinasi menggunakan beberapa petunjuk yang boleh saling disahkan, meningkatkan kebolehpercayaan isyarat.

Risiko strategi ini:

  1. Parameter tidak dioptimumkan dengan betul, dan ia akan menyebabkan keserasian atau ketidakserasian isyarat.

  2. Garis purata dan Stoch boleh mengalami kelewatan, menyebabkan kemasukan terlalu awal atau terlalu lewat.

  3. Kombinasi pelbagai indikator meningkatkan kebolehpercayaan, tetapi juga meningkatkan kerumitan strategi.

Ringkasnya, strategi ini menggunakan trend penilaian rata-rata, Stoch menilai overbought dan oversold, untuk melakukan perdagangan kuantitatif. Dalam keadaan penyesuaian parameter yang dioptimumkan, kestabilan dan kebolehpercayaan sistem perdagangan dapat ditingkatkan. Tetapi strategi kuantitatif apa pun memerlukan pengurusan risiko yang ketat, dan pelabur masih perlu membuat keputusan yang berhati-hati.

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

//@version=4

// strategy("PMB2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, initial_capital=1000, currency=currency.USD)
//study(title="PMB2", overlay=true)

l_ma = input(50, title="MA (green)", type=input.integer)
l_ema = input(25, title="EMA (red)", type=input.integer)

MA = sma(close,l_ma)
EMA = ema(close,l_ema)

plot(MA, color=color.green)
plot(EMA, color=color.red)

//STOCH(14,3,3)
length = input(20, minval=1, title="STOCH - K")
smoothK = input(2, minval=1, title="STOCH - D")
smoothD = input(2 , minval=1, title="STOCH - Smooth")

StkLong= input(50 , minval=1, maxval=100, title="Long when Close > MA and Stoch > ")
StkShort= input(80 , minval=1, maxval=100, title="Short when Close < EMA and Stoch < ")

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
//plot(k, color=color.blue, title="STOCH - K")
//plot(d, color=color.orange, title="STOCH - D")
//band180 = hline(80, title="STOCH - Banda superior")
//band120 = hline(20, title="STOCH - Banda superior")
//band100 = hline(50,  color=color.gray, editable=false, linestyle=hline.style_solid)
//fill(band180, band120, color=color.gray, transp=75, title="STOCH - Fundo")

BTStartY = input(title="Strategy Test Start Year", type=input.integer, defval=2019, minval=2010, maxval=2100)
BTStartM = input(title="Strategy Test Start Month", type=input.integer, defval=1, minval=1, maxval=12)
BTStartD = input(title="Strategy Test Start Day", type=input.integer, defval=1, minval=1, maxval=31)
BTStopY = input(title="Strategy Test Stop Year", type=input.integer, defval=2019, minval=2010, maxval=2100)
BTStopM = input(title="Strategy Test Stop Month", type=input.integer, defval=12, minval=1, maxval=12)
BTStopD = input(title="Strategy Test Stop Day", type=input.integer, defval=31, minval=1, maxval=31)

// set up min and max date for strategy test
TMin = timestamp(BTStartY, BTStartM, BTStartD, 00, 00)
TMax = timestamp(BTStopY, BTStopM, BTStopD, 00, 00)
InTime = true

bool long = false, short = false, trade = false

trade := trade[1]
long := long[1]
short := short[1]

if (crossover(close, MA) and k > StkLong and d > StkLong) // "LONG!"
//if (close > MA and k > StkLong and d > StkLong) // "LONG!"
    short := false
    long := true
    trade := true // LONG

if (crossunder(close, EMA)  and k < StkShort and d < StkShort) // "SHORT!""
//if (close < EMA and k < StkShort and d < StkShort) // "SHORT!""
    long := false
    short := true
    trade := false // SHORT


//bgcolor(FL > SH ? color.green : FH < SL ? color.red : na, transp=80)
bgcolor(trade ? color.green : color.red, transp=90)

//alertcondition((crossover(close, MA) and k > 50 and d > 50) , title='Buy', message='Buy')
//alertcondition((crossunder(close, EMA) and k > 80 and d > 80) , title='Sell', message='Sell')


if ((crossover(close, MA) and k > StkLong and d > StkLong) and InTime)
//if ((close > MA and k > StkLong and d > StkLong) and InTime)
    strategy.entry("Long", strategy.long)

if ((crossunder(close, EMA) and k < StkShort and d < StkShort)  and InTime)
//if ((close < EMA and k < StkShort and d < StkShort)  and InTime)
    strategy.entry("Short", strategy.short)