Chiến lược dừng lỗ và dừng lãi được xác định dựa trên đường trung bình động và đường trung bình động


Ngày tạo: 2023-12-21 12:26:18 sửa đổi lần cuối: 2023-12-21 12:26:18
sao chép: 0 Số nhấp chuột: 625
1
tập trung vào
1623
Người theo dõi

Chiến lược dừng lỗ và dừng lãi được xác định dựa trên đường trung bình động và đường trung bình động

Tổng quan

Chiến lược này dựa trên đường trung bình và đường trung bình di chuyển để mở vị trí và sử dụng phương pháp phá giá để thiết lập dừng lỗ. Các đặc điểm chính của nó là:

  1. Dung động thị trường bằng hệ thống lọc đường trung bình
  2. Sử dụng Stop Loss Di động để quản lý tài chính động
  3. Có thể cấu hình lọc vị trí để tránh mở vị trí một bên

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

Chiến lược này bao gồm bốn phần chính:

  1. Hệ thống đồng tuyến

Sử dụng các đường giao thoa vàng và các đường giao thoa chết để đánh giá xu hướng và lọc các thị trường biến động.

  1. Hạn chế di chuyển

Sử dụng một tỷ lệ di động của Stop Loss để khóa lợi nhuận và kiểm soát rủi ro, thực hiện quản lý động của tiền.

  1. Bộ lọc vị trí

Có thể cấu hình để mở lọc vị trí. Nếu vị trí trước là nhiều đầu, tín hiệu tiếp theo phải là đầu trống để mở vị trí, tránh giữ vị trí đơn phương.

  1. ATR dừng

Sử dụng ATR để giới hạn phạm vi dừng tối đa và tránh dừng quá lớn.

Cụ thể, chiến lược này tính toán đường trung bình đầu tiên, và làm nhiều hơn khi đường trung bình xuất hiện và giao thoa vàng. Sau khi vào cửa, thiết lập các đường dừng và đường dừng di chuyển theo tỷ lệ nhất định. Nếu giá chạm vào đường dừng, dừng; Nếu chạm vào đường dừng hoặc vượt quá phạm vi dừng ATR, dừng.

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

Chiến lược này có những lợi thế chính như sau:

  1. Thiết lập mạnh mẽ

Nhiều tham số trong chiến lược có thể được cấu hình, người dùng có thể điều chỉnh theo phong cách giao dịch của mình.

  1. Quản lý tài chính

Sử dụng Mobile Stop Loss và ATR Stop Loss, có thể kiểm soát hiệu quả mức độ dừng một lần và quản lý tài chính tốt.

  1. Thích hợp với thị trường xu hướng

Chiến lược đường trung bình tự nó phù hợp với thị trường có xu hướng mạnh hơn, có thể lọc hiệu quả các biến động.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro, bao gồm:

  1. Sự sai lầm trong đánh giá xu hướng

Đường trung bình tự nó không hoàn hảo trong việc đánh giá các tình huống phức tạp, có thể có trường hợp đánh giá sai. Tại thời điểm này, các tham số đường trung bình nên được điều chỉnh thích hợp, hoặc kết hợp với các chỉ số khác để đánh giá.

  1. Hạn chế quá mạnh mẽ

Hạn chế di chuyển có thể bị từ chối trong rung động, nên kết hợp với tham số ATR để thiết lập phạm vi dừng.

  1. Rủi ro của việc mở một vị trí đơn phương

Mở lọc vị trí có thể ảnh hưởng đến tần suất giao dịch, và giữ vị trí đơn phương trong thời gian dài có thể mang lại rủi ro bổ sung.

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

Các hướng tối ưu hóa chính của chiến lược này là:

  1. Tối ưu hóa tham số

Điều chỉnh các tham số như thời gian đường trung bình, tham số ATR, tỷ lệ dừng lỗ để tối ưu hóa hiệu quả chiến lược.

  1. Thêm chỉ số

Thêm các chỉ số như CMF, OBV để đánh giá dòng tiền và tránh lỗ hổng quá lớn.

  1. Kết hợp các chiến lược khác

Kết hợp các chiến lược như phá vỡ, theo dõi sau khi xu hướng ổn định sẽ có hiệu quả tốt hơn.

Tóm tắt

