Chiến lược vào lệnh trung bình động Golden Cross


Ngày tạo: 2023-11-01 16:42:41 sửa đổi lần cuối: 2023-11-01 16:42:41
sao chép: 0 Số nhấp chuột: 841
1
tập trung vào
1166
Người theo dõi

Chiến lược vào lệnh trung bình động Golden Cross

Tổng quan

Chiến lược nhập đường ngang vàng là một chiến lược tạo ra tín hiệu giao dịch dựa trên tín hiệu giao chéo hoặc tín hiệu đi xuống của đường trung bình di chuyển. Khi đường trung bình di chuyển ngắn hạn đi qua đường trung bình di chuyển dài hạn, tạo ra tín hiệu giao chéo vàng nhiều đầu. Khi đường trung bình di chuyển ngắn hạn đi dưới đường trung bình di chuyển dài hạn, tạo ra tín hiệu giao chéo chết không đầu.

Chiến lược nhập đường trung bình chéo vàng cho phép bạn tự do chọn các tham số cho đường trung bình chéo. Để hiển thị trực quan, tôi đã vẽ nhiều đường trung bình di chuyển Fibonacci từ 1 đến 987, nhưng khi sử dụng thực tế, chỉ cần chọn một vài đường trung bình, xem liệu có tín hiệu chéo rõ ràng hay không, sau đó nhập các tham số này vào thiết lập vị trí dài hoặc ngắn.

Ví dụ, trong chiến lược này, đặt vị trí dài hoặc ngắn được nhập là:

Tín hiệu đa đầu: 34 ngày EMA giao 144 ngày EMA

Tín hiệu không đầu:
55 ngày SMA, 144 ngày EMA.

Có thể thấy rằng chiến lược này có thể tự do phù hợp với các tham số của 4 đường trung bình khác nhau, có thể chọn cả EMA và SMA.

Màu mặc định: Đường trung bình trên là màu xanh lá cây Đường trung bình giảm là màu đỏ

Cài đặt Fibonacci theo chuẩn mặc định: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181 đường trung bình hàng ngày

Cài đặt mặc định cho hình ảnh đồng nhất: 50, 100, 150, 200 đường trung bình hàng ngày

Cài đặt mặc định cho vị trí dài hoặc ngắn: Tín hiệu đa đầu: 34 ngày EMA giao 144 ngày EMA

Tín hiệu không đầu: 55 ngày SMA, 144 ngày EMA.

Nguyên tắc

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

Trong đó, trung bình di chuyển là một chỉ số kỹ thuật được sử dụng để phân tích xu hướng thị trường. Nó tính toán giá trị trung bình của giá đóng cửa trong một khoảng thời gian nhất định, có thể lọc hiệu quả sự biến động của thị trường.

SMA là trung bình toán học đơn giản cho giá đóng cửa trong một chu kỳ. EMA là trung bình di chuyển trơn chỉ số cho giá đóng cửa, cho trọng lượng cao hơn cho giá gần đây hơn. EMA có thể phản ứng nhanh hơn với sự thay đổi giá.

Khi đường trung bình ngắn hạn vượt qua đường trung bình dài hạn, nó được coi là xu hướng thị trường chuyển sang bullish, tạo ra tín hiệu mua. Đây được gọi là giao thoa vàng. Ngược lại, khi đường trung bình ngắn hạn vượt qua đường trung bình dài hạn, nó được coi là xu hướng thị trường chuyển sang giảm, tạo ra tín hiệu bán.

Tính linh hoạt của chiến lược này là các tham số có thể tự đặt cho 4 đường trung bình. Các tham số mặc định là 144 ngày EMA trên 34 ngày EMA cho tín hiệu đa đầu và 144 ngày EMA dưới 55 ngày EMA cho tín hiệu đầu trống. Các tham số này có thể được đặt tự do trong hộp nhập.

