Chiến lược nắm bắt xu hướng với sự đột phá đường ngang

Tác giả:ChaoZhang, Ngày: 2024-04-26 15:22:06
Tags:

img

Tổng quan

Chiến lược này sử dụng đường ngang như mức hỗ trợ và kháng cự, và tạo ra tín hiệu giao dịch khi giá vượt qua các đường này. Ý tưởng chính là: đầu tiên, vẽ đường ngang dựa trên một số điều kiện nhất định, mua dài khi giá vượt qua đường, và đóng các vị trí khi giá vượt qua đường. Đồng thời, có các điều kiện tương ứng để tạo ra đường ngang, chẳng hạn như giá thấp của nến trước đó lớn hơn giá đóng hiện tại.

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

  1. Dựa trên điều kiện là giá thấp của nến trước đó lớn hơn giá đóng hiện tại, vẽ một đường ngang dài 20 ở giá thấp của nến trước, và luôn luôn chỉ giữ 10 đường mới nhất.
  2. Nếu giá hiện tại vượt qua đường ngang gần đây nhất, đóng tất cả các vị trí dài trước đó và mở các vị trí dài mới.
  3. Khi vẽ một đường ngang mới, nếu có một vị trí, đóng nó trước và sau đó mở một vị trí dài mới.

Ưu điểm chiến lược

  1. Logic chiến lược đơn giản và rõ ràng, dễ hiểu và thực hiện.
  2. Bằng cách sử dụng sự đột phá của mức hỗ trợ và kháng cự đường ngang để tạo ra tín hiệu, nó có thể nắm bắt xu hướng tốt.
  3. Khi một đường ngang mới được tạo ra, nó sẽ đầu tiên đóng các vị trí trước đó và sau đó mở các vị trí mới, có thể làm giảm rủi ro mà các vị trí trước đó có thể mang lại.
  4. Chiến lược có thể được tối ưu hóa bằng cách điều chỉnh chiều dài và số lượng đường ngang.

Rủi ro chiến lược

  1. Đối với các thị trường dao động, các bước đột phá đường ngang thường xuyên có thể dẫn đến giao dịch quá mức, dẫn đến trượt lớn và phí giao dịch.
  2. Định nghĩa đường ngang của chiến lược tương đối đơn giản và thiếu sự xác minh từ các chỉ số khác, có thể tạo ra một số tín hiệu sai.
  3. Nó chỉ đi dài và không đi ngắn, và không thể tận dụng đầy đủ xu hướng giảm.

Hướng dẫn tối ưu hóa chiến lược

  1. Các chỉ số khác có thể được kết hợp để xác nhận tính hợp lệ của các đường ngang, chẳng hạn như thay đổi khối lượng giao dịch, để giảm tín hiệu sai.
  2. Đối với thị trường dao động, tần suất giao dịch có thể được giảm bằng cách tăng cường độ đột phá đường ngang.
  3. Thêm một cơ chế bán ngắn để kiếm lợi từ xu hướng giảm.
  4. Xem xét điều chỉnh năng động chiều dài và số lượng đường ngang để thích nghi với các điều kiện thị trường khác nhau.

Tóm lại

Chiến lược này sử dụng đường ngang như là các mức hỗ trợ và kháng cự quan trọng, và tạo ra tín hiệu giao dịch thông qua đột phá đường. Ưu điểm là logic đơn giản và dễ thực hiện, và nó có thể nắm bắt xu hướng tốt. Tuy nhiên, nhược điểm là nó có thể giao dịch quá mức, tạo ra tín hiệu sai, và chỉ có thể đi dài nhưng không ngắn. Trong tương lai, nó có thể được tối ưu hóa và cải thiện bằng cách kết hợp các chỉ số khác, giảm tần suất giao dịch, thêm cơ chế bán ngắn và điều chỉnh các tham số một cách năng động.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Traderxprox

//@version=5
strategy("Alarm Trader_ALL", overlay=true)

// Yatay çizgi oluşum
yatayc = low[1] > close[0]

if yatayc
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")


//YATAY ÇİZGİ
int cizgilen = input.int(20, "Çizgi uzunluğu?", group = "Yatay Çizgi Ayarları")
var array<line> lines = array.new<line>()
int numberOfLines = input.int(10, "Son Kaç Çizgi?", 0, group = "Yatay Çizgi Ayarları")
kural22 = low[1] > close[0]
// if kural22
//     newLine = line.new(bar_index-2, low[1], bar_index+cizgilen, low[1] ,color=color.red, width=1, style=line.style_solid)
//     // Push the `newLine` into the `lines` array.
//     lines.push(newLine)
//     // Delete the oldest line when the size of the array exceeds the specified `numberOfLines`.
//     if array.size(lines) > numberOfLines
//         line.delete(lines.shift())
    
// Alarm kırılım için koşul

var float lastLinePrice = na
if not na(close) and array.size(lines) > 0 
    lastLinePrice := line.get_price(array.get(lines, array.size(lines) - 1), bar_index)
if open < lastLinePrice and close > lastLinePrice
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")



Thêm nữa