Chiến lược giao dịch lưới cố định

Tác giả:ChaoZhang, Ngày: 2023-11-16 17:09:45
Tags:

img

Tổng quan

Chiến lược này áp dụng phương pháp giao dịch lưới cố định bằng cách thiết lập giá khởi điểm và tỷ lệ phần trăm giữa mỗi lớp lưới. Sau đó nó tính toán 10 giá mua và bán cố định dựa trên tỷ lệ phần trăm để thực hiện chiến lược giao dịch lưới mua thấp-bán cao.

Chiến lược logic

Chiến lược đầu tiên thiết lập giá khởi điểm và tỷ lệ phần trăm khoảng cách lưới. sau đó nó tính toán 10 lớp giá mua và bán dựa trên giá khởi điểm và tỷ lệ phần trăm.

Công thức giá mua:

b1 = chi phí-(chi phí*p1)

b2 = chi phí-(chi phí*p2)

b3=sprice-(sprice*p3)

Trong đó p1 ~ p10 là tỷ lệ phần trăm được tính từng lớp dựa trên gridpercent.

Công thức giá bán:

s1=b1+(sprice*p1)

s2=b2+(sprice*p1)

s3=b3+(sprice*p1)

Điều kiện mua được kích hoạt khi giá đóng thấp hơn giá mua:

