Chiến lược Death Cross của Golden Cross


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

Tổng quan

Chiến lược này sử dụng các nguyên tắc giao dịch vàng và giao dịch chết của các đường trung bình di chuyển đơn giản để thực hiện các vị trí dài và ngắn của cổ phiếu. Khi đường nhanh vượt qua đường chậm từ phía dưới, hãy làm nhiều hơn; Khi đường nhanh giảm xuống từ phía trên, hãy làm giảm.

Nguyên tắc chiến lược

Chiến lược này đầu tiên xác định thời gian bắt đầu và kết thúc của phép đo, sau đó đặt các tham số tính toán cho hai đường trung bình, bao gồm loại đường trung bình và độ dài chu kỳ.

Sử dụng hàm getMAType () để tính giá trị của hai trung bình. Trong đó fastMA là trung bình ngắn hạn và slowMA là trung bình dài hạn.

Chiến lược của chúng tôi là:

  • Một số trường hợp, một số tín hiệu long được phát ra khi một số tín hiệu được đặt trên một MA nhanh.

  • Khi FastMA đi qua SlowMA, nó sẽ phát ra tín hiệu short.

Cuối cùng, trong thời gian đánh giá lại, chiến lược đầu tư dài sẽ được áp dụng khi có tín hiệu nhiều; chiến lược đầu tư trống sẽ được áp dụng khi có tín hiệu ngắn.

Phân tích lợi thế

  • Các chiến lược được xây dựng rõ ràng, đơn giản và dễ hiểu.
  • Sử dụng nguyên tắc giao nhau đồng tuyến rộng rãi, áp dụng cho hầu hết các loại cổ phiếu.
  • Các loại và tham số trung bình có thể tùy chỉnh, có khả năng thích ứng.
  • Sử dụng cấu trúc chiến lược hình nêm, các chức năng của từng phần được xác định rõ ràng, dễ dàng tối ưu hóa sau này.

Phân tích rủi ro

  • Một số giao dịch có thể bị bỏ lỡ.
  • Các nhà đầu tư không có khả năng lọc thành công thị trường bất ổn và dễ bị lừa.
  • Các tham số tối ưu hóa không đủ toàn diện hệ thống, cần phải có kinh nghiệm nhân tạo hỗ trợ.
  • Không có khả năng kiểm soát hiệu quả rủi ro và tổn thất của một giao dịch.

Đối với các rủi ro, có thể tối ưu hóa hơn nữa bằng cách:

  1. Thêm bộ lọc các chỉ số kỹ thuật khác để xác định xu hướng.

  2. Thêm chiến lược dừng lỗ, kiểm soát tổn thất đơn lẻ.

  3. Tiếp theo, các nhà đầu tư sẽ đưa ra các chỉ số về năng lượng và các chỉ số khác để tránh đánh giá thâm hụt thị trường.

  4. Thiết lập cơ chế tối ưu hóa tham số để tự động tìm kiếm các tham số tốt nhất.

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

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

  1. Thêm các chiến lược dừng lỗ, chẳng hạn như thiết lập điểm dừng cố định hoặc theo dõi dừng lỗ, kiểm soát tổn thất.

  2. Tăng các chiến lược quản lý vị trí, chẳng hạn như vị trí cố định, vị trí động, kiểm soát rủi ro giao dịch.

  3. Thêm bộ lọc, kết hợp với các chỉ số kỹ thuật khác để xác định xu hướng và tăng tỷ lệ thắng.

  4. Thiết lập tham số tối ưu hóa, tìm tham số tối ưu bằng các phương pháp như tìm kiếm lưới, hồi quy tuyến tính.

  5. Mở rộng nhiều chiến lược giao dịch ngoại hối, như phá vị trí, đảo ngược, xây dựng kho hàng loạt, và các chiến lược giao dịch phong phú.

  6. Tăng năng lượng để tránh bị ảnh hưởng bởi động đất.

  7. Tăng cường các loại giao dịch, mở rộng đến các loại khác nhau như cổ phiếu, chỉ số tương lai, ngoại hối, tiền kỹ thuật số.

Tóm tắt

Chiến lược này dựa trên nguyên tắc chéo của đường trung bình di chuyển để thực hiện lựa chọn vị trí dài và ngắn của cổ phiếu. Ý tưởng chiến lược đơn giản, rõ ràng, sử dụng rộng rãi, thích ứng mạnh mẽ, có giá trị thực tế nhất định. Nhưng chiến lược này cũng có một số điểm yếu, không có khả năng lọc hiệu quả xung đột. Trong tương lai, có thể tối ưu hóa từ việc cải thiện dừng lỗ, tối ưu hóa tham số, thêm bộ lọc, v.v., làm cho chiến lược có lợi thế hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy("Golden X BF Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2010, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() =>  true

///////////// MA Params /////////////
source1 = input(title="MA Source 1", defval=close)
maType1 = input(title="MA Type 1", defval="sma", options=["sma", "ema", "swma", "wma"])
length1 = input(title="MA Length 1", defval=50)

source2 = input(title="MA Source 2", defval=close)
maType2 = input(title="MA Type 2", defval="sma", options=["sma", "ema", "swma", "wma"])
length2 = input(title="MA Length 2", defval=200)

///////////// Get MA Function /////////////
getMAType(maType, sourceType, maLen) => 
    res = sma(close, 1)
    
    if maType == "ema"
        res := ema(sourceType, maLen)
    if maType == "sma"
        res := sma(sourceType, maLen)
    if maType == "swma"
        res := swma(sourceType)
    if maType == "wma"
        res := wma(sourceType, maLen)
    res
    
///////////// MA /////////////
fastMA = getMAType(maType1, source1, length1)
slowMA = getMAType(maType2, source2, length2)

long = crossover(fastMA, slowMA)
short = crossunder(fastMA, slowMA)

/////////////// Plotting /////////////// 
checkColor() => fastMA > slowMA
colCheck = checkColor() ? color.lime : color.red
p1 = plot(fastMA, color = colCheck, linewidth=1)
p2 = plot(slowMA, color = colCheck, linewidth=1)
fill(p1, p2, color = checkColor() ? color.lime : color.red)
bgcolor(long ? color.lime : short ? color.red : na, transp=20)

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long", strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)