Chiến lược giao dịch rùa Double Trailing Stop


Ngày tạo: 2023-12-20 13:37:31 sửa đổi lần cuối: 2023-12-20 13:37:31
sao chép: 1 Số nhấp chuột: 628
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch rùa Double Trailing Stop

Tổng quan

Chiến lược này sử dụng quy tắc giao dịch biển để thiết lập hai điểm dừng theo dõi, hạn chế tổn thất bằng cách theo dõi hai lần, đồng thời đặt các tham số khác nhau để lọc tiếng ồn thị trường và mua khi xu hướng rõ ràng hơn.

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

Chiến lược này chủ yếu xác định thời điểm mua bằng cách theo dõi hai điểm dừng lỗ long_1 và long_2. Trong đó long_1 theo dõi xu hướng dài hơn, long_2 theo dõi xu hướng ngắn hơn. Đồng thời thiết lập profit1 và profit2 làm điểm dừng lỗ.

Nếu giá cao hơn long_1, thị trường đang trong xu hướng tăng dài hạn, vào thời điểm này nếu giá thấp hơn long_2, cho thấy sự hồi phục ngắn hạn cung cấp thời gian nhập cảnh tốt hơn, thì hãy nhập vào nhiều hơn; Nếu giá thấp hơn long_1, thì không xác định xu hướng dài hạn, nếu giá cao hơn long_2, cho thấy sự hồi phục ngắn hạn, cũng có thể nhập vào.

Sau khi nhập, thiết lập hai điểm dừng theo dõi stoploss1 và stoploss2, và so sánh với profit1, profit2 để lấy giá trị tối đa, do đó khóa lợi nhuận.

Phân tích lợi thế

  • Kiểm soát rủi ro hiệu quả và tối đa hóa lợi nhuận bằng cách theo dõi hai lần
  • Kết hợp hai loại chỉ số dài hạn và ngắn hạn, có thể lọc một phần tiếng ồn, tham gia khi có xu hướng rõ ràng hơn
  • Tính bảo thủ của chiến lược kiểm soát tự do có thể được điều chỉnh bằng các tham số

Phân tích rủi ro

  • Chiến lược bảo thủ hơn, dễ bỏ lỡ một số cơ hội
  • Đặt điểm dừng sai có thể dừng quá sớm
  • Số lượng giao dịch ít hơn, có khả năng thua lỗ lớn hơn

Bạn có thể điều chỉnh các tham số long và profit để làm cho chiến lược có tính tích cực hơn, tăng số lần giao dịch. Đồng thời tối ưu hóa thuật toán điểm dừng lỗ, để thực hiện điều chỉnh tự động.

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

  • Tối ưu hóa các tham số long và profit để tìm các tham số tốt nhất
  • Thử các thuật toán dừng từ hoặc dừng dòng bóng để giảm bớt sự mất mát không cần thiết
  • Tăng điều kiện mở kho để lọc tiếng ồn và tìm ra xu hướng rõ ràng hơn
  • Tìm kiếm những bước đột phá thực sự kết hợp với chỉ số khối lượng giao dịch

Tóm tắt

Chiến lược này nói chung là bảo thủ hơn, phù hợp với các nhà đầu tư tăng trưởng ổn định. Có thể tăng cường sự tiến bộ của chiến lược một cách thích hợp thông qua điều chỉnh tham số và tối ưu hóa thuật toán dừng lỗ. Ngoài ra, tăng cơ chế lọc tiếng ồn thị trường cũng là một hướng tối ưu hóa tiếp theo.

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

//@version=4
strategy("Turtle Project",overlay= true)
//-----------------------------------------------------------
entry_1 =  input(55) 
profit_1 =  input(20)             

long_1 = float(na)                                                             
long_1:= if high[entry_1] >= highest(high,entry_1)                   
    high[entry_1]                                                            
else                                                                              
    long_1[1]                                                                   


profit1 = float(na)                                                            
profit1:= if low[profit_1] <= lowest(low,profit_1)                   
    low[profit_1]                                                            
else                                                                            
    profit1[1]                      
//-----------------------------------------------------------
entry_2 =  input(20) 
profit_2 =  input(10)             

long_2 = float(na)                                                             
long_2:= if high[entry_2] >= highest(high,entry_2)                   
    high[entry_2]                                                            
else                                                                              
    long_2[1]                                                                   


profit2 = float(na)                                                            
profit2:= if low[profit_2] <= lowest(low,profit_2)                   
    low[profit_2]                                                            
else                                                                           
    profit2[1]                      
//------------------------------------------------------------
stoploss_1= lowest(low,1) < long_1 and highest(high,1) > long_1
stoploss_2= lowest(low,1) < long_2 and highest(high,1) > long_2 

stop_1 = input(1)/100
stop_2 = input(2)/100

plotchar(stoploss_1, "high1", "▲",location.top,color=color.red )
plotchar(stoploss_2, "high2", "▲",location.top,color=color.blue)


//------------------------------------------------------------
if strategy.position_size == 0
    if low < long_1
        if high < long_1 
            strategy.entry("longlong_4",strategy.long, stop=long_1)

if strategy.position_size == 0    
    if low > long_1
        if high < long_2 
            strategy.entry("longlong_3",strategy.long, stop=long_2)

stoploss1 = float(na)
stoploss1:= stoploss_1 ? strategy.position_avg_price * (1 - stop_1) : stoploss1[1]
stoploss__1 = max(stoploss1,profit1)

if high > long_1 and strategy.position_size > 0
    strategy.exit("exit_1 ","longlong_4",stop=stoploss__1)

stoploss2 = float(na)
stoploss2:= stoploss_2 ? strategy.position_avg_price * (1 - stop_2) : stoploss2[1]
stoploss__2 = max(stoploss2,profit2)

if high > long_2 and strategy.position_size > 0
    strategy.exit("exit_2 ","longlong_3",stop=stoploss__2)
//--------------------------------------------------------------
plot(long_1,color=color.red ,linewidth=3)
plot(long_2,color=color.blue,linewidth=3)

plot(profit1,color=color.red,   linewidth=1)
plot(profit2,color=color.blue,  linewidth=1)

//plot(stoploss__1,style=plot.style_circles, color=color.yellow) 
//plot(stoploss__2,style=plot.style_circles, color=color.yellow) 

plot(stoploss1,style=plot.style_circles, color=color.blue) 
plot(stoploss2,style=plot.style_circles, color=color.red) 
//--------------------------------------------------------------