Strategi Masukan Purata Bergerak Fibonacci

Penulis:ChaoZhang, Tarikh: 2023-11-01 16:42:41
Tag:

img

Ringkasan

Fibonacci Moving Averages Input strategi adalah berdasarkan kepada pergerakan purata crossover atau crossunder isyarat untuk menjana isyarat perdagangan. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, isyarat melintasi emas bullish dihasilkan. Apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, isyarat melintasi kematian menurun dihasilkan. purata bergerak yang biasa digunakan adalah purata bergerak 50 hari dan 200 hari.

Strategi Fibonacci Moving Averages Input (FibMAI) membolehkan anda memilih mana-mana nilai untuk salib bullish atau bearish anda. Untuk paparan visual, saya telah memetakan purata bergerak Fibonacci termasuk 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 sambil menyembunyikan lilin. Tetapi untuk menggunakan penunjuk ini, saya hanya membolehkan beberapa MA untuk memeriksa sama ada terdapat corak crossover atau crossunder yang ketara, kemudian menguji nilai-nilai tersebut ke dalam input strategi FibMAI Long atau Short.

Sebagai contoh, input tetapan panjang atau pendek untuk carta hari NQ1 ini adalah:

Bullish = FibEMA34 crossover FibEMA144

Bearish = FibEMA55 crossunder FibSMA144

Seperti yang anda lihat, anda boleh mencampurkan dan memadankan 4 nilai MA yang berbeza, sama ada Eksponensial atau Mudah.

Tetapan warna lalai: Nilai meningkat = warna hijau Nilai jatuh = warna merah

Tetapan Visual FibMA lalai: FibEMA 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181

Tetapan Visual MA lalai: SMA 50, 100, 150, 200

Tetapan lalai: Bullish = FibEMA34 crossover FibEMA144

Bearish = FibEMA55 crossunder FibSMA144

Prinsip

Logik teras strategi ini adalah berdasarkan isyarat silang antara dua purata bergerak untuk menjana isyarat perdagangan.

Purata bergerak adalah penunjuk teknikal yang digunakan untuk menganalisis trend pasaran. Mereka mengira harga penutupan purata dalam tempoh tertentu dan dapat menapis turun naik pasaran dengan berkesan. Terdapat dua jenis purata bergerak - Purata bergerak mudah (SMA) dan Purata bergerak eksponen (EMA).

SMA adalah purata aritmetik sederhana harga penutupan dalam tempoh tertentu. EMA menggunakan penyelarasan eksponensial pada harga penutupan, memberikan lebih banyak berat kepada harga baru-baru ini. EMA bertindak balas lebih cepat terhadap perubahan harga.

Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia menandakan perubahan trend menaik dan menghasilkan isyarat beli. Ini dipanggil salib emas. Sebaliknya, apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia menandakan perubahan trend menurun dan menghasilkan isyarat jual. Ini dipanggil salib kematian.

Fleksibiliti strategi ini terletak pada keupayaan untuk menetapkan parameter untuk 4 purata bergerak secara manual. Parameter lalai adalah EMA 34-periode melintasi di atas EMA 144 tempoh untuk isyarat kenaikan, dan SMA 55-periode melintasi di bawah EMA 144 tempoh untuk isyarat penurunan. Parameter ini boleh disesuaikan secara bebas dalam kotak input.

Di samping itu, strategi ini memetakan pelbagai purata bergerak urutan Fibonacci merentasi jangka masa yang berbeza. purata bergerak biasa seperti 50 hari, 100 hari, 150 hari dan 200 hari juga dipetakan. Ini berfungsi sebagai rujukan, sementara kuncinya adalah purata bergerak silang yang dimasukkan dalam tetapan Panjang / Pendek.

Kelebihan

Kelebihan strategi crossover purata bergerak ini termasuk:

  1. Menggunakan purata bergerak menapis bunyi pasaran dan mengenal pasti arah trend

  2. Isyarat silang mempunyai tahap kebolehpercayaan tertentu

  3. Kombinasi purata bergerak panjang dan pendek yang boleh disesuaikan untuk pengoptimuman parameter

  4. Menggabungkan pelbagai jangka masa untuk mengenal pasti trend

  5. Boleh menggunakan kedua-dua EMA dan SMA berdasarkan ciri instrumen

  6. Secara visual intuitif dengan salib purata bergerak berwarna

  7. Mudah difahami dan sesuai untuk pemula

  8. Fleksibel digunakan di instrument yang berbeza dengan universaliti

Risiko

