Chiến lược đảo ngược dải biến động Bitcoin


Ngày tạo: 2023-10-12 17:38:39 sửa đổi lần cuối: 2023-10-12 17:38:39
sao chép: 0 Số nhấp chuột: 738
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này là một hệ thống rút lui được thiết kế cho các chứng khoán có tính biến động cao, do đó Bitcoin là một loại giao dịch rất lý tưởng. Chiến lược này có thể được sử dụng trên biểu đồ đường nhật thực hoặc khung thời gian thấp hơn (tôi đã tìm thấy kết quả tốt trên khung thời gian 3 giờ, nhưng không thử nghiệm dưới 1 giờ).

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

Chiến lược này tính toán sự biến động bằng cách so sánh sự thay đổi của giá đóng cửa của hai đường K trước đó và tạo ra một đường trung bình di chuyển với sự thay đổi giá này. Bọc một dải chênh lệch chuẩn trên đường trung bình di chuyển, bên trong là 1 chênh lệch chuẩn và bên ngoài là 2 chênh lệch chuẩn. Nếu giá cao hơn bộ lọc đường trung bình di chuyển được đặt trước, chúng tôi xác định rằng chúng tôi đang trong xu hướng tăng, vì vậy khi xu hướng tăng, nếu có một sự rút lui khiến dải chênh lệch chuẩn bên trong bị đâm, một tín hiệu mua sẽ được phát ra.

Người dùng có thể thay đổi phạm vi ngày mà họ muốn kiểm tra, tính toán khoảng cách tiêu chuẩn của vòng trung bình di chuyển và các dải sóng bên trong và bên ngoài của tỷ lệ biến động. Đối với Bitcoin, tôi giữ các dải sóng chênh lệch tiêu chuẩn bên trong và bên ngoài ở cài đặt tiêu chuẩn, nhưng thấy rằng theo dõi tỷ lệ biến động 3 chu kỳ tốt cho giao dịch trên biểu đồ 1 ngày và theo dõi tỷ lệ biến động 5 chu kỳ tốt cho biểu đồ 3 giờ. Vì đây không phải là một chiến lược mua và giữ, bạn có thể muốn gắn bó với đồng tiền biến động nhất để có thể nhanh chóng vào và ra khỏi bất kỳ sàn giao dịch nào khi giao dịch.

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

  • Sử dụng giao dịch biến động để nắm bắt các bước ngoặt của thị trường
  • Giao dịch hai chiều, có thể lợi nhuận trong thị trường tăng và giảm
  • Thiết lập tham số tiêu chuẩn đơn giản và dễ sử dụng
  • Có thể dễ dàng tối ưu hóa tham số để phù hợp với các tiêu chuẩn khác nhau
  • Đặt lệnh dừng lỗ và lệnh dừng là hợp lý, thuận lợi để khóa lợi nhuận

Rủi ro chiến lược

  • Mức độ biến động cao có nguy cơ mở rộng lỗ
  • Chuyển đổi đa không gian thường xuyên, chi phí giao dịch cao
  • Hoạt động ngắn hạn, chú ý đến sự thay đổi của thị trường
  • Lãi suất không đủ thanh khoản sẽ gây thiệt hại
  • Các tham số không chính xác có thể dẫn đến giao dịch quá mức

Cách đối phó với rủi ro:

  1. Lựa chọn các chỉ số biến động thích hợp, kiểm soát các vị trí đơn lẻ.

  2. Tối ưu hóa các tham số, giảm giao dịch không hiệu quả.

  3. Sử dụng các biện pháp dừng lỗ, quản lý tài chính nghiêm ngặt.

  4. Cần chú trọng đến hiệu quả thực hiện giao dịch và chọn các chỉ số có tính thanh khoản tốt.

  5. Điều chỉnh tham số để phù hợp với các đặc tính của các tiêu chuẩn khác nhau.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa chu kỳ trung bình di chuyển để theo dõi tốt hơn sự biến động của các chỉ số khác nhau.

  2. Điều chỉnh các tham số của dải tỷ lệ dao động để nó gần hơn với phạm vi dao động của một tiêu chuẩn cụ thể.

  3. Thêm các điều kiện lọc khác, chẳng hạn như tăng khối lượng giao dịch, để xác minh thêm tín hiệu giao dịch.

  4. Sử dụng các tham số tối ưu hóa động của công nghệ học máy để làm cho chiến lược có thể thích ứng hơn.

  5. Thử nghiệm trên một khung thời gian cao hơn để nắm bắt nhiều cơ hội giao dịch hơn.

  6. Thêm theo dõi di động Stop Loss Stop Loss để các khoản lợi nhuận được khóa trong tài khoản.

  7. Kết hợp với các chỉ số hoặc mô hình khác để xây dựng chiến lược kết hợp định lượng.

