Chiến lược giao dịch dựa trên Faytterro Estimator


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

Tổng quan

Chiến lược này là chiến lược giao dịch dựa trên tín hiệu giao dịch của Faytterro Estimator. Faytterro Estimator là một chỉ số để đánh giá xu hướng bằng cách tính toán tỷ lệ chênh lệch hội tụ của giá. Chiến lược này kết hợp tín hiệu giao dịch của Faytterro Estimator, cùng với một số điều kiện bổ sung, phát ra các tín hiệu mua và bán có kích thước khác nhau tại các điểm lý tưởng.

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

Trung tâm của chiến lược này là Estimator Faytterro. Cách tính toán của nó là: Đầu tiên tính toán tỷ lệ phân tán hội tụ của giá CR, sau đó xây dựng một hàm thứ cấp, hàm thứ cấp có thể phản ánh các đặc điểm đường cong của CR bằng cách đặt các hệ số khác nhau. Bằng cách quan sát các góc của đường cong hàm thứ cấp, xác định sự thay đổi của xu hướng giá.

Cụ thể, chiến lược đầu tiên tính toán tỷ lệ chênh lệch hội tụ của giá CR. Sau đó xây dựng một chiều dài 2*Các hàm số của len, sau đó điền vào hàm số thứ hai. Trong đó, hệ số hàm số thứ hai phản ánh giá trị của CR. Sau đó, bằng cách quan sát hai giá trị được đánh dấu là len + 1 + 5 và len + 1 + 4, đánh giá xem hàm số thứ hai có xuất hiện điểm rẽ hay không, nếu xuất hiện điểm rẽ sẽ phát ra tín hiệu mua hoặc bán.

Trên cơ sở đó, chiến lược cũng đặt ra một số điều kiện bổ sung, chẳng hạn như thiết lập khoảng cách tối thiểu để giá phá vỡ, tránh giao dịch thường xuyên; thiết lập các tín hiệu nhập vào có kích thước khác nhau. Những điều kiện này là để lọc ra một số điểm giao dịch không mong muốn.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Sử dụng chỉ số Faytterro Estimator để đánh giá xu hướng, chỉ số này nhạy cảm với biến động giá và có thể bắt đầu thay đổi xu hướng.

  2. Xây dựng hàm thứ cấp phản ánh các đặc điểm của đường cong CR, tìm kiếm tín hiệu ngã rẽ, và đánh giá phương pháp trực quan có hiệu quả.

  3. Đặt các tín hiệu nhập vào với kích cỡ khác nhau, có thể thực hiện giao dịch kim tự tháp tại các điểm lý tưởng, tăng cơ hội kiếm lợi nhuận.

  4. Thêm thiết lập khoảng cách tối thiểu, lọc hiệu quả tín hiệu, tránh giao dịch vô hiệu thường xuyên.

  5. Có nhiều tham số có thể điều chỉnh, có thể được tối ưu hóa cho các giống khác nhau, có khả năng thích ứng mạnh mẽ.

  6. Chiến lược của nó rất rõ ràng và dễ hiểu, mã dễ đọc và dễ học hỏi.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro cần lưu ý:

  1. Faytterro Estimator có rủi ro đối với đường cong và có thể không hiệu quả ở một số giống.

  2. Chỉ dựa vào hàm nhị phân, tín hiệu có thể quá lớn, dẫn đến sai lầm.

  3. Các giao dịch kim tự tháp thường xuyên làm tăng gánh nặng phí xử lý.

  4. Số lượng lớn các tham số có thể điều chỉnh làm tăng độ khó điều chỉnh.

  5. Không thể xử lý hiệu quả các sai lầm trong thời kỳ biến động giá cả.

  6. Không có cơ chế dừng lỗ, có thể dẫn đến tổn thất lớn hơn.

Các giải pháp đối phó với rủi ro như sau:

  1. Các tham số tối ưu hóa cho các giống khác nhau, tăng cường sức khỏe.

  2. Thêm các bộ lọc cho các chỉ số khác để tránh sai lệch chỉ dựa trên các ngã ba.

  3. Thiết lập lỗ dừng hợp lý, kiểm soát tổn thất đơn lẻ.

  4. Tự động điều chỉnh tham số thông qua phương pháp dữ liệu lớn.

  5. Tăng cơ chế nhận diện động đất để tránh các giai đoạn động đất.

  6. Thiết lập logic dừng lỗ hợp lý.

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

Chiến lược này bao gồm:

  1. Thêm logic dừng lỗ, kiểm soát lỗ đơn. Bạn có thể thiết lập dừng di chuyển hoặc dừng thời gian.

  2. Thêm các chỉ số khác để tránh nguy cơ bị sai lệch khi đánh giá chỉ số duy nhất của Faytterro Estimator. Ví dụ: lọc kết hợp các chỉ số như MACD, KDJ.

  3. Tăng cơ chế xác nhận để tránh bị dừng lỗ do giá giảm ngắn hạn. Bạn có thể xem xét xác nhận lần thứ hai.

  4. Tối ưu hóa các tham số có thể điều chỉnh, thiết lập các tham số hợp lý cho các giống khác nhau. Các phương pháp như thuật toán di truyền, tối ưu hóa Bayesian có thể được sử dụng.

  5. Tăng khả năng nhận diện các biến động, tránh giao dịch trong thời gian xảy ra biến động. Các chỉ số có thể được sử dụng như ATR, DMI.

  6. Tối ưu hóa logic kim tự tháp để ngăn chặn sự sụt giảm theo dõi. Ví dụ: điều chỉnh động lượng gia tăng tùy theo cường độ của xu hướng.

  7. Kiểm tra các thiết lập tham số của các chu kỳ thời gian khác nhau để tìm chu kỳ tốt nhất.

Tóm tắt

Chiến lược này dựa trên tín hiệu giao dịch của Faytterro Estimator để đưa ra quyết định, dựa trên đó thêm phán đoán logic và thiết lập các tín hiệu đầu vào khác nhau, tạo ra chiến lược theo dõi xu hướng có tính chất kim tự tháp. Chiến lược này dễ hiểu trực quan, có khả năng nắm bắt xu hướng mạnh mẽ.

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

//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)

src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
    z = 0.0
    weight = 0.0
    for i = 0 to y-1
        z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
    z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1) 
width=input.int(10, title="strong entry size", minval=1)

dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
    array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))

buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len] 
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na 
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3

buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:=  sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)


if (sbuy)
    strategy.entry("strong buy", strategy.long,width)
if (ssell)
    strategy.entry("strong sell", strategy.short,width)
if (buy)
    strategy.entry("buy", strategy.long)
if (sell)
    strategy.entry("sell", strategy.short)