Terdapat juga beberapa risiko untuk strategi ini:

  1. Terlalu banyak isyarat whipsaw semasa pasaran yang bergolak, yang membawa kepada perdagangan berlebihan

  2. Isyarat yang salah jika kombinasi purata bergerak yang tidak sesuai digunakan

  3. Lag dalam isyarat semasa pembalikan trend yang melampau, tidak dapat mencerminkan perubahan harga dalam masa

  4. Pembebasan purata bergerak tidak sepenuhnya mengelakkan kerugian, memerlukan kerugian berhenti yang munasabah

  5. Parameter perlu kukuh merentasi kitaran pasaran.

  6. Parameter mungkin perlu disesuaikan dengan baik untuk instrumen yang berbeza

Arahan pengoptimuman

Beberapa cara untuk mengoptimumkan strategi ini:

  1. Uji gabungan purata bergerak panjang dan pendek yang berbeza untuk mencari parameter optimum menggunakan backtesting

  2. Cuba menyesuaikan jenis purata bergerak, bandingkan prestasi SMA dan EMA. Gunakan SMA untuk instrumen dengan trend yang lebih jelas, dan EMA untuk instrumen yang lebih tidak menentu.

  3. Menggabungkan penunjuk lain seperti KDJ, MACD untuk menapis isyarat palsu dan meningkatkan kualiti

  4. Tambah strategi stop loss untuk mengawal kerugian pada dagangan tunggal, seperti penangguhan stop loss

  5. Mengoptimumkan strategi pengurusan wang, seperti menyesuaikan saiz kedudukan berdasarkan pengeluaran

  6. Kestabilan parameter ujian di instrument dan jangka masa yang berbeza untuk menilai ketahanan

Kesimpulan

Secara keseluruhannya, strategi Masukan Purata Bergerak Fibonacci adalah sistem trend yang boleh dipercayai. Ia menggunakan salib purata bergerak yang mudah dan intuitif untuk isyarat perdagangan, dan boleh disesuaikan dengan instrumen yang berbeza melalui pengoptimuman parameter. Dengan pengendalian stop loss dan wang yang betul, risiko dapat dikawal. Pengoptimuman berlebihan dan isyarat pembalikan trend yang tertinggal harus dielakkan. Dengan parameter yang dipilih dengan baik dan disiplin perdagangan, ini boleh menjadi strategi menghasilkan keuntungan yang cekap dan stabil.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Options360 : Fibonacci MAI (Moving Averages Input) beta 10/15/22
// © Options360 original public release = 2/25/23
// * This script uses altered pieces of code from my @Options360 "Fibonacci MA7" indicator*
// 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811
////
strategy(title="Fibonacci Moving Averages Input", shorttitle = "FibMAI", overlay=true)