Ngoài ra, chiến lược này vẽ các đường trung bình di chuyển của nhiều chuỗi Fibonacci, cho phép quan sát xu hướng thay đổi từ nhiều chiều thời gian hơn. Đồng thời, các đường trung bình 50 ngày, 100 ngày, 150 ngày và 200 ngày được sử dụng thường xuyên cũng được vẽ. Các đường trung bình này được sử dụng để tham khảo, điều quan trọng là nhập các tham số đường trung bình chéo vào khung thiết lập vị trí dài hoặc ngắn.

Ưu điểm

Những lợi thế của chiến lược dựa trên đường chéo bình đẳng này là:

  1. Sử dụng trung bình di chuyển có thể lọc hiệu quả tiếng ồn thị trường, nhận biết xu hướng

  2. Tín hiệu giao dịch từ giao nhau đều có độ tin cậy nhất định

  3. Bạn có thể tự do lựa chọn kết hợp đường trung bình dài và ngắn, tùy chỉnh tham số.

  4. Kết hợp các đường trung bình với nhiều chu kỳ khác nhau, có thể nhận ra xu hướng trong một chiều thời gian lớn hơn

  5. Có thể sử dụng EMA và SMA đồng thời, tùy thuộc vào đặc tính của giống để chọn tham số tối ưu

  6. Hình ảnh trực quan về mặt thị giác, có thể được nhìn thấy rõ ràng thông qua các đường chéo đồng nhất đa màu

  7. Đơn giản, dễ nắm bắt và phù hợp với người mới bắt đầu

  8. Có thể áp dụng linh hoạt cho các giống khác nhau, có tính phổ biến nhất định

Rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Trong một thị trường bất ổn, đường trung bình có thể tạo ra một lượng lớn tín hiệu không chắc chắn, dẫn đến giao dịch đường siêu ngắn, tăng tần suất giao dịch và gánh nặng phí xử lý.

  2. Các tham số được chọn không phù hợp có thể dẫn đến tín hiệu sai, nên chọn kết hợp đường trung bình dài và ngắn phù hợp và xác minh hiệu quả.

  3. Khi xu hướng đảo ngược mạnh, tín hiệu chéo đường trung bình sẽ bị chậm trễ và không thể phản ứng kịp thời với sự thay đổi giá.

  4. Tuy nhiên, không thể hoàn toàn tránh được lỗ hổng, cần thiết phải thiết lập điểm dừng lỗ hợp lý.

  5. Cần ngăn chặn sự phù hợp với đường cong do tối ưu hóa quá mức. Cần kiểm tra tính ổn định của tham số trong các chu kỳ thị trường khác nhau.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra các kết hợp đường trung bình dài và dài khác nhau để tìm các tham số tốt nhất có thể được lặp lại dựa trên dữ liệu lịch sử.

  2. Cố gắng điều chỉnh loại đường trung bình, so sánh hiệu quả khác nhau của SMA và EMA. Xu hướng giống rõ ràng hơn để chọn SMA, biến động giống mạnh hơn để chọn EMA.

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

  4. Thêm chiến lược dừng lỗ để kiểm soát rủi ro mất mát đơn. Có thể thiết lập dừng di động hoặc theo dõi dừng lỗ.

  5. Tối ưu hóa chiến lược quản lý vốn, như điều chỉnh vị trí theo trường hợp rút tiền, kiểm soát lỗ hổng rủi ro tổng thể.

  6. Kiểm tra sự ổn định trong các giống khác nhau và các chu kỳ khác nhau, đánh giá sức khỏe của các tham số. Nếu cần thiết, các tham số có thể được điều chỉnh chi tiết cho các giống.

Tóm tắt

Chiến lược đầu vào đường trung bình vàng là một chiến lược theo dõi xu hướng có độ tin cậy cao. Nó sử dụng đường trung bình đơn giản và trực quan làm tín hiệu giao dịch, có thể thích ứng với các giống khác nhau thông qua tối ưu hóa tham số. Kết hợp với dừng lỗ và quản lý tiền có thể kiểm soát rủi ro.

Mã nguồn chiến lược
/*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")
////