
Sebuah strategi untuk menghasilkan sinyal perdagangan berdasarkan crossover atau downtrend pada moving averages. Bila crossover di atas moving average jangka pendek, maka muncul crossover multihead. Bila crossover di bawah moving average jangka panjang, maka muncul crossover deadhead.
Strategi masukan garis rata-rata silang emas memungkinkan Anda untuk bebas memilih parameter untuk garis rata-rata silang. Untuk tampilan visual, saya telah memetakan beberapa rata-rata Fibonacci bergerak dari 1 hingga 987, tetapi untuk penggunaan praktis, hanya perlu memilih beberapa garis rata-rata, melihat apakah ada sinyal silang yang jelas, dan kemudian memasukkan parameter ini ke posisi panjang atau posisi pendek.
Sebagai contoh, posisi panjang atau posisi pendek yang ditetapkan dalam strategi ini adalah:
Sinyal multihead: 34 hari EMA, 144 hari EMA.
Tanda kepala kosong:
55 hari di bawah SMA dan 144 hari di EMA.
Seperti yang terlihat, strategi ini dapat secara bebas mencocokkan parameter dari 4 garis rata-rata yang berbeda, baik untuk memilih EMA maupun SMA.
Pengaturan warna default: Garis rata-rata naik adalah hijau Garis tengah ke bawah merah
Setelan Fibonacci standar: Garis rata-rata harian 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181
Pengaturan default untuk visualisasi linear: 50, 100, 150, 200 hari rata-rata
Setelan default untuk posisi panjang atau pendek: Sinyal multihead: 34 hari EMA, 144 hari EMA.
Tanda kepala kosong: 55 hari di bawah SMA dan 144 hari di EMA.
Logika inti dari strategi ini adalah untuk menghasilkan sinyal perdagangan berdasarkan sinyal silang dari dua rata-rata bergerak.
Moving average adalah indikator teknis yang digunakan untuk menganalisis tren pasar. Ia menghitung nilai rata-rata harga penutupan dalam periode tertentu, yang dapat secara efektif menyaring pergerakan pasar. Moving average dibagi menjadi Simple Moving Average (SMA) dan Index Moving Average (EMA).
SMA adalah rata-rata arithmetic sederhana dari harga penutupan untuk satu periode. EMA adalah rata-rata bergerak indeks dari harga penutupan, memberikan bobot yang lebih tinggi pada harga terbaru. EMA dapat merespons perubahan harga lebih cepat.
Ketika garis rata-rata jangka pendek melewati garis rata-rata jangka panjang, dianggap sebagai tren pasar berbalik menjadi bullish, menghasilkan sinyal beli. Ini disebut penembusan crossover emas. Sebaliknya, ketika garis rata-rata jangka pendek melewati garis rata-rata jangka panjang, dianggap sebagai tren pasar berbalik ke bearish, menghasilkan sinyal jual. Ini disebut penembusan crossover kematian.
Fleksibilitas dari strategi ini adalah parameter yang dapat diatur secara bebas dari empat garis rata-rata. Parameter default adalah 144 hari EMA untuk sinyal multihead pada 34 hari EMA, dan 144 hari EMA untuk sinyal kosong pada 55 hari EMA. Parameter ini dapat diatur secara bebas di kotak input.
Selain itu, strategi ini memetakan moving averages dari beberapa set Fibonacci, yang memungkinkan untuk mengamati perubahan tren dari dimensi waktu yang lebih luas. Pada saat yang sama, garis rata-rata 50 hari, 100 hari, 150 hari, dan 200 hari yang biasa digunakan juga dipetakan. Garis rata-rata ini adalah referensi, dan penting untuk masuk ke parameter garis rata-rata silang yang dimasukkan ke dalam kotak pengaturan posisi panjang atau pendek.
Keuntungan dari strategi ini adalah:
Penggunaan moving average dapat secara efektif menyaring kebisingan pasar dan mengidentifikasi arah tren
Sinyal perdagangan dari persilangan rata-rata memiliki beberapa keandalan
Anda dapat memilih kombinasi garis rata-rata panjang dan pendek, parameter optimasi
Garis rata-rata yang menggabungkan beberapa periode yang berbeda untuk mengidentifikasi tren dalam dimensi waktu yang lebih besar
Dapat menggunakan EMA dan SMA secara bersamaan, memilih parameter optimal sesuai dengan karakteristik varietas
Gambar intuitif secara visual, terlihat dengan jelas melalui garis-garis sejajar berwarna
Implementasi sederhana, mudah dipelajari, dan cocok untuk pemula
Fleksibel untuk berbagai varietas, memiliki beberapa universalitas
Strategi ini juga memiliki beberapa risiko:
Dalam pasar yang bergejolak, garis rata-rata dapat menghasilkan banyak sinyal ketidakpastian, yang menyebabkan perdagangan garis super pendek, meningkatkan frekuensi perdagangan dan beban biaya.
Parameter yang dipilih tidak sesuai dapat menyebabkan sinyal yang salah, kombinasi garis rata-rata panjang dan panjang yang sesuai harus dipilih dan validasi hasilnya.
Pada saat tren berbalik tajam, sinyal persilangan rata-rata akan terlambat dan tidak dapat bereaksi terhadap perubahan harga.
Persaingan rata-rata tidak dapat sepenuhnya menghindari kerugian, perlu pengaturan yang masuk akal untuk menghentikan kerugian.
Perlu untuk mencegah kesesuaian kurva yang disebabkan oleh optimasi berlebihan. Stabilitas parameter harus diuji dalam siklus pasar yang berbeda.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Uji kombinasi garis rata-rata panjang dan panjang yang berbeda untuk mencari parameter optimal yang dapat diukur berulang kali berdasarkan data historis.
Cobalah untuk menyesuaikan jenis garis rata-rata dan bandingkan perbedaan efek antara SMA dan EMA. Tren varietas lebih jelas untuk memilih SMA, dan varietas berfluktuasi lebih tajam untuk memilih EMA.
Kombinasi dengan indikator lain seperti KDJ, MACD dan filter sinyal palsu, meningkatkan kualitas sinyal.
Tambahkan strategi stop loss untuk mengendalikan risiko kerugian tunggal. Anda dapat mengatur stop loss bergerak atau stop loss tracking.
Mengoptimalkan strategi pengelolaan dana, seperti penyesuaian posisi sesuai dengan penarikan, dan lain-lain, untuk mengontrol risiko keseluruhan.
Uji stabilitas dalam berbagai varietas dan dalam berbagai siklus, menilai parameter kebugaran. Jika perlu, parameter dapat disesuaikan dengan varietas.
Strategi massal cross-equilibrium secara keseluruhan merupakan strategi pelacakan tren yang sangat andal. Dengan cross-equilibrium sederhana dan intuitif sebagai sinyal perdagangan, dapat disesuaikan dengan varietas yang berbeda melalui pengoptimalan parameter.
/*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")
////