Chiến lược đột phá đường trung bình động


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

Tổng quan

Chiến lược này dựa trên trung bình di chuyển tạo ra kênh giao dịch, tạo ra tín hiệu giao dịch khi giá phá vỡ kênh lên xuống. Đây là một chiến lược theo dõi xu hướng điển hình, thực hiện các hoạt động ngắn hạn ngắn hạn đơn giản và hiệu quả thông qua các tham số tối ưu hóa.

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

  1. Để tính toán moving average, có thể chọn nhiều loại khác nhau như SMA / EMA / WMA / RMA.

  2. Một số tỷ lệ tăng trên đường ray là trung bình di chuyển. Một số tỷ lệ giảm dưới đường ray.

  3. Lưu trữ khi giá phá vỡ đường đua; Hạn chế khi giá phá vỡ đường đua. Bạn có thể chọn chỉ làm thêm, chỉ làm giảm hoặc giao dịch hai chiều.

  4. Thiết lập điểm dừng để giảm giá. Đặt điểm dừng để tăng một tỷ lệ nhất định của giá vào. Đặt điểm dừng để giảm một tỷ lệ nhất định của giá vào.

Phân tích lợi thế

  1. Tính toán trung bình di chuyển rất đơn giản và dễ dàng để đánh giá xu hướng.

  2. Các tham số có thể điều chỉnh để thực hiện các thời gian giữ vị trí và sở thích rủi ro khác nhau.

  3. Bạn có thể lựa chọn làm thêm việc để thích nghi với nhiều tình huống thị trường khác nhau.

  4. Cứu và giảm cân theo tỷ lệ cố định, có thể kiểm soát được.

Phân tích rủi ro

  1. Những người này có thể bị lừa khi xu hướng thay đổi.

  2. Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên hoặc chậm trễ.

  3. Đơn vị này có thể sử dụng các phương tiện khác nhau.

  4. Giao dịch hai chiều làm tăng tần suất giao dịch và chi phí phí.

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

  1. Tối ưu hóa các tham số trung bình di chuyển, cân bằng độ trễ và tiếng ồn.

  2. Tối ưu hóa băng thông kênh để phù hợp với tần số biến động của thị trường.

  3. Kiểm tra các thiết lập Stop Loss khác nhau. Stop Loss động hiệu quả hơn.

  4. Thêm xu hướng, chỉ số dao động để đánh giá các thị trường lớn.

  5. Thêm một bộ lọc thời gian để tránh ảnh hưởng của các sự kiện lớn.

Tóm tắt

Chiến lược này thực hiện theo dõi xu hướng đơn giản thông qua kênh trung bình di chuyển, nhưng cần tăng cường tối ưu hóa tham số và kiểm soát rủi ro. Trên cơ sở này, có thể giới thiệu thêm các chỉ số kỹ thuật để cải thiện hơn nữa logic chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 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/
// © TaylorTneh
//@version=4

// strategy("Moving Average Band Taylor V1",shorttitle="MA Band+",overlay=true,default_qty_type=strategy.cash,default_qty_value=1000,initial_capital=1000,currency=currency.USD,commission_value=.1)

price = input(close, title="Source")
mabtype = input(title="Moving Average Type", defval="RMA", options=["SMA", "EMA", "RMA", "WMA"])
malen = input(10, "MA Period : 10")
magap = input(0.6, "Band Gap : 0.6", minval = -10, maxval = 10, step = 0.1)
mabup = if mabtype == "SMA"
    sma(high, malen)
else
    if mabtype == "EMA"
        ema(high, malen)
    else
        if mabtype == "WMA"
            wma(high, malen)
        else
            if mabtype == "RMA"
                rma(high, malen)
                    
mabdn = if mabtype == "SMA"
    sma(low, malen)
else
    if mabtype == "EMA"
        ema(low, malen)
    else
        if mabtype == "WMA"
            wma(low, malen)
        else
            if mabtype == "RMA"
                rma(low, malen)
                    
upex = mabup * (1 + magap/100)
dnex = mabdn * (1 - magap/100)
plot(upex, "Upper MA Band", color.orange)
plot(dnex, "Lower MA Band", color.orange)


//-------------------------------------------- (Strategy)
strategy.entry("Long", strategy.long, stop = upex)
strategy.entry("Short", strategy.short, stop = dnex)
//Long Only//strategy.entry("Long", strategy.long, stop = upex)
//Long Only//strategy.exit("Short", stop = dnex)
//Short Only//strategy.entry("Short", strategy.short, stop = dnex)
//Short Only//strategy.exit("Long", stop = upex)


//-------------------------------------------- (Take Profit & Stop Lose)
stopPer = input(500.0, title='# Stop Loss %', type=input.float) / 100
takePer = input(500.0, title='# Take Profit %', type=input.float) / 100
//Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0 
    strategy.exit(id="L-TP/SL", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="S-TP/SL", stop=shortStop, limit=shortTake)


//-------------------------------------------- (Sample Time Filter Strategy)
//fromyear = input(2018, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
//toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
//frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
//tomonth = input(10, defval = 10, minval = 01, maxval = 12, title = "To Month")
//fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
//today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//strategy.entry("Long", strategy.long, stop = upex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
//strategy.entry("Short", strategy.short, stop = dnex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
//--------------------------------------------