Nhìn chung, chiến lược này thực hiện quản lý vốn động dựa trên xu hướng bằng cách lọc đồng nhất và dừng lỗ di động. Nó có thể được cấu hình mạnh mẽ, phù hợp với các nhà đầu tư hợp lý để điều chỉnh theo phong cách của riêng mình. Là một chiến lược định lượng phổ biến, nó có nhiều khả năng tối ưu hóa và đáng để nghiên cứu sâu hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-11 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/
// © MGULHANN

//@version=5

//İchimoku Leading Span 2 Hesaplaması ve Girişleri
strategy("Stairs Gain Strategy - MG", overlay=true, margin_long=100, margin_short=100)
laggingSpan2Periods = input.int(52, minval=1, title="Leading Periot")
displacement = input.int(1, minval=1, title="Displacement")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
leadLine2 = donchian(laggingSpan2Periods)
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")

// İşlem Tekrarını Filtrele	 
filtreUygula = input.bool(true,title="Pozisyon Sıra Filtresi Uygula")

//Kar Al / Zarar Durdur Seviyeleri Girişleri
zararDurdurmaYuzde = input.float(1.0, title='Zarar Durdurma %', step=0.01) / 100
karAlmaYuzde = input.float(2.0, title='Kar Alma %', step=0.01) / 100

//ATR Hesaplaması
atrCarpani = input.float(0.3, title="ATR Çarpanı", step= 0.01)
atrDegeri = ta.atr(14) * atrCarpani

//ATR Değer Girişleri
atrbuyukdeger = input.float(0.01, title="ATR Üst Limit", step=0.01)
atrkucukdeger = input.float(0.06, title="ATR Alt Limit", step=0.01)

//Buy ve Sell Şartları
buycross =   ta.crossover(close,leadLine2[displacement-1]) ? atrDegeri > atrbuyukdeger : strategy.position_size == 0
sellcross = ta.crossover(leadLine2[displacement-1],close) ? atrDegeri < atrkucukdeger : strategy.position_size == 0

//KONTROL
var sonPozisyonYonu = 0
//Son kapanan pozisyon long ise degiskenin degerini 1 olarak ata
if strategy.position_size[1] > 0 and strategy.position_size == 0
    sonPozisyonYonu := 1

//Son kapanan pozisyon short ise degiskenin degerini -1 olarak ata
if strategy.position_size[1] < 0 and strategy.position_size == 0
    sonPozisyonYonu := -1
    
//eger filtre uygulama seçiliyse ve son pozisyon yönü long ise 'longFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun long olmasını engelle
longFiltreSonuc = filtreUygula ? sonPozisyonYonu == 1 ? false : true : true

//eger filtre uygulama seçiliyse ve son pozisyon yönü short ise 'shortFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun short olmasını engelle
shortFiltreSonuc = filtreUygula ? sonPozisyonYonu == -1 ? false : true : true

//LONG GİRİŞ
strategy.entry("Long", strategy.long, when=buycross and longFiltreSonuc)
longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
strategy.exit("Long Exit","Long",limit=longKarAl, stop=longZararDurdur)

//SHORT GİRİŞ
strategy.entry("Short", strategy.short, when=sellcross and shortFiltreSonuc)
shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
strategy.exit("Short Exit","Short",limit=shortKarAl, stop=shortZararDurdur)

//Kar Al ve Zarar Durdur Seviyelerinin Grafikte İşaretlenmesi
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.navy, linewidth=2, style=plot.style_linebr, title="İşleme Giriş Seviyesi")
plot(strategy.position_size > 0 ? longKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Long Kar Alım Seviyesi")
plot(strategy.position_size > 0 ? longZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Long Zarar Durdurma Seviyesi")
plot(strategy.position_size < 0 ? shortKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Short Kar Alım Seviyesi")
plot(strategy.position_size < 0 ? shortZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Short Zarar Durdurma Seviyesi")

//plotshape(buycross,size=size.small,style=shape.labelup,location=location.belowbar,color=color.green,text="Al", offset = displacement-1, textcolor=color.white)
//plotshape(sellcross,size=size.small,style=shape.labeldown,location=location.abovebar,color=color.red,text="Sat", offset = displacement-1, textcolor=color.white)