Chiến lược đảo ngược đường trung bình động kép


Ngày tạo: 2023-11-03 16:51:18 sửa đổi lần cuối: 2023-11-03 16:51:18
sao chép: 2 Số nhấp chuột: 595
1
tập trung vào
1621
Người theo dõi

Chiến lược đảo ngược đường trung bình động kép

Tổng quan

Chiến lược này sử dụng 2 chỉ số để tạo ra tín hiệu giao dịch: đường trung bình di chuyển chỉ số 2020 và chỉ số đảo ngược phạm vi biến động thực trung bình. Nó kết hợp hai ý tưởng chiến lược lớn là theo xu hướng và đảo ngược ngắn hạn để tìm cơ hội đảo ngược.

Nguyên tắc

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

  1. 220 chỉ số di chuyển trung bình. Nó tính toán chỉ số di chuyển trung bình trong 20 ngày gần đây nhất, tạo ra tín hiệu giao dịch khi giá đi từ trên xuống hoặc đi từ dưới lên đường trung bình di chuyển.

  2. Chỉ số đảo ngược phạm vi biến động thực tế trung bình. Nó dựa trên phạm vi biến động thực tế trung bình của giá để tính toán điểm dừng lỗ, tạo ra tín hiệu khi giá vượt qua điểm dừng lỗ. Ở đây, ATR 3.5 lần được sử dụng làm điểm dừng lỗ.

Chiến lược này tích hợp cả hai tín hiệu. Khi 2/20EMA tạo ra tín hiệu đa đầu và ATR quay lại tạo ra tín hiệu đầu trống, hãy làm trống; Khi 2/20EMA tạo ra tín hiệu đầu trống và ATR quay lại tạo ra tín hiệu đa đầu, hãy làm nhiều hơn.

Phân tích lợi thế

Chiến lược này kết hợp hai tư duy theo xu hướng và đảo ngược, nhằm phát hiện cơ hội biến đổi giá.

  1. 220 EMA có thể nhận ra xu hướng trung hạn và tránh bị lừa bởi tiếng ồn thị trường.

  2. Chỉ số đảo ngược ATR có thể nắm bắt các biến động giá ngắn hạn và nắm bắt các cơ hội đảo ngược.

  3. Kết hợp cả hai, các tín hiệu có thể được bắt trước khi xu hướng chuyển hướng trong thời gian trung bình, do đó tăng khả năng lợi nhuận.

  4. Cài đặt Stop Loss ATR là hợp lý hơn và có hiệu quả kiểm soát rủi ro.

  5. Có thể tùy chỉnh ATR để phù hợp với các đặc điểm khác nhau của giống.

  6. Có thể chọn giao dịch thẳng hoặc ngược, áp dụng cho các trường hợp khác nhau.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. 220 EMA tham số chậm hơn, có thể bỏ lỡ cơ hội đường ngắn.

  2. ATR dừng dễ bị phá vỡ, nên giảm bớt điểm dừng thích hợp.

  3. Chỉ số đơn lẻ dễ tạo ra tín hiệu sai, nên kết hợp các yếu tố khác để lọc.

  4. Cần chú ý đến số lần giao dịch để tránh giao dịch quá thường xuyên.

  5. Cần tối ưu hóa và kiểm tra lại các thông số để xác nhận phù hợp với giống này.

  6. Quản lý tài chính nghiêm ngặt, kiểm soát rủi ro đơn lẻ.

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

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Điều chỉnh tham số EMA để tìm các tham số kết hợp tốt nhất

  2. Tối ưu hóa kích thước ATR, cân bằng mức dừng lỗ

  3. Tăng các điều kiện lọc, kết hợp các chỉ số như tỷ lệ chuyển đổi, tỷ lệ biến động

  4. Thêm mô-đun quản lý tài chính, thay đổi vị thế động

  5. Thêm các chiến lược dừng lỗ, chẳng hạn như Chandelier Exit

  6. Kiểm tra hiệu quả của các tham số khác nhau để tìm ra sự kết hợp tốt nhất

  7. Tham gia mô hình học máy để nâng cao hiệu suất sử dụng dữ liệu lớn

  8. Kết hợp nhiều chiến lược con để khám phá thêm Alpha

Tóm tắt

Chiến lược này tích hợp hai tư duy lớn, có khả năng nắm bắt sự đảo ngược giá. Tuy nhiên, cũng có rủi ro khi chọn không đúng các tham số. Có thể nâng cao hơn nữa sự ổn định và khả năng lợi nhuận của chiến lược bằng cách tối ưu hóa chiến lược dừng lỗ, tăng các điều kiện lọc.

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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
// Please, use it only for learning or paper trading. Do not for real trading.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


ATRR(nATRPeriod,nATRMultip) =>
    pos = 0.0
    xATR = ta.atr(nATRPeriod)
    nLoss = nATRMultip * xATR
    xATRTrailingStop = 0.0
    xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
                          close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : 
                          close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
    pos:= close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 :
    	     close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Average True Range Reversed', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Average True Range Reversed  ═════●'
nATRPeriod = input.int(5, group=I2)
nATRMultip = input.float(3.5, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosATRR = ATRR(nATRPeriod,nATRMultip)
iff_1 = posEMA20 == -1 and prePosATRR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosATRR == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)