if (close

chiến lược.tham gia ((b1, strategy.long, when=(close

Tương tự, điều kiện bán được kích hoạt khi giá đóng cao hơn giá bán:

if (close>s1)

strategy.exit("b1", khi=(close>s1))

Điều này thực hiện chiến lược giao dịch lưới mua thấp-bán cao.

Ưu điểm

Chiến lược lưới cố định có những lợi thế sau:

  1. Đạt được tự động thấp-mua-cao-bán mà không có thời gian thị trường, giảm khó khăn giao dịch.

  2. Đặt khoảng cách lưới thích hợp có hiệu quả kiểm soát rủi ro và tránh đuổi theo.

  3. Lợi nhuận cho dù thị trường tăng hay giảm.

  4. Tính linh hoạt để điều chỉnh các thông số lưới cho các điều kiện thị trường khác nhau.

  5. Tăng quy mô vị trí bằng cách thêm các lớp lưới.

  6. Kết hợp dừng lỗ tránh mất mát lớn trong các sự kiện thị trường cực đoan.

Rủi ro

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

  1. Phí giao dịch ăn lợi nhuận trong thị trường giới hạn phạm vi.

  2. Giá khởi điểm không đúng và cài đặt lưới dẫn đến tổn thất.

  3. Sự chênh lệch giá có thể gây ra tổn thất trong các sự kiện cực đoan.

  4. Giao dịch cơ khí có rủi ro chèn lệnh.

  5. Các sự kiện tập trung có thể làm tăng tổn thất.

Giải pháp:

  1. Tối ưu hóa các thông số lưới để đảm bảo lợi nhuận > phí.

  2. Backtest để tìm giá khởi điểm tối ưu và khoảng cách lưới.

  3. Thêm stop loss để kiểm soát rủi ro.

  4. Thư giãn giá đặt hàng để tránh chèn.

  5. Thiết lập kiểm soát rủi ro để giới hạn tổn thất tối đa.

Những cải tiến

Chiến lược có thể được cải thiện theo những cách sau:

  1. Điều chỉnh năng động khoảng cách lưới dựa trên biến động.

  2. Tính toán phạm vi giá để thiết lập giá khởi điểm năng động.

  3. Thêm mô hình ML để dự đoán giá và điều chỉnh lưới.

  4. Tối ưu hóa điểm dừng lỗ dựa trên các điểm dừng lỗ trong lịch sử.

  5. Bao gồm việc phân loại vị trí dựa trên mức lợi nhuận.

  6. Tối ưu hóa quản lý vị trí để tối đa hóa việc sử dụng vốn.

  7. Cải thiện việc thực hiện sử dụng TWAP để giảm chi phí tác động.

Kết luận

Chiến lược này thực hiện giao dịch lưới cố định bằng cách thiết lập giá mua và bán dựa trên giá khởi điểm và tỷ lệ phần trăm lưới, đạt được tự động mua thấp-bán cao. Điều quan trọng là quản lý rủi ro bằng cách tối ưu hóa các tham số, điều chỉnh năng động và dừng lỗ để khóa lợi nhuận và kiểm soát lỗ. Kết hợp các kỹ thuật quản lý tiền tệ và tiền tệ tiên tiến có thể cải thiện thêm lợi nhuận chiến lược và tỷ lệ thắng.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © Lionkind

//@version=5
strategy("Grid HW", overlay = true, margin_long = 1, margin_short = 1)

// Fix 35k price as starting point and 1% as a distance

sprice=input(40500,"Starting price")
gridpercent=input(1,"Percent")

// calculate the % of the 10 layers 

p1=((gridpercent*1)/100)
p2=((gridpercent*2)/100)
p3=((gridpercent*3)/100)
p4=((gridpercent*4)/100)
p5=((gridpercent*5)/100)
p6=((gridpercent*6)/100)
p7=((gridpercent*7)/100)
p8=((gridpercent*8)/100)
p9=((gridpercent*9)/100)
p10=((gridpercent*10)/100)

//set buy prices 

b1=sprice-(sprice*p1)
b2=sprice-(sprice*p2)
b3=sprice-(sprice*p3)
b4=sprice-(sprice*p4)
b5=sprice-(sprice*p5)
b6=sprice-(sprice*p6)
b7=sprice-(sprice*p7)
b8=sprice-(sprice*p8)
b9=sprice-(sprice*p9)
b10=sprice-(sprice*p10)

//set sell prices

s1=b1+(sprice*p1)
s2=b2+(sprice*p1)
s3=b3+(sprice*p1)
s4=b4+(sprice*p1)
s5=b5+(sprice*p1)
s6=b6+(sprice*p1)
s7=b7+(sprice*p1)
s8=b8+(sprice*p1)
s9=b9+(sprice*p1)
s10=b10+(sprice*p1)

//Long conditions

lc1=close<b1
lc2=close<b2
lc3=close<b3
lc4=close<b4
lc5=close<b5
lc6=close<b6
lc7=close<b7
lc8=close<b8
lc9=close<b9
lc10=close<b10

//exit conditions
ec1=close>s1
ec2=close>s2
ec3=close>s3
ec4=close>s4
ec5=close>s5
ec6=close>s6
ec7=close>s7
ec8=close>s8
ec9=close>s9
ec10=close>s10

//long orders
if (lc1)
    strategy.entry("b1", strategy.long, when=(lc1))
    
if (lc2)
    strategy.entry("b2", strategy.long, when=(lc2))
    
if (lc3)
    strategy.entry("b3", strategy.long, when=(lc3))    
if (lc4)
    strategy.entry("b4", strategy.long, when=(lc4))    
if (lc5)
    strategy.entry("b5", strategy.long, when=(lc5))
if (lc6)
    strategy.entry("b6", strategy.long, when=(lc6))
if (lc7)
    strategy.entry("b7", strategy.long, when=(lc7))    
if (lc8)
    strategy.entry("b8", strategy.long, when=(lc8))    
if (lc9)
    strategy.entry("b9", strategy.long, when=(lc9))    
if (lc10)
    strategy.entry("b10", strategy.long, when=(lc10))
    
//exit orders   
if (ec1)
    strategy.exit("b1", when=(ec1), limit=1)
if (ec2)
    strategy.exit("b2", when=(ec2), limit=1)
if (ec3)
    strategy.exit("b3", when=(ec3), limit=1)
if (ec4)
    strategy.exit("b4", when=(ec4), limit=1)
if (ec5)
    strategy.exit("b5", when=(ec5), limit=1)
if (ec6)
    strategy.exit("b6", when=(ec6), limit=1)
if (ec7)
    strategy.exit("b7", when=(ec7), limit=1)
if (ec8)
    strategy.exit("b8", when=(ec8), limit=1)
if (ec9)
    strategy.exit("b9", when=(ec9), limit=1)
if (ec10)
    strategy.exit("b10", when=(ec10), limit=1)
    

plot(b1,color=color.green)
plot(s1, color=color.red)
plot(b2, color=color.purple)

Thêm nữa