
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên hai đường trung bình và các chỉ số ngẫu nhiên (Stochastic). Nó kết hợp các hệ thống trung bình để đánh giá xu hướng thị trường, đồng thời sử dụng các chỉ số ngẫu nhiên để nắm bắt các tín hiệu giao thoa trong khu vực quá mua quá bán, và thiết lập mức dừng lỗ động để kiểm soát rủi ro. Phương pháp này đảm bảo độ tin cậy của tín hiệu giao dịch và quản lý hiệu quả tỷ lệ rủi ro / lợi nhuận cho mỗi giao dịch.
Chiến lược này dựa trên các yếu tố cốt lõi sau:
Các điều kiện mua phải được đáp ứng cùng lúc:
Điều kiện bán là ngược lại:
Đây là một hệ thống chiến lược hoàn chỉnh kết hợp theo dõi xu hướng và giao dịch động lực. Bằng cách sử dụng hệ thống thống thống nhất và các chỉ số ngẫu nhiên, nó có thể đảm bảo hướng giao dịch phù hợp với xu hướng chính và giao dịch trong khu vực giá thích hợp.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © quadawosanya
//@version=5
//indicator("My script")
//@version=5
strategy("EMA-Stochastic Strategy", overlay=true)
// EMA settings
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
// Stochastic settings
kLength = 14
dLength = 3
smoothK = 3
stochK = ta.sma(ta.stoch(close, high, low, kLength), smoothK)
stochD = ta.sma(stochK, dLength)
// Parameters for Stop Loss and Take Profit
var float stopLossLevel = na
var float takeProfitLevel = na
// Buy condition
buySignal = (close > ema50 and close > ema150) and (ema50 > ema150) and (stochK < 30 and ta.crossover(stochK, stochD))
// Sell condition
sellSignal = (close < ema50 and close < ema150) and (ema50 < ema150) and (stochK > 70 and ta.crossunder(stochK, stochD))
// Previous low for Stop Loss for Buy
lowBeforeBuy = ta.lowest(low, 5)
// Previous high for Stop Loss for Sell
highBeforeSell = ta.highest(high, 5)
// Entry and exit logic
if (buySignal)
stopLossLevel := lowBeforeBuy
risk = close - stopLossLevel
takeProfitLevel := close + 2 * risk
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel, limit=takeProfitLevel)
if (sellSignal)
stopLossLevel := highBeforeSell
risk = stopLossLevel - close
takeProfitLevel := close - 2 * risk
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel, limit=takeProfitLevel)
// Plotting EMAs
plot(ema50, color=color.blue, title="50 EMA")
plot(ema150, color=color.red, title="150 EMA")
// Visualize Buy and Sell signals
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Visualize Stop Loss and Take Profit levels
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit")
plot(close)