Ядром этой стратегии является использование экспоненциальных скользящих средних перекресток в качестве торговых сигналов, в сочетании с отслеживанием стоп-лосса и процентным стоп-лосом для блокировки прибыли и контроля рисков.
Вычислить быструю EMA и медленную EMA, причем быструю EMA составляет 20 дней, а медленную EMA - 50 дней.
После входа на рынок устанавливается стоп-лосс на основе направления хранения, например, 7% для длинной позиции и 7% для короткой позиции.
В то же время устанавливается цена остановки потери на основе цены входа и направления держания, например, на 2% ниже цены входа для длинной торговли и на 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)