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

Tác giả:ChaoZhang, Ngày: 2023-12-25 17:12:05
Tags:

img

Tổng quan

Chiến lược giao dịch rùa là một chiến lược theo dõi xu hướng theo dõi các bước đột phá. Nó được nhà giao dịch nổi tiếng Richard Dennis phát triển vào những năm 1980 để chứng minh rằng các nhà giao dịch có thể được nuôi dưỡng bởi các quy tắc thay vì sinh ra. Ý tưởng cốt lõi của chiến lược là theo dõi các bước đột phá giá và theo dõi xu hướng, trong khi tuân thủ nghiêm ngặt các nguyên tắc quản lý tiền để hạn chế rủi ro giảm.

Chiến lược logic

Chiến lược giao dịch rùa sử dụng hai thông số N và N/2 để xây dựng các kênh. Cụ thể, nó tính toán giá cao nhất và thấp nhất trong N ngày gần đây nhất và N/2 ngày. Khi giá vượt quá kênh N ngày, một vị trí dài được thiết lập. Khi giá giảm xuống dưới kênh N/2 ngày, vị trí được đóng. Tương tự, khi giá phá vỡ kênh N ngày xuống phía dưới, một vị trí ngắn được thiết lập và đóng khi giá tăng trên kênh N/2 ngày. Mục tiêu là theo xu hướng giá trong khi kiểm soát rủi ro.

Trong mã, N tương ứng vớienter_slowvà N/2 tương ứng vớienter_fastGiá cao nhất (slowLfastL) và giá thấp nhất (slowSfastSCác vị trí dài được mở khi giá vượt quá kênh 55 ngày (enterL2) và đóng cửa khi giá giảm xuống dưới kênh 20 ngày (exitL1Các vị trí ngắn được mở khi giá vượt qua kênh giảm 55 ngày (enterS2) và đóng cửa khi giá tăng trên kênh 20 ngày (exitS1).

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược giao dịch rùa là kiểm soát rủi ro. Bằng cách thiết lập các vị trí trên các đợt phá vỡ giá và dừng lại nhanh chóng khi giảm giá, nó có hiệu quả kiểm soát tổn thất trên các giao dịch cá nhân. Việc sử dụng kích thước vị trí phân số cố định làm giảm rủi ro hơn nữa.

Một lợi thế khác là lựa chọn tham số đơn giản. Toàn bộ chiến lược chỉ có 4 tham số dễ hiểu và điều chỉnh. Các tham số chính nó cũng khá ổn định, không cần tối ưu hóa thường xuyên.

Phân tích rủi ro

Rủi ro lớn nhất của chiến lược giao dịch rùa là không thể theo dõi xu hướng dài hạn. Nó có thể bỏ lỡ cơ hội nhập cảnh khi xu hướng bắt đầu hình thành. Ngoài ra, trong môi trường dao động giá hỗn loạn, chiến lược sẽ kích hoạt các bước vào và ra thường xuyên, làm tăng chi phí giao dịch và rủi ro trượt.

Ngoài ra, các cài đặt tham số cố định có thể hoạt động rất khác nhau giữa các sản phẩm và chế độ thị trường, đòi hỏi phải điều chỉnh thủ công dựa trên kinh nghiệm.

Cơ hội gia tăng

Chiến lược thương mại rùa có thể được cải thiện theo nhiều cách:

  1. Thêm khả năng thích nghi vào các tham số N và N/2 dựa trên biến động thị trường và tần số tín hiệu để làm cho hệ thống mạnh mẽ hơn trên các kịch bản.

  2. Bao gồm các quy tắc phát hiện xu hướng trước khi tham gia để tránh các bước vào sai hướng trong các thị trường hỗn loạn.

  3. Sử dụng phương pháp đa khung thời gian để xác nhận xu hướng trong các giai đoạn cao hơn và thực hiện giao dịch trong các giai đoạn thấp hơn.

  4. Tối ưu hóa các quy tắc dừng lỗ với các điểm dừng sau hoặc các điểm dừng dựa trên thời gian để giảm giảm.

Kết luận

Chiến lược giao dịch rùa theo dõi hiệu quả xu hướng bằng một hệ thống đột phá đơn giản. Kiểm soát rủi ro là điểm mạnh lớn nhất của nó, nhờ vào việc dừng nhanh và định hình kích thước vị trí phân số cố định. Đồng thời, chúng ta thấy nhiều chiều mà theo đó chiến lược có thể được mở rộng và tối ưu hóa để phù hợp với nhiều công cụ và điều kiện thị trường hơn. Nhìn chung, nó cung cấp một cách kiểm soát rủi ro để nắm bắt xu hướng giá là một tham chiếu quan trọng cho giao dịch định lượng.


/*backtest
start: 2022-12-24 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//oringinally coded by tmr0, modified by timchep
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("Turtles", shorttitle = "Turtles", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100)
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(12, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

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

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////

shortingEnabled = input(title="Enable Shorting?", type=bool, defval=true)

enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)

fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

enterL1 = high > fastL[1] 
exitL1 = low <= fastLC[1] 
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]

enterL2 = high > slowL[1] 
exitL2 = low <= slowLC[1] 
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]


if testPeriod()
    strategy.entry("fast L", strategy.long, when = enterL1) 
    
    if not enterL1
        strategy.entry("slow L", strategy.long, when = enterL2)
        
    strategy.close("fast L", when = exitL1)
    strategy.close("slow L", when = exitL2)

if shortingEnabled and testPeriod()
    strategy.entry("fast S", strategy.short, when = enterS1)
    if not enterS2
        strategy.entry("slow S", strategy.short, when = enterS2)
        
    strategy.close("fast S", when = exitS1)
    strategy.close("slow S", when = exitS2)

Thêm nữa