Chiến lược tối ưu hóa mục nhập trung bình động


Ngày tạo: 2023-09-14 16:52:30 sửa đổi lần cuối: 2023-09-14 16:52:30
sao chép: 3 Số nhấp chuột: 618
1
tập trung vào
1617
Người theo dõi

Nguyên tắc chiến lược

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à:

  1. Tính trung bình di chuyển của một chu kỳ nhất định (ví dụ 20 ngày)

  2. 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.

  3. Khi nhận được tín hiệu, bạn không đi ngay, mà chờ đợi giá tốt hơn.

  4. 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.

  5. 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.

Lợi thế chiến lược

  • 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

Rủi ro chiến lược

  • 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ả

Tóm tắt

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.

Mã nguồn 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')