
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.
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.
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.
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.
/*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)
//--------------------------------------------------------------