Chiến lược DCA đảo ngược cuối tháng


Ngày tạo: 2023-10-08 16:12:29 sửa đổi lần cuối: 2023-10-08 16:12:29
sao chép: 1 Số nhấp chuột: 734
1
tập trung vào
1617
Người theo dõi

Tổng quan

Mục đích của chiến lược này là để xác định điểm kết thúc của xu hướng giảm ngắn hạn của tài sản, tại điểm đó cố định đầu tư một số tiền để mua tài sản. Như vậy, bạn có thể cố định đầu tư với giá chi phí thấp hơn sau khi tài sản bắt đầu đảo ngược.

Nguyên tắc

Chiến lược này hoạt động dựa trên khung thời gian hàng tháng. Mỗi tháng có 240 đường K 1 giờ, được sử dụng để đánh giá thời gian thay đổi xu hướng.

Cụ thể, chiến lược này được thực hiện bằng cách tính toán EMA của đường thẳng EMA và đường dài EMA._CD và EMA_Đường tín hiệu của CD, khi đi qua đường tín hiệu trên đường nhanh, xác định xu hướng giảm ngắn hạn đã kết thúc và phát tín hiệu mua.

Sau khi tín hiệu mua được phát ra, chiến lược sẽ thanh toán vào cuối tháng đó. Sau đó lặp lại quá trình này vào tháng thứ hai, mua thường xuyên và giữ trong một tháng.

Điều này cho phép chúng ta giảm bớt sự suy giảm trong thời gian ngắn và cố định đầu tư

Ưu điểm

Lợi thế lớn nhất của chiến lược này là có thể lọc các biến động, chỉ mua khi xu hướng thay đổi, do đó, cố định đầu tư với giá tốt hơn.

Ngoài ra, việc sử dụng EMA để đánh giá điểm đảo ngược xu hướng có thể ổn định và chính xác hơn so với việc chỉ dựa trên sự đảo ngược đường K. EMA có thể làm giảm tác động của tiếng ồn thị trường ngắn hạn đối với thời gian mua.

Cuối cùng, thiết lập dừng lỗ vào cuối tháng có thể khóa kết quả đầu tư hàng tháng, hạn chế mức lỗ tối đa trong một tháng.

Rủi ro

Rủi ro lớn nhất của chiến lược này là giá tiếp tục giảm sau khi mua, dẫn đến tổn thất dừng lỗ vào cuối tháng. Điều này thường là do sai lầm phán đoán đảo ngược.

Bạn có thể tối ưu hóa phán đoán bằng cách điều chỉnh các tham số chu kỳ EMA hoặc kết hợp với các chỉ số khác như RSI để xác nhận tín hiệu đảo ngược.

Một rủi ro khác là thiết lập điểm dừng. Nếu điểm dừng quá nhỏ, nó dễ bị dừng bởi biến động ngắn hạn, và nếu nó quá lớn, nó sẽ không giới hạn tổn thất. Cần thử nghiệm các điểm dừng khác nhau để tìm các tham số tối ưu.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các tham số EMA chu kỳ để tìm ra sự kết hợp tham số tối ưu để xác định xu hướng đảo ngược

  2. Thêm các bộ lọc cho các chỉ số khác, chẳng hạn như RSI, để xác nhận tín hiệu đảo ngược

  3. Kiểm tra các điểm dừng khác nhau để tìm vị trí dừng tối ưu để hạn chế tổn thất tối đa và không bị mạo hiểm

  4. Có thể xem xét thêm lệnh dừng di động trên cơ sở dừng, điều chỉnh vị trí dừng theo giá trong thời gian thực

  5. Có thể thử nghiệm các chu kỳ thời gian khác nhau, chẳng hạn như hoạt động đường nét, đường tròn, để xem chiến lược nào hoạt động tốt nhất

Tóm tắt

Kế hoạch chiến lược này rõ ràng và đơn giản, sử dụng chỉ số EMA để đánh giá xu hướng ngắn hạn và quyết định đầu tư vào cuối thời điểm đảo chiều, có thể lọc hiệu quả thị trường xung đột, đầu tư với giá thấp hơn. Không gian tối ưu hóa chiến lược chủ yếu là tối ưu hóa tham số và điều chỉnh chiến lược dừng lỗ. Nhìn chung, chiến lược này là một chiến lược tốt cho việc sắp xếp tài sản cố định và đáng để kiểm tra và tối ưu hóa hơn nữa.

Mã nguồn chiến lược
/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 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/
// © BHD_Trade_Bot

// @version=5
// strategy(
//  shorttitle            = 'DCA After Downtrend',
//  title                 = 'DCA After Downtrend (by BHD_Trade_Bot)',
//  overlay               = true,
//  calc_on_every_tick    = true,
//  calc_on_order_fills   = true,
//  use_bar_magnifier     = true,
//  pyramiding            = 100,
//  initial_capital       = 0,
//  default_qty_type      = strategy.cash,
//  default_qty_value     = 1000,
//  commission_type       = strategy.commission.percent,
//  commission_value      = 0.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2017)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time   = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time     = timestamp(end_year, end_month, end_day, 23, 59)

window() => true



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 20)
hist = emacd - emacd_signal

// Count n candles after x long entries
var int nPastCandles = 0
var int entryNumber = 0
nPastCandles := nPastCandles + 1



// ENTRY CONDITIONS

// 8 hours per day => 240 hours per month
entry_condition1 = nPastCandles > entryNumber * 240

// End of downtrend
entry_condition2 = ta.crossover(emacd, emacd_signal)

ENTRY_CONDITIONS = entry_condition1 and entry_condition2


if ENTRY_CONDITIONS and window()
    entryNumber := entryNumber + 1
    entryId = 'Long ' + str.tostring(entryNumber)
    strategy.entry(entryId, strategy.long)
    
    

// CLOSE CONDITIONS

// Last bar
CLOSE_CONDITIONS = barstate.islast

if CLOSE_CONDITIONS
    strategy.close_all()


    
// Draw
plot(ema50, color=color.orange, linewidth=3)
plot(ema200, color=entry_condition1 ? color.green : color.red, linewidth=3)