Chiến lược này là một hệ thống giao dịch theo xu hướng dựa trên EMA kép và chỉ số Stochastic. Nó kết hợp các đường trung bình động để xác định xu hướng thị trường trong khi sử dụng chỉ số Stochastic để nắm bắt các tín hiệu chéo trong các khu vực mua quá mức / bán quá mức, với mức dừng lỗ và lấy lợi nhuận năng động để quản lý rủi ro. Cách tiếp cận này đảm bảo cả độ tin cậy tín hiệu và quản lý rủi ro-lợi nhuận hiệu quả cho mỗi giao dịch.
Chiến lược dựa trên một số yếu tố cốt lõi:
Điều kiện mua đòi hỏi:
Đ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 xu hướng và giao dịch động lực. Thông qua sự kết hợp của hệ thống EMA và chỉ số Stochastic, nó đảm bảo giao dịch phù hợp với xu hướng chính trong khi đi vào ở mức giá thích hợp. Ngoài ra, chiến lược bao gồm các cơ chế quản lý rủi ro toàn diện, sử dụng stop-loss năng động và tỷ lệ rủi ro-lợi nhuận cố định để kiểm soát rủi ro. Mặc dù có một số hạn chế vốn có, hiệu suất tổng thể của chiến lược có thể được cải thiện hơn nữa thông qua các tối ưu hóa được đề xuất. Trong ứng dụng thực tế, các nhà giao dịch được khuyên phải điều chỉnh các tham số theo đặc điểm thị trường cụ thể và sở thích rủi ro của riêng họ.
/*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)