Tóm tắt

Chiến lược này đơn giản và trực quan hơn, sử dụng chỉ số biến động để xác định sự đảo ngược để nắm bắt điểm biến đổi của thị trường. Có nhiều không gian để tối ưu hóa chiến lược, có thể tiếp tục nâng cao tính ổn định và lợi nhuận của chiến lược bằng cách điều chỉnh tham số và kết hợp với các chỉ số kỹ thuật khác. Tuy nhiên, các nhà giao dịch cần chú ý để tránh các vấn đề tối ưu hóa quá mức và phù hợp với đường cong. Chiến lược này phù hợp hơn với giao dịch ngắn hạn, cần quản lý quỹ nghiêm ngặt để kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 4h
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/
// © gary_trades
//This script is designed to be used on volatile securities/tickers so is best suited for day charts on Crypto (particularly good for BTC).
//It takes both long and short trades and the main indicator settings can be changed by the use so they can test for ideal settings for ticker of interest.

//@version=4

strategy("BTC Volatility Band Strategy", shorttitle="Vol Band Strategy", overlay=false, margin_long=100, margin_short=100)

//VOLATILTY
CandleChange = ((close - close[1])/close)*100         //OR CandleChange = ((close[2] - close[1])/close)*100
plot(CandleChange, color=color.red, linewidth = 1)

//VOLATILITY BANDS 
MAlen = input(7, minval=3, maxval=30, title=" MA Length")
MAout = sma(CandleChange, MAlen)
plot(MAout, color=color.black, display=display.none)

InnerBand = input(1.0, minval=0.5, maxval=5, title="Inner Band")
OuterBand = input(2.00, minval=0.5, maxval=10, title="Outer Band")
devInner = InnerBand * stdev(CandleChange, MAlen)
devOuter = OuterBand * stdev(CandleChange, MAlen)

upper1 = MAout + devInner
lower1 = MAout - devInner
b1 = plot(upper1, "Upper Inner", color=color.gray)
b2 = plot(lower1, "Lower Inner", color=color.gray)
upper2 = MAout + devOuter
lower2 = MAout - devOuter
b3 = plot(upper2, "Upper Outer", color=color.gray)
b4 = plot(lower2, "Lower Outer", color=color.gray)
fill(b1, b3, color.rgb(250,145,175,70), title="Background")
fill(b2, b4, color.rgb(250,145,175,70), title="Background")

band1 = hline(25, "Upper Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)
band0 = hline(-25, "Lower Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)

//LONG FILTER
VolFilterL = CandleChange <= lower1 and CandleChange > lower2
SMAFilterL = close[1] > sma(close[1], 50)
PriceFilterL = close > lowest(close,7)
LongFilter = VolFilterL and SMAFilterL and PriceFilterL
bgcolor(LongFilter ? color.new(color.green, 80) : na)

//SHORT FILTER
VolFilterS = CandleChange >= upper1 and CandleChange < upper2
SMAFilterS = close[1] < sma(close[1], 50)
PriceFilterS = close < highest(close,7)
ShortFilter = VolFilterS and SMAFilterS and PriceFilterS
bgcolor(ShortFilter ? color.new(color.red, 80) : na)

//SETTING BACK TEST INPUTS
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)

startDate = timestamp("America/New_York", fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp("America/New_York", toYear, toMonth, toDay, 00, 00)
time_condition = time >= startDate and time <= finishDate

//ORDER DETAILS
Risk = (high[7] - low[7])/ 7
Profit = Risk*1.15
Loss = Risk*0.65

AlertMSG = "New stategy position" + tostring(strategy.position_size)

if (time_condition) 
    strategy.entry("Long", strategy.long, when = LongFilter, alert_message=AlertMSG)
    if (LongFilter)
        LongStop = strategy.position_avg_price - Loss
        LongProfit = strategy.position_avg_price + Profit 
        strategy.exit("TP/SL", "Long", stop=LongStop, limit=LongProfit)

if (time_condition)
    strategy.entry("Short", strategy.short, when = ShortFilter, alert_message=AlertMSG)
    if (ShortFilter)
        ShortStop = strategy.position_avg_price + Loss
        ShortProfit = strategy.position_avg_price - Profit 
        strategy.exit("TP/SL", "Short", stop=ShortStop, limit=ShortProfit)