src = input(ohlc4, 'source')
//
string  GRP = "Long or Short Settings"
exponential1 = input(true, title="long EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP)
long = input.int(34, minval=1, title="long", tooltip="Signal Moving average long input")
long1 = exponential1 ? ta.ema(src, long) : ta.sma(src, long)

exponential2 = input(true, title="crossover EMA or SMA", tooltip="EMA checked or SMA unchecked")
longer = input.int(144, minval=1, title="crossover", tooltip="Crossed over Moving average long input")
long2 = exponential2 ? ta.ema(src, longer) : ta.sma(src, longer)

exponential3 = input(true, title="short EMA or SMA", tooltip="EMA checked or SMA unchecked")
short = input.int(55, minval=1, title="short", tooltip="Signal Moving average short input")
short1 = exponential3 ? ta.ema(src, short) : ta.sma(src, short)

exponential4 = input(false, title="crossunder EMA or SMA", tooltip="EMA checked or SMA unchecked")
shorter = input.int(144, minval=1, title="crossunder", tooltip="Crossed under Moving average short input")
short2 = exponential4 ? ta.ema(src, shorter) : ta.sma(src, shorter)
//
string  GRP2 = "Visual FibMA Settings"
exponential = input(true, title="Fib EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP2)
//
smaplot11 = input (true, title="MA1")
len11 = input.int(1, minval=1, title="ma Length")
out11 = exponential ? ta.ema(src, len11) : ta.sma(src, len11)
up11 = out11 > out11[1]
down11 = out11 < out11[1]
mycolor11 = up11 ? #3cfe12 : down11 ? #ff0202 : #008eff
plot(out11 and smaplot11 ? out11 :na, title="1", color=mycolor11, linewidth=1)

smaplot18 = input (true, title="MA2")
len18 = input.int(2, minval=1, title="ma Length")
out18 = exponential ? ta.ema(src, len18) : ta.sma(src, len18)
up18 = out18 > out18[1]
down18 = out18 < out18[1]
mycolor18 = up18 ? #3cfe12 : down18 ? #ff0202 : #008eff
plot(out18 and smaplot18 ? out18 :na , title="2", color=mycolor18, linewidth=1)

smaplot13 = input (true, title="MA3")
len13 = input.int(3, minval=1, title="ma Length")
out13 = exponential ? ta.ema(src, len13) : ta.sma(src, len13)
up13 = out13 > out13[1]
down13 = out13 < out13[1]
mycolor13 = up13 ? #3cfe12 : down13 ? #ff0202 : #008eff
plot(out13 and smaplot13 ? out13 :na , title="3", color=mycolor11, linewidth=1)

smaplot9 = input (true, title="MA5")
len9 = input.int(5, minval=1, title="ma Length")
out9 = exponential ? ta.ema(src, len9) : ta.sma(src, len9)
up9 = out9 > out9[1]
down9 = out9 < out9[1]
mycolor9 = up9 ? #3cfe12 : down9 ? #ff0202 : #008eff
plot(out9 and smaplot9 ? out9 :na , title="5", color=mycolor9, linewidth=1)

smaplot8 = input (true, title="MA8")
len8 = input.int(8, minval=1, title="ma Length")
out8 = exponential ? ta.ema(src, len8) : ta.sma(src, len8)
up8 = out8 > out8[1]
down8 = out8 < out8[1]
mycolor8 = up8 ? #3cfe12 : down8 ? #ff0202 : #008eff
plot(out8 and smaplot8 ? out8 :na , title="8", color=mycolor8, linewidth=1)

smaplot7 = input (true, title="MA13")
len7 = input.int(13, minval=1, title="ma Length")
out7 = exponential ? ta.ema(src, len7) : ta.sma(src, len7)
up7 = out7 > out7[1]
down7 = out7 < out7[1]
mycolor7 = up7 ? #3cfe12 : down7 ? #ff0202 : #008eff
plot(out7 and smaplot7 ? out7 :na , title="13", color=mycolor7, linewidth=1)

smaplot = input (true, title="MA21")
len = input.int(21, minval=1, title="ma Length")
out = exponential ? ta.ema(src, len) : ta.sma(src, len)
up = out > out[1]
down = out < out[1]
mycolor = up ? #3cfe12 : down ? #ff0202 : #008eff
plot(out and smaplot ? out :na, title="21", color=mycolor, linewidth=1)

smaplot2 = input (true, title="MA34")
len2 = input.int(34, minval=1, title="ma Length")
out2 = exponential ? ta.ema(src, len2) : ta.sma(src, len2)
up2 = out2 > out2[1]
down2 = out2 < out2[1]
mycolor2 = up2 ? #3cfe12 : down2 ? #ff0202 : #008eff
plot(out2 and smaplot2 ? out2 :na , title="34", color=mycolor2, linewidth=1)

smaplot3 = input (true, title="MA55")
len3 = input.int(55, minval=1, title="ma Length")
out3 = exponential ? ta.ema(src, len3) : ta.sma(src, len3)
up3 = out3 > out3[1]
down3 = out3 < out3[1]
mycolor3 = up3 ? #3cfe12 : down3 ? #ff0202 : #008eff
plot(out3 and smaplot3 ? out3 :na, title="55", color=mycolor3, linewidth=1)

smaplot4 = input (true, title="MA89")
len4 = input.int(89, minval=1, title="ma Length")
out4 = exponential ? ta.ema(src, len4) : ta.sma(src, len4)
up4 = out4 > out4[1]
down4 = out4 < out4[1]
mycolor4 = up4 ? #3cfe12 : down4 ? #ff0202 : #008eff
plot(out4 and smaplot4 ? out4 :na , title="89", color=mycolor4, linewidth=1)

smaplot5 = input (true, title="MA144")
len5 = input.int(144, minval=1, title="ma Length")
out5 = exponential ? ta.ema(src, len5) : ta.sma(src, len5)
up5 = out5 > out5[1]
down5 = out5 < out5[1]
mycolor5 = up5 ? #3cfe12 : down5 ? #ff0202 : #008eff
plot(out5 and smaplot5 ? out5 :na, title="144", color=mycolor5, linewidth=1)

smaplot6 = input (true, title="MA233")
len6 = input.int(233, minval=1, title="ma Length")
out6 = exponential ? ta.ema(src, len6) : ta.sma(src, len6)
up6 = out6 > out6[1]
down6 = out6 < out6[1]
mycolor6 = up6 ? #3cfe12 : down6 ? #ff0202 : #008eff
plot(out6 and smaplot6 ? out6 :na , title="233", color=mycolor6, linewidth=1)

smaplot10 = input (true, title="MA377")
len10 = input.int(377, minval=1, title="ma Length")
out10 = exponential ? ta.ema(src, len10) : ta.sma(src, len10)
up10 = out10 > out10[1]
down10 = out10 < out10[1]
mycolor10 = up10 ? #3cfe12 : down10 ? #ff0202 : #008eff
plot(out10 and smaplot10 ? out10 :na , title="377", color=mycolor10, linewidth=1)

smaplot14 = input (true, title="MA610")
len14 = input.int(610, minval=1, title="ma Length")
out14 = exponential ? ta.ema(src, len14) : ta.sma(src, len14)
up14 = out14 > out14[1]
down14 = out14 < out14[1]
mycolor14 = up14 ? #3cfe12 : down14 ? #ff0202 : #008eff
plot(out14 and smaplot14 ? out14 :na , title="610", color=mycolor14, linewidth=1)

smaplot15 = input (true, title="MA987")
len15 = input.int(987, minval=1, title="ma Length")
out15 = exponential ? ta.ema(src, len15) : ta.sma(src, len15)
up15 = out15 > out15[1]
down15 = out15 < out15[1]
mycolor15 = up15 ? #3cfe12 : down15 ? #ff0202 : #008eff
plot(out15 and smaplot15 ? out15 :na , title="987", color=mycolor15, linewidth=1)

smaplot16 = input (true, title="MA1597")
len16 = input.int(1597, minval=1, title="ma Length")
out16 = exponential ? ta.ema(src, len16) : ta.sma(src, len16)
up16 = out16 > out16[1]
down16 = out16 < out16[1]
mycolor16 = up16 ? #3cfe12 : down16 ? #ff0202 : #008eff
plot(out16 and smaplot16 ? out16 :na , title="1597", color=mycolor16, linewidth=1)

smaplot17 = input (true, title="MA2584")
len17 = input.int(2584, minval=1, title="ma Length")
out17 = exponential ? ta.ema(src, len17) : ta.sma(src, len17)
up17 = out17 > out17[1]
down17 = out17 < out17[1]
mycolor17 = up17 ? #3cfe12 : down17 ? #ff0202 : #008eff
plot(out17 and smaplot17 ? out17 :na , title="2584", color=mycolor17, linewidth=1)

smaplot19 = input (true, title="MA4181")
len19 = input.int(4181, minval=1, title="ma Length")
out19 = exponential ? ta.ema(src, len19) : ta.sma(src, len19)
up19 = out19 > out19[1]
down19 = out19 < out19[1]
mycolor19 = up19 ? #3cfe12 : down19 ? #ff0202 : #008eff
plot(out19 and smaplot19 ? out19 :na , title="4181", color=mycolor19, linewidth=1)
//
string  GRP3 = "Visual MA Settings"
exponential5 = input(false, title="EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP3)

smaplot50 = input (true, title="MA50")
len50 = input.int(50, minval=1, title="ma Length")
ma50 = exponential5 ? ta.ema(src, len50) : ta.sma(src, len50)
up50 = ma50 > ma50[1]
down50 = ma50 < ma50[1]
mycolor50 = up50 ? #3cfe12 : down50 ? #ff0202 : #008eff
plot(ma50 and smaplot50 ? ma50 :na , title="50", color=mycolor50, linewidth=1)

smaplot100 = input (true, title="MA100")
len100 = input.int(100, minval=1, title="ma Length")
ma100 = exponential5 ? ta.ema(src, len100) : ta.sma(src, len100)
up100 = ma100 > ma100[1]
down100 = ma100 < ma100[1]
mycolor100 = up100 ? #3cfe12 : down100 ? #ff0202 : #008eff
plot(ma100 and smaplot100 ? ma100 :na , title="100", color=mycolor100, linewidth=1)

smaplot150 = input (true, title="MA150")
len150 = input.int(150, minval=1, title="ma Length")
ma150 = exponential5 ? ta.ema(src, len150) : ta.sma(src, len150)
up150 = ma150 > ma150[1]
down150 = ma150 < ma150[1]
mycolor150 = up150 ? #3cfe12 : down150 ? #ff0202 : #008eff
plot(ma150 and smaplot150 ? ma150 :na , title="150", color=mycolor150, linewidth=1)

smaplot200 = input (true, title="MA200")
len200 = input.int(200, minval=1, title="ma Length")
ma200 = exponential5 ? ta.ema(src, len200) : ta.sma(src, len200)
up200 = ma200 > ma200[1]
down200 = ma200 < ma200[1]
mycolor200 = up200 ? #3cfe12 : down200 ? #ff0202 : #008eff
plot(ma200 and smaplot200 ? ma200 :na , title="200", color=mycolor200, linewidth=1)
//
if (ta.crossover(long1, long2))
	strategy.entry("maL", strategy.long, comment="maLong")
if (ta.crossunder(short1, short2))
	strategy.entry("maS", strategy.short, comment="maShort")
////

Lebih lanjut