Chiến lược đầu vào Fibonacci Moving Averages

Tác giả:ChaoZhang, Ngày: 2023-11-01 16:42:41
Tags:

img

Tổng quan

Chiến lược đầu vào trung bình di chuyển Fibonacci dựa trên tín hiệu chéo trung bình di chuyển hoặc tín hiệu chéo để tạo ra tín hiệu giao dịch. Khi trung bình di chuyển ngắn hạn vượt trên trung bình di chuyển dài hạn, một tín hiệu chéo vàng tăng được tạo ra. Khi trung bình di chuyển ngắn hạn vượt dưới trung bình di chuyển dài hạn, một tín hiệu chéo chết giảm được tạo ra.

Phương pháp Fibonacci Moving Averages Input (FibMAI) cho phép bạn chọn bất kỳ giá trị nào cho các đường chéo tăng hoặc giảm của mình. Để hiển thị trực quan, tôi đã vẽ các đường trung bình chuyển động Fibonacci bao gồm 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 trong khi ẩn các cây nến. Nhưng để sử dụng chỉ số này, tôi chỉ cho phép một vài MAs kiểm tra xem có mô hình chéo hoặc chéo đáng chú ý hay không, sau đó kiểm tra lại các giá trị đó vào các thiết lập đầu vào chiến lược FibMAI Long hoặc Short.

Ví dụ, đầu vào cài đặt dài hoặc ngắn cho biểu đồ ngày NQ1! này là:

Tăng = FibEMA34 crossover FibEMA144

Xuống = FibEMA55 crossunder FibSMA144

Như bạn có thể thấy, bạn có thể trộn và kết hợp 4 giá trị MA khác nhau, hoặc là biểu thức hoặc đơn giản.

Cài đặt màu mặc định: Giá trị tăng = màu xanh lá cây Giá trị giảm = màu đỏ

Cài đặt Visual FibMA mặc định: FibEMA 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181

Cài đặt Visual MA mặc định: SMA 50, 100, 150, 200

Cài đặt mặc định Long hoặc Short: Tăng = FibEMA34 crossover FibEMA144

Xuống = FibEMA55 crossunder FibSMA144

Nguyên tắc

Lý thuyết cốt lõi của chiến lược này dựa trên các tín hiệu chéo giữa hai đường trung bình động để tạo ra các tín hiệu giao dịch.

Mức trung bình động là các chỉ số kỹ thuật được sử dụng để phân tích xu hướng thị trường. Chúng tính toán giá đóng trung bình trong một khoảng thời gian nhất định và có thể lọc hiệu quả biến động của thị trường. Có hai loại trung bình động - Mức trung bình động đơn giản (SMA) và Mức trung bình động nhân tố (EMA).

SMA là trung bình số học đơn giản của giá đóng trong một khoảng thời gian. EMA áp dụng làm mịn theo cấp số nhân cho giá đóng, cho trọng lượng nhiều hơn cho giá gần đây. EMA phản ứng nhanh hơn với những thay đổi giá.

Khi trung bình di chuyển ngắn hạn vượt qua trên trung bình di chuyển dài hạn, nó báo hiệu một sự thay đổi xu hướng tăng và tạo ra tín hiệu mua. Điều này được gọi là "cross vàng". Ngược lại, khi trung bình di chuyển ngắn hạn vượt qua dưới trung bình di chuyển dài hạn, nó báo hiệu một sự thay đổi xu hướng giảm và tạo ra tín hiệu bán. Điều này được gọi là "cross death".

Sự linh hoạt của chiến lược này nằm trong khả năng tự đặt các thông số cho 4 đường trung bình động. Các thông số mặc định là đường EMA 34 giai đoạn vượt qua đường EMA 144 giai đoạn cho tín hiệu tăng và đường SMA 55 giai đoạn vượt qua đường EMA 144 giai đoạn cho tín hiệu giảm. Các thông số này có thể được điều chỉnh tự do trong hộp đầu vào.

Ngoài ra, chiến lược vẽ nhiều đường trung bình di chuyển theo trình tự Fibonacci trên các khung thời gian khác nhau. Các đường trung bình di chuyển phổ biến như 50 ngày, 100 ngày, 150 ngày và 200 ngày cũng được vẽ.

Ưu điểm

Những lợi thế của chiến lược chéo trung bình động này bao gồm:

  1. Sử dụng đường trung bình động lọc tiếng ồn thị trường và xác định hướng xu hướng

  2. Các tín hiệu chéo có độ tin cậy nhất định

  3. Kết hợp trung bình động dài và ngắn có thể tùy chỉnh để tối ưu hóa tham số

  4. Bao gồm nhiều khung thời gian để xác định xu hướng

  5. Có thể sử dụng cả EMA và SMA dựa trên các đặc điểm của công cụ

  6. Nhìn trực quan với đường chéo trung bình di chuyển màu

  7. Dễ hiểu và phù hợp cho người mới bắt đầu

  8. Ứng dụng linh hoạt trên các công cụ khác nhau với tính phổ quát

Rủi ro

Ngoài ra còn có một số rủi ro cho chiến lược này:

  1. Quá nhiều tín hiệu whipsaw trong thời gian thị trường hỗn loạn, dẫn đến giao dịch quá mức

  2. Các tín hiệu không chính xác nếu sử dụng các kết hợp trung bình động không phù hợp

  3. Sự chậm trễ trong tín hiệu trong các biến động xu hướng cực đoan, không thể phản ánh sự thay đổi giá theo thời gian

  4. Chuỗi trung bình động không hoàn toàn tránh lỗ, cần dừng lỗ hợp lý

  5. Tối ưu hóa quá mức gây ra sự phù hợp của đường cong. Các tham số cần phải vững chắc trong các chu kỳ thị trường.

  6. Các thông số có thể cần điều chỉnh chi tiết cho các thiết bị khác nhau

Hướng dẫn tối ưu hóa

Một số cách để tối ưu hóa chiến lược này:

  1. Kiểm tra các kết hợp trung bình động dài và ngắn khác nhau để tìm các thông số tối ưu bằng cách sử dụng backtesting

  2. Hãy thử điều chỉnh các loại trung bình động, so sánh hiệu suất SMA và EMA. Sử dụng SMA cho các công cụ có xu hướng rõ ràng hơn và EMA cho các công cụ biến động hơn.

  3. Kết hợp các chỉ số khác như KDJ, MACD để lọc tín hiệu sai và cải thiện chất lượng

  4. Thêm các chiến lược dừng lỗ để kiểm soát lỗ trên các giao dịch đơn, chẳng hạn như dừng lỗ sau

  5. Tối ưu hóa các chiến lược quản lý tiền, chẳng hạn như điều chỉnh kích thước vị trí dựa trên việc rút tiền

  6. Sự ổn định của tham số thử nghiệm trên các thiết bị và khung thời gian khác nhau để đánh giá độ bền

Kết luận

Nhìn chung, chiến lược đầu vào Fibonacci Moving Averages là một hệ thống theo xu hướng đáng tin cậy. Nó sử dụng các đường chéo trung bình động đơn giản và trực quan cho các tín hiệu giao dịch, và có thể được điều chỉnh cho các công cụ khác nhau thông qua tối ưu hóa tham số. Với việc dừng lỗ và quản lý tiền đúng cách, rủi ro có thể được kiểm soát. Tối ưu hóa quá mức và các tín hiệu đảo ngược xu hướng chậm nên được tránh. Với các tham số được lựa chọn tốt và kỷ luật giao dịch, đây có thể là một chiến lược tạo lợi nhuận hiệu quả và ổn định.


/*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")
////

Thêm nữa