Chiến lược dừng lỗ theo chỉ báo Fisherman


Ngày tạo: 2024-02-02 14:57:33 sửa đổi lần cuối: 2024-02-02 14:57:33
sao chép: 0 Số nhấp chuột: 717
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ theo chỉ báo Fisherman

Tổng quan

Phương pháp dừng lỗ di động của Fisherman là một chiến lược giao dịch định lượng kết hợp các chỉ số Fisherman và các cơ chế dừng lỗ di động. Chiến lược này sử dụng các chỉ số Fisherman để tạo ra tín hiệu mua và bán, đồng thời thiết lập theo dõi dừng lỗ để khóa lợi nhuận và kiếm lợi nhuận lớn hơn trong khi bảo vệ lợi nhuận.

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

  1. Nhập phạm vi ngày, giới hạn khoảng thời gian của đếm ngược hoặc đĩa cứng
  2. Nhập tham số cho chỉ số ngư dân, mặc định là 2 chu kỳ
  3. Tỷ lệ Stop Loss Input, mặc định là 5% Stop Loss, 2% Stop Loss
  4. Tính toán đường chính và đường tín hiệu của chỉ số ngư dân
  5. Một tín hiệu mua được tạo ra khi bạn đi qua dây tín hiệu trên đường chính.
  6. Thiết lập theo dõi dừng lỗ, dừng lỗ khi giá giảm 2% sau khi vào vị trí dài
  7. Chấm dứt giá tăng hơn 5%

Phân tích lợi thế

  1. Chỉ số ngư dân dễ dàng đánh giá xu hướng, tín hiệu mua chính xác
  2. Cơ chế theo dõi dừng lỗ có thể khóa phần lớn lợi nhuận trong khi tránh vượt quá điểm dừng lỗ được thiết lập
  3. Các tham số có thể tùy chỉnh để thích ứng với các môi trường thị trường khác nhau
  4. Dễ sử dụng và dễ hiểu

Phân tích rủi ro

  1. Thiết lập tham số không đúng cách có thể dẫn đến giao dịch quá mạnh, nên kiểm tra cẩn thận
  2. Điểm dừng quá lớn có thể gây ảnh hưởng đến Outiliers, dẫn đến tổn thất vượt quá dự kiến
  3. Điểm dừng quá nhỏ có thể dẫn đến lợi nhuận bị cắt quá sớm và ảnh hưởng đến khả năng lợi nhuận
  4. Các tham số thích hợp nên được xác định theo các giống khác nhau

Các tham số có thể được tối ưu hóa bằng cách điều chỉnh tỷ lệ dừng lỗ, thử nghiệm các kết hợp các tham số khác nhau; kết hợp với các chỉ số khác để lọc tín hiệu; thiết lập các quy tắc quản lý vị trí để kiểm soát rủi ro đơn lẻ.

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

  1. Tối ưu hóa các tham số cho chỉ số ngư dân, kiểm tra tác động của các tham số khác nhau đối với chiến lược
  2. Kết hợp với các chỉ số khác như MACD, KD và các tín hiệu lọc để cải thiện chất lượng tín hiệu
  3. Thêm các điều kiện phán đoán trước khi mở kho, chẳng hạn như phá vỡ đường ray của Brin
  4. Thêm mô-đun quản lý vị trí để kiểm soát rủi ro của vị trí đơn lẻ
  5. Phương pháp tối ưu hóa dừng di chuyển, chẳng hạn như trơn tru dừng di chuyển, Chandelier Exit

Tóm tắt

Chiến lược dừng lỗ di động của chỉ số ngư dân tích hợp phán đoán xu hướng và quản lý dừng lỗ, có thể phù hợp với hầu hết các giống thông qua tối ưu hóa tham số, kết hợp chỉ số và cải thiện phương pháp dừng lỗ, để có được lợi nhuận tốt hơn trong trường hợp ngăn chặn thiệt hại vượt quá khả năng chịu đựng, đáng để khám phá và thực hành.

Mã nguồn chiến lược
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)