Chiến lược tham khảo xu hướng tăng theo cách đột phá định lượng

Tác giả:ChaoZhang, Ngày: 2024-02-21 10:58:01
Tags:

img

Tổng quan

Chiến lược này là một chiến lược nắm giữ dài hạn dựa trên việc xác định hướng xu hướng với các đường trung bình động đơn giản và hình thành các tín hiệu đột phá với các đường kháng cự và hỗ trợ. Bằng cách tính toán các điểm giá Pivot High và Pivot Low, vẽ các đường kháng cự và hỗ trợ, đi dài khi giá vượt qua đường kháng cự và đóng các vị trí khi giá vượt qua đường hỗ trợ. Chiến lược này phù hợp cho các cổ phiếu có xu hướng rõ ràng và có thể có tỷ lệ rủi ro-lợi nhuận tốt.

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

  1. Tính toán đường trung bình di chuyển đơn giản 20 ngày như đường cơ sở để xác định xu hướng
  2. Tính toán các điểm Pivot High và Pivot Low dựa trên các tham số đầu vào của người dùng
  3. Chụp các đường kháng cự và hỗ trợ dựa trên các điểm Pivot High và Pivot Low
  4. Đi dài khi giá đóng cửa cao hơn đường kháng cự
  5. Đóng các vị trí khi đường hỗ trợ vượt qua dưới đường kháng cự

Chiến lược này sử dụng các đường trung bình động đơn giản để xác định hướng xu hướng tổng thể, và sau đó sử dụng các bước đột phá điểm chính để tạo ra các tín hiệu giao dịch, đó là một chiến lược đột phá điển hình.

Phân tích lợi thế

  1. Chiến lược có đủ cơ hội và phù hợp với các cổ phiếu biến động cao, giúp dễ dàng nắm bắt xu hướng
  2. Kiểm soát rủi ro tốt cho các vị trí dài, tỷ lệ rủi ro-lợi nhuận cao
  3. Sử dụng tín hiệu đột phá để tránh nguy cơ đột phá sai
  4. Các tham số có thể tùy chỉnh, khả năng thích nghi cao

Phân tích rủi ro

  1. Tùy thuộc vào tối ưu hóa tham số, tham số không phù hợp sẽ làm tăng xác suất của breakouts sai
  2. Sự chậm trễ trong tín hiệu đột phá, có thể bỏ lỡ một số cơ hội
  3. Dễ bị ngăn chặn trong thị trường biến động
  4. Không điều chỉnh đường hỗ trợ kịp thời có thể dẫn đến tổn thất

Rủi ro có thể được giảm bằng cách tối ưu hóa các tham số thông qua giao dịch trực tiếp và kết hợp các chiến lược dừng lỗ / lấy lợi nhuận.

Hướng dẫn tối ưu hóa

  1. Tối ưu hóa các thông số thời gian trung bình động
  2. Tối ưu hóa các thông số đường kháng và hỗ trợ
  3. Thêm các chiến lược dừng lỗ / lấy lợi nhuận
  4. Tăng cơ chế xác nhận đột phá
  5. Các tín hiệu lọc với khối lượng giao dịch và các chỉ số khác

Tóm lại

Nhìn chung, chiến lược này là một chiến lược breakout điển hình dựa trên tối ưu hóa tham số và thanh khoản, phù hợp với các nhà giao dịch xu hướng. Là một khung tham chiếu, nó có thể được mở rộng theo nhu cầu thực tế bằng cách thêm các cơ chế như dừng lỗ / lấy lợi nhuận, lọc tín hiệu để giảm rủi ro và cải thiện sự ổn định.


/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 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/
// © CheatCode1

//@version=5
strategy("Quantitative Trend Strategy- Uptrend long", 'Steady Uptrend Strategy', overlay=true, initial_capital = 1500, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity)


length = input.int(20, minval=1)
src = input(close, title="Source")
basis = ta.sma(src, length)
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)

inp1 = input.int(46, 'LookbackLeft')
inp2 = input.int(32, 'LookbackRight')

l1 = ta.pivothigh(close, inp1, inp2)
S1 = ta.pivotlow(close, inp1, inp2)

// plot(l1, 'Pivothigh', color.red, 1)
// // plot(S1, 'Pivot Low', color.red)

l1V = ta.valuewhen(l1, close, 0)
S1V = ta.valuewhen(S1, close, 0)

Plotl1 = not na(l1) ? l1V : na
PlotS1 = not na(S1) ? S1V : na

plot(Plotl1, 'Resistance', color.green, 1, plot.style_stepline, true)
plot(PlotS1, 'Support', color.red, 1, plot.style_stepline, true)

Priceforlong = close > l1V ? true : na
Priceforshort = close < S1V ? true : na

plotshape(Priceforlong ? high : na, 'p', shape.arrowup, location.abovebar, color.green, size = size.small)
plotshape(Priceforshort ? low : na, 's', shape.arrowdown, location.belowbar, color.red, size = size.small)

vol = volume
volma = ta.sma(vol, 20)

Plotl1C = ta.valuewhen(na(Plotl1), l1V, 0)
PlotS1C = ta.valuewhen(na(PlotS1), S1V, 0)
//Strategy Execution
volc = volume > volma 

Lc1 = Priceforlong 

Sc1 = Priceforshort

sL = Plotl1 < PlotS1 ? close : na
sS = PlotS1 > Plotl1 ? close : na


if Lc1 
    strategy.entry('Long', strategy.long)
// if Sc1 and C2
//     strategy.entry('Short', strategy.short)

if Priceforshort
    strategy.cancel('Long')
if Priceforlong   
    strategy.cancel('Short')


// Stp1 = ta.crossover(k, d)
// Ltp1 = ta.crossunder(k, d)
// Ltp = d > 70  ? Ltp1 : na
// Stp = d < 30  ? Stp1 : na


if strategy.openprofit >= 0 and sL
    strategy.close('Long')
if strategy.openprofit >= 0 and sS
    strategy.close('Short')
takeP = input.float(2, title='Take Profit') / 100
stopL = input.float(1.75, title='Stop Loss') / 100


// // Pre Directionality

Stop_L = strategy.position_avg_price * (1 - stopL)

Stop_S = strategy.position_avg_price * (1 + stopL)

Take_S= strategy.position_avg_price * (1 - takeP)

Take_L = strategy.position_avg_price * (1 + takeP)
     
// sL = Plotl1 < PlotS1 ? close : na
// sS = PlotS1 < Plotl1 ? close : na
     
// //Post Excecution
if strategy.position_size > 0 and not (Lc1)
    strategy.exit("Close Long", stop = Stop_L, limit = Take_L)

if strategy.position_size < 0 and not (Sc1)
    strategy.exit("Close Short", stop = Stop_S, limit = Take_S)

Thêm nữa