Chiến lược này dựa trên một hệ thống đường thẳng di động cơ bản, được tối ưu hóa cho thời điểm nhập cảnh cụ thể sau khi phát tín hiệu.
Lý luận chính là:
Tính trung bình di chuyển của một chu kỳ nhất định (ví dụ 20 ngày)
Khi giá vượt qua đường trung bình, nó tạo ra một tín hiệu nhiều, và khi đi xuống, nó tạo ra một tín hiệu trống.
Khi nhận được tín hiệu, bạn không đi ngay, mà chờ đợi giá tốt hơn.
Nếu có giá tốt hơn trong một số ngày nhất định (ví dụ: 3 ngày), bạn có thể tham gia.
Nếu không, hãy vào vào ngày 5 với giá đóng cửa để tránh bỏ lỡ.
Chiến lược này không vội vàng vào thị trường sau khi đưa ra tín hiệu, nhưng tìm kiếm cơ hội để tái tạo xu hướng sau khi cân bằng, do đó có thể thiết lập vị trí với giá tốt hơn.
Tối ưu hóa điểm vào, giành điểm vào tốt hơn
Thiết lập thời gian chờ tối đa để tránh bị bỏ lỡ
Quy tắc đơn giản, rõ ràng và dễ thực hiện
Thời gian chờ đợi và điểm mốc cần được kiểm tra và tối ưu hóa
Có thể bỏ lỡ một số cơ hội trong dòng ngắn
Cần chú ý đến thời gian và giá cả
Chiến lược này được tối ưu hóa thông qua việc nhập cảnh đơn giản, đảm bảo không bỏ lỡ xu hướng để có được điểm vào cửa tốt hơn. Tuy nhiên, tối ưu hóa thời gian chờ và điều kiện nhập cảnh rất quan trọng đối với hiệu quả của chiến lược.
/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 1h
basePeriod: 15m
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/
// © dongyun
//@version=4
strategy("等待一个更好的入场机会", overlay=true)
period = input(20,'')
maxwait = input(3,'')
threshold = input(0.01,'')
signal = 0
trend = 0.0
newtrend = 0.0
wait = 0.0
initialentry = 0.0
trend := sma(close,period)
signal := nz(signal[1])
if trend > nz(trend[1])
signal := 1
else
if trend < nz(trend[1])
signal := -1
wait := nz(wait[1])
initialentry := nz(initialentry[1])
if signal != signal[1]
if strategy.position_size > 0
strategy.close('long',comment='trend sell')
signal := -1
else
if strategy.position_size < 0
strategy.close('short',comment='trend buy')
signal := 1
wait := 0
initialentry := close
else
if signal != 0 and strategy.position_size == 0
wait := wait + 1
// test for better entry
if strategy.position_size == 0
if wait >= maxwait
if signal > 0
strategy.entry('long',strategy.long, comment='maxtime Long')
else
if signal < 0
strategy.entry('short',strategy.short, comment='maxtime Short')
else
if signal > 0 and close < initialentry - threshold
strategy.entry('long',strategy.long, comment='delayed Long')
else
if signal < 0 and close > initialentry + threshold
strategy.entry('short',strategy.short, comment='delayed short')