Chiến lược giao dịch Bitcoin số lượng kết hợp MACD, RSI và FIB

Tác giả:ChaoZhang, Ngày: 2023-12-26 17:08:03
Tags:

img

Tổng quan

Chiến lược này được đặt tên là Chiến lược Fibonacci Chữ thập vàng. Nó kết hợp chỉ số kỹ thuật MACD, chỉ số sức mạnh tương đối RSI và lý thuyết khôi phục / mở rộng fibonacci dựa trên tỷ lệ vàng, thực hiện giao dịch định lượng cho bitcoin và các loại tiền điện tử khác.

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

  1. Chỉ số MACD cho tín hiệu giao dịch
  • Đặt các khoảng thời gian EMA của đường MACD nhanh và đường chậm thành 15 và 30
  • Chữ hiệu mua và bán
  1. RSI lọc tín hiệu sai
  • Đặt tham số RSI vào khoảng thời gian 50
  • RSI giúp lọc một số tín hiệu sai mà MACD cung cấp
  1. Lý thuyết Fibonacci về hỗ trợ/kháng cự
  • Kết hợp giá cao nhất / thấp nhất gần đây trên 38 cây nến
  • Tính toán mức khôi phục / mở rộng 0,5 fibonacci
  • Có thể được sử dụng như là hỗ trợ và kháng cự
  1. MA và RSI Đánh giá quá bán/trước mua
  • Tình trạng bán quá mức/mua quá mức của các thẩm phán MA 50 giai đoạn
  • RSI cũng giúp đánh giá
  1. Cơ chế mở ngược
  • Cung cấp tùy chọn cho người dùng để mở lệnh ngược
  • Điều chỉnh linh hoạt logic dài / ngắn theo lựa chọn của người dùng

Phân tích lợi thế

Lợi thế lớn nhất là hoạt động 24x7 mà không cần can thiệp bằng tay. Bên cạnh đó, sự kết hợp của nhiều chỉ số làm tăng tỷ lệ thắng, đặc biệt là hiệu suất xuất sắc trong thị trường bò.

  1. Giao dịch số lượng 24x7 hoàn toàn tự động mà không cần can thiệp bằng tay
  2. Các tín hiệu giao dịch chính xác từ MACD
  3. RSI lọc một số tín hiệu sai
  4. Lý thuyết Fibonacci thêm nhiều tham chiếu
  5. Đánh giá tình trạng bán quá mức/mua quá mức
  6. Điều chỉnh các chiến lược linh hoạt thông qua mở ngược

Phân tích rủi ro

Ngoài ra còn có một số rủi ro, chủ yếu là từ sự đảo ngược giá lớn mà khó có hiệu lực dừng lỗ. Ngoài ra, thời gian nắm giữ quá dài gây ra rủi ro. Những rủi ro chính bao gồm:

  1. Dừng mất quá chặt chẽ để bảo vệ khỏi đảo ngược lớn
  2. Rủi ro hệ thống từ thời gian nắm giữ quá dài

Các giải pháp là:

  1. Thiết lập khoảng cách dừng mất mát lỏng lẻo
  2. Tối ưu hóa thời gian nắm giữ chống lại rủi ro quá dài

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

Các khía cạnh chính cho tối ưu hóa:

  1. Tối ưu hóa các thông số MACD để có độ chính xác cao hơn
  2. Tối ưu hóa tham số RSI để sử dụng tốt hơn
  3. Kiểm tra thêm các giai đoạn của lý thuyết Fibonacci
  4. Thêm nhiều chỉ số bộ lọc để giảm thêm tín hiệu sai
  5. Kết hợp các chỉ số của các giai đoạn lớn hơn cho xu hướng thị trường

Tóm lại

Chiến lược kết hợp nhiều chỉ số lượng cho tín hiệu giao dịch và nhận ra giao dịch tiền điện tử tự động đầy đủ. Tăng thêm lợi nhuận bằng cách tối ưu hóa các tham số và thêm nhiều chỉ số hỗ trợ hơn. Nó làm giảm đáng kể chi phí hoạt động thủ công cho người dùng. Đáng nghiên cứu sâu và áp dụng cho các nhà giao dịch lượng.


/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © onurenginogutcu

//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)

///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1

sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz

lsl = input(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
ssl = input(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=7.6) * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=7.5) * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
     
choice = input(title="Reverse ?", type=input.bool, defval=false)

symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)

i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)

sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729  //////////0.729 altın oran oldu 09.01.2022

///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"


//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)

///////////////////////////////////////////////////////////// INDICATOR CONDITIONS

longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50)  and symClose > fibtop

////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)


if (choice == false and longCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
   

if (choice == false and shortCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and longCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and shortCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
    

if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)




Thêm nữa