
Chiến lược giao dịch rùa của Richard (tiếng Anh: Richard’s Turtle Trading Strategy) là một chiến lược mua và bán dựa trên kỹ thuật giao dịch rùa của Richard Dennis. Chiến lược này sử dụng phá vỡ giá để thực hiện giao dịch theo xu hướng.
Lý luận cốt lõi của chiến lược giao dịch Richard’s Turtle dựa trên việc theo dõi xu hướng để thực hiện đột phá giá. Cụ thể, chiến lược đồng thời liên tục theo dõi giá cao nhất trong vòng 20 ngày._20_day_highest) và giá trị tối thiểu ((_20_day_lowest). Khi giá đóng cửa hiện tại vượt quá mức cao nhất trong 20 ngày, cho thấy giá đã phá vỡ lên, tại thời điểm này phát đi nhiều tín hiệu. Khi giá đóng cửa hiện tại thấp hơn mức thấp nhất trong 20 ngày, cho thấy giá đã phá vỡ xuống, tại thời điểm này phát đi tín hiệu trống.
Sau khi vào vị trí, chiến lược sẽ sử dụng chiều rộng thực trung bình ((ATR) để tính toán điểm dừng. Đồng thời, nó cũng sẽ theo dõi giá cao nhất và giá thấp nhất trong 10 ngày, thực hiện điểm dừng trượt.
Chiến lược giao dịch của Richard Turtle có những lợi thế sau:
Chiến lược giao dịch của Richard Turtle cũng có một số rủi ro:
Để giảm những rủi ro này, bạn có thể xem xét tối ưu hóa điều kiện nhập cảnh, sử dụng nhiều chỉ số dự đoán xu hướng; điều chỉnh thuật toán dừng lỗ, giảm tần suất dừng lỗ.
Các chiến lược giao dịch của Richard Turtle có thể được tối ưu hóa theo các hướng sau:
Chiến lược giao dịch Richard Seagull là một chiến lược theo dõi đột phá rất điển hình. Nó rất đơn giản, dễ sử dụng, phù hợp cho người mới bắt đầu và là một ví dụ về giao dịch định lượng. Chiến lược này có thể được tối ưu hóa qua nhiều khía cạnh, giảm rủi ro giao dịch và tăng lợi nhuận.
/*backtest
start: 2023-02-05 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
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/
// © melodyera0822
//@version=4
strategy("Richard Strategy", overlay=true)
// User input
variable_for_stoploss = input(4,title="stop loss var")
lenght = input(20,title="lenght")
// high_low
_20_day_highest = highest(nz(close[1]), lenght)
_20_day_lowest = lowest(nz(close[1]), lenght)
_10_day_low = lowest(nz(close[1]), lenght/2)
_10_day_high = highest(nz(close[1]), lenght/2)
//indicators
atr20 = atr(20)
ema_atr20 = ema(atr20,20)
//vars
var traded = "false"
var buy_sell = "none"
var buyExit = false
var sellExit = false
var stoploss = 0
buyCon = close > _20_day_highest and traded == "false"
plotshape(buyCon,style = shape.triangleup,location = location.belowbar, color = color.green )
if (buyCon)
strategy.entry("long", strategy.long, when = buyCon)
traded := "true"
buy_sell := "buy"
stoploss := round(close - variable_for_stoploss * ema_atr20)
sellCon = close < _20_day_lowest and traded == "false"
plotshape(sellCon,style = shape.triangledown, color = color.red )
if (sellCon)
strategy.entry("short", strategy.short)
traded := "true"
buy_sell := "sell"
stoploss := round(close - variable_for_stoploss * ema_atr20)
if traded == "true"
if buy_sell == "buy" and ((close<stoploss)or(close<_10_day_low))
strategy.close("long")
buyExit := true
traded := "false"
if buy_sell == "sell" and ((close>stoploss)or(close>_10_day_high))
strategy.close("short")
sellExit := true
traded := "false"
plotshape(buyExit,style = shape.triangleup,location = location.belowbar, color = color.yellow )
buyExit := false
plotshape(sellExit,style = shape.triangledown, color = color.yellow )
sellExit := false