
В основе этой стратегии лежит использование индекса скольжения скользящих средних в качестве сигнала покупки и продажи, в сочетании с последовательными стоп-лоссами и стоп-лоссами для блокировки прибыли и контроля риска. Стратегия проста в реализации и применима к количественным сделкам с акциями и другими финансовыми продуктами.
Рассчитывают быструю ЭМА и медленную ЭМА. Быстрая ЭМА имеет 20-дневный и медленная ЭМА - 50-дневный циклы. При прохождении медленной ЭМА над быстрой ЭМА генерируется сигнал покупки; при прохождении медленной ЭМА под быстрой ЭМА генерируется сигнал продажи.
После входа настройка стоп-слега, в зависимости от направления удержания позиции настройка стоп-слега для многопозиций и стоп-слега для пустых позиций, например, 7%. Стоп-слега будет автоматически корректироваться на каждую K-линию, блокируя максимально возможную прибыль.
Одновременно устанавливается стоп-позиция, в зависимости от направления удержания позиции и цены входа устанавливается соответственно процент стоп-позиции с несколькими позициями и стоп-позиции с пустыми позициями, например, 2%. Стоп-позиция фиксируется, чтобы предотвратить чрезмерные потери.
Сравнение стоп-стоп и стоп-стоп, выбор стоп-позиции, которая ближе к рыночной цене, для данной сделки, выпуск стоп-листов.
Сигналы скользящих средних просты в понимании и в применении.
Следовательно, стоп-лост позволяет максимально закрепить прибыль, а также предотвратить ошибочные суждения, которые приводят к ненужным потерям.
Процент стоп-лоса легко подстраивается, чтобы контролировать максимальные потери на одну сделку.
В сочетании с последовательными и фиксированными стоп-стопами, они блокируют прибыль и контролируют риск.
Движущаяся средняя стратегия может создавать ложные сигналы и вводить более сильные условия фильтрации.
Стрельба может привести к преждевременному прекращению убытков.
Неправильная настройка фиксированного стоп-позиции может быть слишком радикальной или консервативной, необходимо проверить и скорректировать процентные параметры.
Механический стоп может пропустить рыночный поворот, который можно оценить в сочетании с техническими показателями.
Попробуйте различные комбинации EMA для поиска оптимального баланса.
Включение фильтрации ложных сигналов в таких показателях, как объем сделок.
Проверка большего количества акций, чтобы найти подходящий стоп-лосс.
Попробуйте включить подвижный стоп и изменить положение стопа в зависимости от рынка.
Показатели, такие как RSI, в сочетании с остановкой, определяют время убытка.
Стратегия, объединяющая сигналы для торговли с подвижной средней, стоп-стоп и стоп-стоп, оптимизируется с помощью параметров, может применяться к различным акциям и товарам, обеспечивает стабильную прибыль и при этом строго контролирует риск, что заслуживает количественного изучения и постоянной оптимизации практики трейдеров.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 10m
basePeriod: 1m
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/
// © wouterpruym1828
//@version=5
strategy(title=" Combining Trailing Stop and Stop loss (% of instrument price)",
overlay=true, pyramiding=1, shorttitle="TSL&SL%")
//INDICATOR SECTION
// Indicator Input options+
i_FastEMA = input.int(title = "Fast EMA period", minval = 0, defval = 20)
i_SlowEMA = input.int(title = "Slow EMA period", minval = 0, defval = 50)
// Calculate moving averages
fastEMA = ta.ema(close, i_FastEMA)
slowEMA = ta.ema(close, i_SlowEMA)
// Plot moving averages
plot(fastEMA, title="Fast SMA", color=color.blue)
plot(slowEMA, title="Slow SMA", color=color.orange)
//STRATEGY SECTION
// Calculate trading conditions
buy = ta.crossover(fastEMA, slowEMA)
sell = ta.crossunder(fastEMA, slowEMA)
// STEP 1:
// Configure trail stop loss level with input options (optional)
longTrailPerc = input.float(title="Long Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01
shortTrailPerc = input.float(title="Short Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01
//Configure stop loss level with input options (optional)
longStopPerc = input.float(title="Long Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01
shortStopPerc = input.float(title="Short Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01
// STEP 2:
// Determine trail stop loss prices
longTrailPrice = 0.0, shortTrailPrice = 0.0
longTrailPrice := if (strategy.position_size > 0)
stopValue = high * (1 - longTrailPerc)
math.max(stopValue, longTrailPrice[1])
else
0
shortTrailPrice := if (strategy.position_size < 0)
stopValue = low * (1 + shortTrailPerc)
math.min(stopValue, shortTrailPrice[1])
else
999999
// Determine stop loss prices
entryPrice = 0.0
entryPrice := strategy.opentrades.entry_price(strategy.opentrades - 1)
longLossPrice = entryPrice * (1 - longStopPerc)
shortLossPrice = entryPrice * (1 + shortStopPerc)
// Plot stop loss values for confirmation
plot(series=(strategy.position_size > 0) ? longTrailPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Long Trail Stop")
plot(series=(strategy.position_size < 0) ? shortTrailPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Short Trail Stop")
plot(series=(strategy.position_size > 0) ? longLossPrice : na,
color=color.olive, style=plot.style_cross,
linewidth=2, title="Long Stop Loss")
plot(series=(strategy.position_size < 0) ? shortLossPrice : na,
color=color.olive, style=plot.style_cross,
linewidth=2, title="Short Stop Loss")
// Submit entry orders
if (buy)
strategy.entry("Buy", strategy.long)
if (sell)
strategy.entry("Sell", strategy.short)
//Evaluating trailing stop or stop loss to use
longStopPrice = longTrailPrice < longLossPrice ? longLossPrice : longTrailPrice
shortStopPrice = shortTrailPrice > shortLossPrice ? shortLossPrice : shortTrailPrice
// STEP 3:
// Submit exit orders for stop price
if (strategy.position_size > 0)
strategy.exit(id="Buy Stop", stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit(id="Sell Stop", stop=shortStopPrice)