
Chiến lược này được thiết kế dựa trên suy nghĩ mua ở mức thấp của thị trường, bán ở mức cao. Nó sẽ theo dõi giá cao nhất và giá thấp nhất trong một chu kỳ nhất định trong quá khứ, thiết lập vị trí đa đầu khi giá vượt qua mức thấp nhất, và thanh toán khi giá giảm xuống mức cao nhất hoặc đạt đến điều kiện dừng.
Giá thấp nhất ((lowcriteria): Gọi hàm ta.lowest, dựa trên chu kỳ xem lại được thiết lập bởi người dùng ((đường 20 K mặc định) tính giá thấp nhất trong một chu kỳ nhất định trước đây và vẽ đường giá thấp nhất.
Giá cao nhất ((highcriteria): Gọi hàm ta.highest, dựa trên chu kỳ xem lại được thiết lập bởi người dùng ((đường K 10 đường mặc định) tính toán giá cao nhất trong một chu kỳ nhất định trước đây và vẽ đường giá cao nhất.
Khi giá hiện tại phá vỡ đường giá thấp nhất, nó sẽ gửi tín hiệu mua và thiết lập vị trí nhị phân.
Có hai lựa chọn cho các trận đấu:
Hạn chế cố định: Khi giá đạt đến mức dừng được thiết lập (nếu vượt quá giá nhập khẩu 8%), tháo dỡ rủi ro.
Bị phá giá cao nhất: Khi giá giảm xuống đường giá cao nhất, đánh giá xu hướng đảo ngược, dừng lỗ.
Tham gia vào đường trung bình EMA để xác định xu hướng và chỉ mua khi giá cao hơn đường trung bình EMA (được gọi là xu hướng tăng). Bộ lọc này có thể được bật hoặc tắt.
Sử dụng chiến lược mua phá giá thấp, bán phá giá cao, phù hợp với các quy tắc cơ bản của thị trường.
Tăng cơ chế đánh giá xu hướng, tránh thường xuyên mở vị trí khi giá dao động.
Có hai lựa chọn ra sân, một là để đạt được điểm dừng cao và một là để giảm lỗ.
Các tham số có thể tùy chỉnh để phù hợp với môi trường thị trường rộng hơn.
Có rất nhiều cách để tối ưu hóa chiến lược, có thể được cải thiện hơn nữa thông qua điều chỉnh tham số, thiết kế bộ lọc.
Các lệnh dừng cố định không thể điều chỉnh theo xu hướng thực tế của thị trường, có thể dẫn đến việc dừng sớm hoặc dừng quá nhỏ.
Khi vượt qua mức giá bán cao nhất, có thể đã tạo ra tổn thất lớn và không thể kiểm soát thiệt hại một cách hiệu quả.
Đánh giá xu hướng của EMA chỉ dựa trên một chu kỳ lịch sử nhất định, có thể chậm trễ so với sự thay đổi xu hướng thực tế.
Dữ liệu phản hồi không thể đại diện cho tương lai, hiệu quả của ổ cứng là không chắc chắn.
Thêm các phương thức dừng: như dừng di động, dừng chênh lệch cấp, cho phép mức dừng được điều chỉnh theo thời gian thực theo xu hướng thị trường.
Tối ưu hóa tín hiệu ra sân: thay đổi ra sân theo đợt hoặc thêm các chỉ số khác.
Xác định xu hướng tối ưu hóa: Ví dụ như thêm các chỉ số, hoặc phán đoán học máy.
Các tham số tối ưu hóa: Tìm ra các tham số tốt nhất thông qua các phản hồi rộng hơn.
Tăng khả năng ngăn chặn thiệt hại: Kiểm soát thiệt hại linh hoạt và hiệu quả hơn.
Chiến lược này nói chung sử dụng nguyên tắc mua thấp mua cao cổ điển, trong một số điều kiện có thể đạt được hiệu quả tốt hơn. Tuy nhiên, chính chiến lược vẫn có không gian để tối ưu hóa, có thể đạt được thu nhập ổn định hơn thông qua điều chỉnh tham số, tối ưu hóa xuất cảnh, cải thiện cách dừng lỗ. Bài viết này đã phân tích toàn diện về nguyên tắc, lợi thế, rủi ro và hướng tối ưu hóa của chiến lược, nhằm cung cấp ý tưởng chiến lược đồng thời nhắc nhở các nhà đầu tư chú ý đến rủi ro và thận trọng đối với giao dịch định lượng.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 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/
// @version=5
// Author = TradeAutomation
strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110)
// Backtest Date Range Inputs //
StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time')
InDateRange = true
// Strategy Calculations //
lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1]
highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1]
plot(highcriteria, color=color.green)
plot(lowcriteria, color=color.red)
// Take Profit //
TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?")
TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25))))
// Operational Functions //
TrendFilterInput = input(true, "Only buy when price is above EMA trend?")
ema = ta.ema(close, input(200, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)
// Entry & Exit Functions//
if (InDateRange and TrendFilterInput==true)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong)
if (InDateRange and TrendFilterInput==false)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria))
if (InDateRange and TakeProfitInput==true)
strategy.close("Long", when = TakeProfit)
if (InDateRange and TakeProfitInput==false)
strategy.close("Long", when = ta.crossunder(close, highcriteria))
if (not InDateRange)
strategy.close_all()