
Chiến lược này là một chiến lược giao dịch định lượng đường ngắn dựa trên đường trung bình di chuyển đơn giản (SMA), đường trung bình di chuyển chỉ số (EMA), kênh Keltner, MACD, chỉ số ngẫu nhiên (Stochastic). Nó kết hợp các tín hiệu đa không gian của kênh Keltner, MACD và Stochastic để thực hiện giao dịch tự động vào và ra.
Chiến lược này sử dụng SMA 25 chu kỳ, EMA 200 chu kỳ để xây dựng chỉ số đường trung bình di chuyển kép. Nó tạo ra tín hiệu mua khi giá từ dưới lên phá vỡ đường trung bình di chuyển kép; tạo ra tín hiệu bán khi giá từ trên xuống phá vỡ đường trung bình di chuyển kép.
Trong khi đó, chiến lược này sử dụng 10 chu kỳ để xây dựng kênh Keltner, đường dẫn trên và đường dẫn dưới của kênh phá giá cũng sẽ hoạt động như tín hiệu phụ. Chỉ số MACD tạo ra tín hiệu mua bán thông qua đường nhanh, đường chậm và hình ảnh trụ MACD. Chỉ số Stochastic cũng tạo thành tín hiệu đa không gian thông qua đường %K và đường %D.
Cụ thể, khi giá đóng cửa cao hơn SMA và EMA và nằm bên trong kênh Keltner, biểu đồ trụ MACD là giá trị âm, Stochastic% K thấp hơn 50, tạo ra tín hiệu mua, làm nhiều; khi giá đóng cửa thấp hơn SMA và EMA và nằm bên trong kênh Keltner, biểu đồ trụ MACD là giá trị dương, Stochastic% K cao hơn 50, tạo ra tín hiệu bán, làm rỗng.
Chiến lược này kết hợp các chỉ số kỹ thuật thường được sử dụng như trung bình di chuyển, chỉ số kênh, chỉ số MACD và chỉ số Stochastic. Phân tích nhiều đường bằng cách phá vỡ hoặc không phá vỡ giá là một trong những chiến lược giao dịch định lượng ngắn hạn điển hình. Sử dụng nhiều chỉ số kết hợp sẽ giúp tăng độ chính xác của tín hiệu so với chỉ số đơn lẻ và đáng để kiểm tra và tối ưu hóa hơn nữa.
/*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)