Chiến lược giao dịch Bitcoin dựa trên RVI và EMA


Ngày tạo: 2024-02-22 13:50:17 sửa đổi lần cuối: 2024-02-22 13:50:17
sao chép: 0 Số nhấp chuột: 776
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch Bitcoin dựa trên RVI và EMA

Tổng quan

Chiến lược này được xây dựng dựa trên hai chỉ số RVI (chỉ số cường độ tương đối) và EMA (chỉ số trung bình di chuyển). Nó tạo ra một chiến lược giao dịch định lượng dựa trên xu hướng và mua quá mức bán khi RVI cho lợi nhuận, mua quá mức trên EMA chậm khi EMA nhanh và mua quá mức trên EMA nhanh khi EMA chậm.

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

  1. Sử dụng RVI để đánh giá tình trạng quá mua quá bán. Khi đường chỉ số RVI đi qua đường tín hiệu của nó, hãy làm thêm cho tín hiệu quá mua; Khi đường chỉ số RVI đi qua đường tín hiệu của nó, hãy làm trống cho tín hiệu quá bán.

  2. Sử dụng hai EMA để xác định hướng xu hướng. Khi EMA nhanh trên EMA chậm là xu hướng giảm, khi EMA chậm trên EMA nhanh là xu hướng giảm.

  3. Chỉ khi RVI cho phép và EMA đánh giá là đà, thì thực hiện nhiều hoạt động; Chỉ khi RVI cho phép và EMA đánh giá là đà, thì thực hiện giao dịch khống chế.

  4. Cắt lỗ sau khi thực hiện nhiều hơn là dưới mức thấp gần đâyatr*khoảng cách atrSL, trạm dừng nằm trên điểm cao gần nhất atr*khoảng cách atrTP; dừng lỗ sau khi nới lỏng nằm trên mức cao gần nhấtatr*khoảng cách atrSL, trạm dừng nằm dưới mức thấp gần nhấtatr*Khoảng cách atrTP

Phân tích lợi thế

  1. Kết hợp với xu hướng và chỉ số mua bán quá mức, tránh phá vỡ giả.

  2. Động thái dừng lỗ, giúp bạn nắm được tình hình.

  3. Các tín hiệu giao dịch được xác định một cách chính xác, dựa trên chất lượng của xu hướng và mức độ mua và bán quá mức.

  4. Dữ liệu phản hồi đầy đủ, tham số được tối ưu hóa, ổ cứng hoạt động tốt.

Phân tích rủi ro

  1. Trong thị trường biến động lớn, EMA đánh giá xu hướng thay đổi thường xuyên và tần suất giao dịch có thể quá cao.

  2. Các tham số RVI và chu kỳ EMA cần được tối ưu hóa cho các loại giao dịch khác nhau, nếu không thì hiệu quả giao dịch có thể kém hơn.

  3. Hệ số dừng lỗ cũng cần được thiết lập hợp lý theo biến động của thị trường, nếu không không thể kiểm soát rủi ro hiệu quả.

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

  1. Có thể xem xét thêm các chỉ số phụ trợ để đánh giá chất lượng của xu hướng, chẳng hạn như chỉ số rung động, kênh đường Brinh, để đưa ra quyết định giao dịch chính xác hơn.

  2. Có thể kết hợp các chỉ số biến động như ATR để điều chỉnh động khoảng cách dừng lỗ, mở rộng phạm vi dừng lỗ khi có biến động lớn.

  3. Có thể thử nghiệm các tham số kết hợp cho các giống khác nhau, chọn tham số tốt nhất, tăng sự ổn định của chiến lược.

Tóm tắt

Chiến lược này kết hợp lợi thế của chỉ số RVI và chỉ số EMA, đồng thời tính đến hướng của xu hướng lớn trong việc đánh giá quá mua quá bán, tránh giao dịch xung đột. Cơ chế dừng lỗ động có lợi cho việc nắm bắt hướng chính của thị trường. Sau khi tối ưu hóa các tham số và kiểm soát rủi ro nghiêm ngặt, chiến lược có thể đạt được lợi nhuận đầu tư ổn định hơn.

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

//this strategy works well on h4 (btc or eth)


//@version=5
strategy(title="Relative Vigor Index", shorttitle="RVGI",overlay=true)
//indicator(title="Relative Vigor Index", shorttitle="RVGI", format=format.price, precision=4, timeframe="", timeframe_gaps=true)
len = input.int(4, title="Length rvi", minval=1)
rvi = math.sum(ta.swma(close-open), len)/math.sum(ta.swma(high-low),len)
sig = ta.swma(rvi)
offset = input.int(0, "Offset rvi", minval = -500, maxval = 500)


atrlength = input.int(19,title="Atr Length",minval=1)
ema1 =  input.int(95,title="Long EMA rapida",minval=1,step=10)
ema2 =  input.int(200,title="Long EMA lenta",minval=1,step=10)

atrSL = input.float(2.0,title="Atr SL", step=0.1)
atrTP = input.float(1.0,title="Atr TP", step=0.1)

atr = ta.atr(atrlength)
esalcista = low > ta.ema(close,ema1) and ta.ema(close,ema1) > ta.ema(close,ema2)
bajista = high < ta.ema(close,ema1) and ta.ema(close,ema1) < ta.ema(close,ema2)


//plot(high + atr)
//plot(low - atr)

//strategy.entry("compra",strategy.long, when=ta.crossover(rvi,sig))
//strategy.close("compra",when=ta.crossunder(rvi,sig))

//plot(rvi, color=#008000, title="RVGI", offset = offset)
//plot(sig, color=#FF0000, title="Signal", offset = offset)
//plotshape(true,style=shape.xcross)

var TP = 0.0
var SL = 0.0

comprado = strategy.position_size>0
vendido = strategy.position_size<0

crucepositivo = ta.crossover(rvi,sig)
crucenegativo = ta.crossunder(rvi,sig)

if comprado
    // ver SL
    if low < SL
        strategy.close("BUY",comment="SL")
        
        
if comprado    
    //ver tp
    if high > TP
        strategy.close("BUY",comment="TP")
        
       
    
    
    
if not comprado and not vendido
    if crucepositivo and esalcista
        strategy.entry("BUY",strategy.long)
        SL := low - (atr * atrSL)
        TP := high + (atr * atrTP)
        alert("BUY",alert.freq_once_per_bar)



//---------------

if vendido
    // ver SL
    if high > SL
        strategy.close("SELL",comment="SL")
        
        
if vendido    
    //ver tp
    if low < TP
        strategy.close("SELL",comment="TP")
        
       

if not vendido and not comprado
    if crucenegativo and bajista
        strategy.entry("SELL",strategy.short)
        SL := high + (atr * atrSL)
        TP := low - (atr * atrTP)
        alert("SELL",alert.freq_once_per_bar)







//----------------

//plotshape(comprado,style=shape.xcross)
plot( comprado ? SL : na, color=color.red,style=plot.style_circles)
plot( comprado ? TP : na, color=color.blue,style=plot.style_circles)

plot( ta.ema(close,ema1),color=color.orange)
plot( ta.ema(close,ema2),color=color.yellow)


plot( vendido ? SL : na, color=color.red,style=plot.style_circles)
plot( vendido ? TP : na, color=color.blue,style=plot.style_circles)