diff --git a/API/2310_SMI_Correct/CS/SmiCorrectStrategy.cs b/API/2310_SMI_Correct/CS/SmiCorrectStrategy.cs
new file mode 100644
index 000000000..056df4de2
--- /dev/null
+++ b/API/2310_SMI_Correct/CS/SmiCorrectStrategy.cs
@@ -0,0 +1,149 @@
+namespace StockSharp.Samples.Strategies;
+
+using System;
+using System.Collections.Generic;
+
+using StockSharp.Algo;
+using StockSharp.Algo.Indicators;
+using StockSharp.Algo.Strategies;
+using StockSharp.BusinessEntities;
+using StockSharp.Messages;
+
+///
+/// Strategy based on Stochastic Momentum Index crossings.
+/// Buys when the SMI falls below its signal line and sells when it rises above.
+///
+public class SmiCorrectStrategy : Strategy
+{
+ private readonly StrategyParam _candleType;
+ private readonly StrategyParam _smiLength;
+ private readonly StrategyParam _signalLength;
+
+ private StochasticOscillator _stochastic;
+ private SimpleMovingAverage _signal;
+ private decimal? _prevSmi;
+ private decimal? _prevSignal;
+
+ ///
+ /// Candle type for strategy calculation.
+ ///
+ public DataType CandleType
+ {
+ get => _candleType.Value;
+ set => _candleType.Value = value;
+ }
+
+ ///
+ /// Period for SMI calculation.
+ ///
+ public int SmiLength
+ {
+ get => _smiLength.Value;
+ set => _smiLength.Value = value;
+ }
+
+ ///
+ /// Smoothing period for the signal line.
+ ///
+ public int SignalLength
+ {
+ get => _signalLength.Value;
+ set => _signalLength.Value = value;
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public SmiCorrectStrategy()
+ {
+ _candleType = Param(nameof(CandleType), TimeSpan.FromHours(4).TimeFrame())
+ .SetDisplay("Candle Type", "Type of candles to use", "General");
+
+ _smiLength = Param(nameof(SmiLength), 13)
+ .SetGreaterThanZero()
+ .SetDisplay("SMI Length", "Period for SMI calculation", "SMI");
+
+ _signalLength = Param(nameof(SignalLength), 5)
+ .SetGreaterThanZero()
+ .SetDisplay("Signal Length", "Smoothing period", "SMI");
+ }
+
+ ///
+ public override IEnumerable<(Security sec, DataType dt)> GetWorkingSecurities()
+ {
+ return [(Security, CandleType)];
+ }
+
+ ///
+ protected override void OnReseted()
+ {
+ base.OnReseted();
+ _prevSmi = null;
+ _prevSignal = null;
+ }
+
+ ///
+ protected override void OnStarted(DateTimeOffset time)
+ {
+ base.OnStarted(time);
+
+ _stochastic = new StochasticOscillator
+ {
+ K = { Length = SmiLength },
+ D = { Length = 1 }
+ };
+
+ _signal = new SimpleMovingAverage { Length = SignalLength };
+
+ var subscription = SubscribeCandles(CandleType);
+ subscription
+ .BindEx(_stochastic, ProcessCandle)
+ .Start();
+
+ var area = CreateChartArea();
+ if (area != null)
+ {
+ DrawCandles(area, subscription);
+ DrawIndicator(area, _stochastic);
+ DrawIndicator(area, _signal);
+ DrawOwnTrades(area);
+ }
+ }
+
+ private void ProcessCandle(ICandleMessage candle, IIndicatorValue stochValue)
+ {
+ if (candle.State != CandleStates.Finished)
+ return;
+
+ var stoch = (StochasticOscillatorValue)stochValue;
+ if (stoch.K is not decimal k)
+ return;
+
+ var signalValue = _signal.Process(new DecimalIndicatorValue(_signal, k, candle.ServerTime));
+ if (!signalValue.IsFormed)
+ {
+ _prevSmi = k;
+ _prevSignal = signalValue.ToDecimal();
+ return;
+ }
+
+ var signal = signalValue.ToDecimal();
+ if (_prevSmi is null || _prevSignal is null)
+ {
+ _prevSmi = k;
+ _prevSignal = signal;
+ return;
+ }
+
+ var crossUp = _prevSmi < _prevSignal && k >= signal;
+ var crossDown = _prevSmi > _prevSignal && k <= signal;
+
+ if (crossDown && Position <= 0)
+ BuyMarket(Volume + Math.Abs(Position));
+ else if (crossUp && Position >= 0)
+ SellMarket(Volume + Math.Abs(Position));
+
+ _prevSmi = k;
+ _prevSignal = signal;
+ }
+}
diff --git a/API/2310_SMI_Correct/README.md b/API/2310_SMI_Correct/README.md
new file mode 100644
index 000000000..42b9fb2a1
--- /dev/null
+++ b/API/2310_SMI_Correct/README.md
@@ -0,0 +1,17 @@
+# SMI Correct Strategy
+
+## Overview
+SMI Correct Strategy implements a trading system based on the Stochastic Momentum Index (SMI) indicator. The strategy watches the SMI line and its moving average signal line. A long position is opened when the SMI crosses below the signal line. A short position is opened when the SMI crosses above the signal line.
+
+## Parameters
+- **Candle Type** – time frame of candles used for calculations.
+- **SMI Length** – number of periods for the Stochastic calculation.
+- **Signal Length** – smoothing period for the signal line.
+
+## How it works
+1. The strategy subscribes to candles of the specified type.
+2. For each finished candle, it updates the Stochastic oscillator and the signal moving average.
+3. When the SMI crosses below the signal line, any short position is closed and a long position is opened.
+4. When the SMI crosses above the signal line, any long position is closed and a short position is opened.
+
+The sample also draws candles and indicator lines on a chart for visualization.
diff --git a/API/2310_SMI_Correct/README_cn.md b/API/2310_SMI_Correct/README_cn.md
new file mode 100644
index 000000000..7c36a89fb
--- /dev/null
+++ b/API/2310_SMI_Correct/README_cn.md
@@ -0,0 +1,17 @@
+# SMI Correct 策略
+
+## 概述
+SMI Correct 策略基于 Stochastic Momentum Index (SMI) 指标进行交易。策略跟踪 SMI 线及其移动平均信号线。当 SMI 线下穿信号线时开多仓;当 SMI 线上穿信号线时开空仓。
+
+## 参数
+- **Candle Type** – 使用的K线周期。
+- **SMI Length** – 计算 SMI 的周期数。
+- **Signal Length** – 信号线的平滑周期。
+
+## 工作原理
+1. 策略订阅指定类型的K线。
+2. 每根收盘K线更新 SMI 和信号线的数值。
+3. 当 SMI 下穿信号线时,平掉空头并开多头。
+4. 当 SMI 上穿信号线时,平掉多头并开空头。
+
+示例还在图表上绘制K线和指标以供可视化。
diff --git a/API/2310_SMI_Correct/README_ru.md b/API/2310_SMI_Correct/README_ru.md
new file mode 100644
index 000000000..66afdaab7
--- /dev/null
+++ b/API/2310_SMI_Correct/README_ru.md
@@ -0,0 +1,17 @@
+# Стратегия SMI Correct
+
+## Обзор
+Стратегия SMI Correct реализует торговую систему на основе индикатора Stochastic Momentum Index (SMI). Стратегия отслеживает линию SMI и её сигнальную скользящую среднюю. Длинная позиция открывается при пересечении SMI ниже сигнальной линии. Короткая позиция открывается при пересечении SMI выше сигнальной линии.
+
+## Параметры
+- **Candle Type** – таймфрейм используемых свечей.
+- **SMI Length** – количество периодов для расчёта SMI.
+- **Signal Length** – период сглаживания сигнальной линии.
+
+## Как это работает
+1. Стратегия подписывается на свечи выбранного таймфрейма.
+2. Для каждой завершённой свечи обновляются значения стохастика и сигнальной средней.
+3. При пересечении SMI вниз под сигнальную линию закрывается короткая позиция и открывается длинная.
+4. При пересечении SMI вверх над сигнальной линией закрывается длинная позиция и открывается короткая.
+
+Пример также отображает свечи и индикаторы на графике.