Chiến lược chéo SMA

Tác giả:ChaoZhang, Ngày: 2023-11-08 11:36:51
Tags:

img

Tổng quan

Chiến lược này tạo ra tín hiệu giao dịch dựa trên sự chéo chéo giữa trung bình di chuyển nhanh và chậm. Nó tạo ra tín hiệu mua khi trung bình di chuyển nhanh vượt qua trên trung bình di chuyển chậm từ dưới. Nó tạo ra tín hiệu bán khi trung bình di chuyển nhanh vượt qua dưới trung bình di chuyển chậm từ trên.

Nguyên tắc

Chiến lược này sử dụng hàm sma để tính toán các đường trung bình di chuyển nhanh và chậm. Fast_SMA là đường trung bình di chuyển nhanh với đầu vào dài thời gian fast_SMA. Slow_SMA là đường trung bình di chuyển chậm với đầu vào dài thời gian slow_SMA.

Chiến lược này sử dụng các hàm chéo và chéo để xác định sự chéo giữa các đường trung bình di chuyển nhanh và chậm. Khi đường trung bình di chuyển nhanh vượt qua đường trung bình di chuyển chậm, biến LONG là đúng và tín hiệu mua được tạo ra. Khi đường trung bình di chuyển nhanh vượt qua đường trung bình di chuyển chậm, biến SHORT là đúng và tín hiệu bán được tạo ra.

Ưu điểm

Chiến lược này có những lợi thế sau:

  1. Nguyên tắc đơn giản, dễ hiểu và thực hiện.
  2. Thời gian trung bình động có thể tùy chỉnh, thích nghi với môi trường thị trường khác nhau.
  3. lọc ra một số tiếng ồn thị trường và tạo ra các tín hiệu giao dịch tương đối đáng tin cậy.
  4. Nhận cả điểm khởi đầu và điểm chuyển hướng của xu hướng.

Rủi ro

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

  1. Có thể tạo ra các tín hiệu giao dịch quá mức nếu cài đặt không phù hợp, dẫn đến giao dịch quá mức.
  2. Có thể tạo ra nhiều tín hiệu sai trong thị trường bên.
  3. Không thể xác định thời gian của một xu hướng, có thể đảo ngược sớm.

Quản lý rủi ro:

  1. Thiết lập các thông số trung bình động thích hợp để cân bằng hiệu ứng lọc và độ nhạy.
  2. Thêm bộ lọc chỉ số xu hướng để tránh tín hiệu sai.
  3. Đặt điểm dừng lỗ để kiểm soát lỗ cho mỗi giao dịch.

Tối ưu hóa

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

  1. Thêm các điều kiện lọc về khối lượng hoặc biến động khi sự đột phá xảy ra để tránh sự đột phá sai.
  2. Bao gồm các chỉ số xu hướng để xác định hướng và sức mạnh xu hướng.
  3. Thêm các mô hình học máy để tự động tối ưu hóa các thông số trung bình động.
  4. Kết hợp với hỗ trợ / kháng cự và Bollinger Bands để xác định phạm vi giao dịch và cải thiện độ chính xác nhập cảnh.

Tóm lại

Chiến lược này hiệu quả tạo ra tín hiệu giao dịch bằng cách tận dụng những lợi thế của đường trung bình động. Mặc dù có một số rủi ro, chúng có thể được cải thiện bằng cách tối ưu hóa tham số, thêm bộ lọc vv. Chiến lược chéo đường trung bình động đáng nghiên cứu và áp dụng thêm.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)

Thêm nữa