
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 động lực phá vỡ. Nó được phát triển bởi nhà giao dịch nổi tiếng Richard Dennis vào những năm 1980 để xác minh xem các nhà giao dịch có thể được đào tạo thông qua các quy tắc thay vì tự nhiên hay không. Tâm lý cốt lõi của chiến lược là theo dõi giá phá vỡ và theo dõi xu hướng, đồng thời tuân thủ nghiêm ngặt các nguyên tắc quản lý tiền để hạn chế rủi ro đi xuống.
Chiến lược giao dịch biển sử dụng hai tham số N và N / 2 để xây dựng kênh. Cụ thể, tính toán giá cao nhất và giá thấp nhất trong N ngày và N / 2 ngày gần đây nhất. Xây dựng vị trí nhiều đầu khi giá vượt qua kênh N ngày, đóng cửa khi giá giảm xuống kênh N / 2 ngày; Xây dựng vị trí không đầu khi giá giảm xuống kênh N ngày, đóng cửa khi giá vượt qua kênh N / 2 ngày.
Trong mã, N tương ứngenter_slow, N/2 tương ứngenter_fast◦ Giá cao nhất trong 55 ngày và 20 ngày gần đây.slowLVàfastLGiá thấp nhấtlowest(slowS和fastS)。当价格超过55天通道时做多(enterL2),当价格跌破20天通道时平多仓(exitL1);当价格跌破55天通道时做空(enterS2),当价格超过20天通道时平空仓(exitS1`)。
Ưu điểm lớn nhất của chiến lược giao dịch biển là kiểm soát rủi ro. Bằng cách thiết lập vị trí khi giá phá vỡ, dừng lại nhanh chóng khi giá rút lại, bạn có thể kiểm soát hiệu quả tổn thất đơn lẻ. Đồng thời áp dụng nguyên tắc quản lý vốn cổ phần cố định, giảm thiểu 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ố cũng tương đối ổn định, không cần tối ưu hóa thường xuyên.
Rủi ro lớn nhất của chiến lược giao dịch biển là không thể theo dõi xu hướng dài hạn. Khi xu hướng bắt đầu hình thành, chiến lược này có thể bỏ lỡ cơ hội vào. Ngoài ra, trong xu hướng biến động giá, chiến lược này thường xuyên mở lỗ hẹp, tăng chi phí giao dịch và rủi ro trượt.
Ngoài ra, các thiết lập tham số cố định cũng có thể có hiệu quả khác nhau trong các giống và môi trường thị trường khác nhau. Điều này đòi hỏi phải điều chỉnh bằng kinh nghiệm nhân tạo.
Chiến lược giao dịch cá hồi có thể được tối ưu hóa theo các khía cạnh sau:
Thêm chức năng tự điều chỉnh tham số. Cho phép tham số N, N / 2 tự động điều chỉnh theo biến động thị trường và tần số tín hiệu, thích ứng với nhiều tình huống hơn.
Thêm quy tắc đánh giá xu hướng. Chánh định hướng xu hướng trước khi tham gia, tránh tham gia sai lầm trong hoạt động biến động giá.
Kết hợp nhiều chiến lược unity thời gian. Xác định hướng xu hướng trong thời gian cao hơn và tham gia vào thời gian thấp hơn.
Tối ưu hóa chiến lược dừng lỗ. Trailing Stop or Time Stop, giảm rút lui.
Chiến lược giao dịch hải cẩu thực hiện theo dõi xu hướng hiệu quả thông qua hệ thống đột phá đơn giản. Kiểm soát rủi ro là ưu điểm lớn nhất của chiến lược, nhờ vào việc dừng lỗ nhanh và quản lý quỹ cố định. Đồng thời, chúng tôi cũng thấy chiến lược có thể mở rộng và tối ưu hóa từ nhiều chiều để thích ứng với nhiều giống và môi trường thị trường hơn.
/*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)