Chiến lược này là một hệ thống giao dịch thích nghi dựa trên Chỉ số Động lực Stochastic (SMI). Nó dự đoán xu hướng thị trường bằng cách phân tích các đường chéo giữa chỉ số SMI và đường tín hiệu của nó, tự động tạo ra tín hiệu mua và bán tại các vị trí chính. Chiến lược sử dụng trung bình chuyển động nhân tố kép (EMA) để làm mịn dữ liệu và cải thiện độ tin cậy tín hiệu. Hệ thống này đặc biệt phù hợp với giao dịch trung và dài hạn và có hiệu quả nắm bắt các điểm đảo ngược xu hướng thị trường lớn.
Lòng cốt của chiến lược nằm trong việc đo đạc động lực giá thông qua tính toán SMI. Đầu tiên nó xác định phạm vi giá cao nhất và thấp nhất trong một khoảng thời gian cụ thể, sau đó bình thường hóa vị trí giá đóng liên quan đến phạm vi này. Bằng cách áp dụng làm mịn EMA kép cho cả phạm vi tương đối và phạm vi giá, nó tạo ra các giá trị SMI ổn định hơn. Các tín hiệu mua được kích hoạt khi đường SMI tạo ra một đường chéo vàng với đường tín hiệu của nó (SMI
Đây là một chiến lược giao dịch trưởng thành dựa trên chỉ số SMI, tạo ra các tín hiệu giao dịch thông qua các dấu hiệu giao dịch kỹ thuật với tính thực tế mạnh mẽ. Những lợi thế cốt lõi của chiến lược nằm trong các tín hiệu rõ ràng và khả năng chống tiếng ồn mạnh mẽ, mặc dù nó có một số sự chậm trễ vốn có. Thông qua các tối ưu hóa như xác thực khối lượng và lọc xu hướng, sự ổn định và độ tin cậy của chiến lược có thể được tăng thêm. Chiến lược này đặc biệt phù hợp với việc theo dõi xu hướng trung và dài hạn và là một lựa chọn tuyệt vời cho các nhà đầu tư muốn xây dựng hệ thống giao dịch có hệ thống.
/*backtest start: 2024-12-19 00:00:00 end: 2024-12-26 00:00:00 period: 45m basePeriod: 45m 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/ // © Iban_Boe //@version=6 strategy("SMI Strategy with Signals", "SMI Strategy", overlay=false) // Parámetros del SMI lengthK = input.int(14, "%K Length", minval=1, maxval=15000) lengthD = input.int(3, "%D Length", minval=1, maxval=4999) lengthEMA = input.int(3, "EMA Length", minval=1, maxval=4999) // Función de doble EMA emaEma(source, length) => ta.ema(ta.ema(source, length), length) // Cálculos del SMI highestHigh = ta.highest(lengthK) lowestLow = ta.lowest(lengthK) highestLowestRange = highestHigh - lowestLow relativeRange = close - (highestHigh + lowestLow) / 2 smi = 200 * (emaEma(relativeRange, lengthD) / emaEma(highestLowestRange, lengthD)) smiSignal = ta.ema(smi, lengthEMA) // Gráficos del SMI smiPlot = plot(smi, "SMI", color=color.blue) plot(smiSignal, "SMI-based EMA", color=color.orange) // Level lines hline(40, "Overbought Line", color=color.green) hline(-40, "Oversold Line", color=color.red) hline(0, "Middle Line", color=color.gray) midLinePlot = plot(0, color = na, editable = false, display = display.none) fill(smiPlot, midLinePlot, 120, 40, top_color = color.new(#4caf4f, 50), bottom_color = color.new(color.green, 100), title = "Overbought Gradient Fill") fill(smiPlot, midLinePlot, -40, -120, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 50), title = "Oversold Gradient Fill") // Señales de compra y venta buySignal = ta.crossover(smi, smiSignal) // Detect crossover sellSignal = ta.crossunder(smi, smiSignal) // Detect crossover // Graficar señales de compra/venta plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, title="Señal de Compra") plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny, title="Señal de Venta") // Lógica de la estrategia if (buySignal) strategy.entry("Compra", strategy.long) if (sellSignal) strategy.entry("Venta", strategy.short) // Alertas alertcondition(buySignal, title="Alerta de Compra", message="¡Señal de Compra Detectada!") alertcondition(sellSignal, title="Alerta de Venta", message="¡Señal de Venta Detectada!")