Chiến lược đột phá giá giao dịch định lượng

Tác giả:ChaoZhang, Ngày: 2023-12-22 12:42:15
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch định lượng ngắn hạn dựa trên Đường trung bình di chuyển đơn giản (SMA), Đường trung bình di chuyển theo cấp số (EMA), Keltner Channels, chỉ số MACD và dao động Stochastic. Nó sử dụng sự đột phá giá của SMA và EMA, kết hợp với các tín hiệu dài và ngắn từ Keltner Channels, MACD và Stochastic để tự động hóa các bước nhập và ra khỏi giao dịch.

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

Chiến lược này sử dụng đường SMA 25 giai đoạn, đường EMA 200 giai đoạn để xây dựng đường trung bình động kép. Khi giá vượt qua đường trung bình động kép lên, một tín hiệu mua được tạo ra. Khi giá vượt qua đường trung bình động kép xuống, một tín hiệu bán được tạo ra.

Đồng thời, chiến lược này sử dụng các kênh Keltner 10 giai đoạn. Sự đột phá của các dải kênh trên và dưới cũng phục vụ như các tín hiệu hỗ trợ. Chỉ số MACD tạo ra các tín hiệu giao dịch với đường nhanh, đường chậm và biểu đồ.

Cụ thể, khi giá đóng ở trên cả SMA và EMA, và trong các kênh Keltner, biểu đồ MACD là âm và Stochastic %K dưới 50, một tín hiệu nhập khẩu dài được kích hoạt. Khi giá đóng ở dưới cả SMA và EMA, và trong các kênh Keltner, biểu đồ MACD là dương và Stochastic %K trên 50, một tín hiệu nhập khẩu ngắn được kích hoạt.

Ưu điểm chiến lược

  1. Sử dụng đường trung bình động kép kết hợp với chỉ số kênh có thể lọc hiệu quả các đột phá sai.
  2. Tích hợp các tín hiệu từ nhiều chỉ số kỹ thuật có thể cải thiện độ tin cậy.
  3. Các quy tắc dài / ngắn rõ ràng tạo điều kiện cho hiệu quả thực hiện chương trình.
  4. Thích hợp cho các chiến lược giao dịch định lượng tần số cao.

Rủi ro chiến lược và tối ưu hóa

  1. Là một chiến lược giao dịch ngắn hạn, nó có rủi ro tần suất giao dịch cao.
  2. Không có cơ chế dừng lỗ tồn tại, dẫn đến rủi ro mất mát lớn.
  3. Xem xét thêm các chỉ số biến động để tối ưu hóa các điều kiện nhập cảnh và dừng lỗ.
  4. Các khoảng thời gian tham số khác nhau có thể được thử nghiệm để tìm kết hợp tối ưu.

Kết luận

Chiến lược này tích hợp bốn chỉ số kỹ thuật thường được sử dụng - trung bình động, kênh, MACD và Stochastic. Nó xác định dài / ngắn dựa trên đột phá giá, một chiến lược giao dịch định lượng ngắn hạn điển hình. So với các chiến lược chỉ số duy nhất, sự kết hợp nhiều chỉ số của nó cải thiện độ chính xác tín hiệu và đáng để thử nghiệm và tối ưu hóa thêm.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 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/
// © exlux99

//@version=5
strategy(title="Scalping Trading System Crypto and Stocks", overlay=true)
src = input(low, title="Source")

//sma and ema
len = input.int(25, minval=1, title="Length SMA" , group="Moving Averages")
len2 = input.int(200, minval=1, title="Length EMA", group="Moving Averages")

out = ta.sma(src, len)
out2 = ta.ema(src, len2)


//keltner
lengthk = input.int(10, minval=1, title="Length Keltner Channel",group="Keltner")
mult = input(2.0, "Multiplier",group="Keltner")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style",group="Keltner")
atrlength = input(14, "ATR Length",group="Keltner")

ma = ta.sma(src, lengthk)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, lengthk)
upper = ma + rangema * mult
lower = ma - rangema * mult

//stoch
periodK = input.int(10, title="%K Length", minval=1,group="Stochastic")
smoothK = input.int(1, title="%K Smoothing", minval=1,group="Stochastic")
periodD = input.int(1, title="%D Smoothing", minval=1,group="Stochastic")
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)

//macd 1
fast_length = input(title="Fast Length MACD", defval=4,group="MACD Fast")
slow_length = input(title="Slow Length MACD", defval=34,group="MACD Fast")
signal_length = input.int(title="Signal Smoothing MACD",  minval = 1, maxval = 50, defval = 5,group="MACD Fast")
sma_source = input.string(title="Oscillator MA Type MACD",  defval="EMA", options=["SMA", "EMA"],group="MACD Fast")
sma_signal = input.string(title="Signal Line MA Type MACD", defval="EMA", options=["SMA", "EMA"],group="MACD Fast")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal




long= close > out and close < upper and close > lower and hist < 0 and k < 50 and close > out2 

short= close < out and close < upper and close > lower and hist > 0 and k > 50 and close < out2 

strategy.entry("long",strategy.long,when= long)

strategy.entry("short",strategy.short,when=short)


Thêm nữa