Эффективная стратегия двойного остановки прибыли и остановки убытков с прорывом колебания

Автор:Чао Чжан, Дата: 2024-02-01 14:46:00
Тэги:

img

Обзор

Это высокоэффективная двунаправленная торговая стратегия, разработанная на основе индикаторов канала и принципов прорыва.

Логика стратегии

Стратегия использует индикаторы SMA для построения каналов. Она входит в длинный, когда цена выходит выше канала, и входит в короткий, когда цены выходят ниже канала.

В частности, стратегия рассчитывает верхний и нижний рельсы канала. Верхний рельс представляет собой 10-периодную SMA ценового раскрытия умноженное на 1,02; Нижний рельс представляет собой 10-периодную SMA самой низкой цены, разделенную на 1,02.

После длинного хода два уровня получения прибыли устанавливаются на уровне 1% и 3% соответственно, с остановкой потери 3%. Сокращение имеет аналогичные настройки прибыли / убытка. Благодаря принципам прорыва стратегия может достичь относительно высокого уровня выигрыша; через двойные прибыли она может зафиксировать больше прибыли; через остановку потери она контролирует сумму потери по торговле.

Анализ преимуществ

Такие стратегии прорыва канала имеют такие преимущества, как четкие входные сигналы, высокая частота работы, многоуровневое получение прибыли и т. Д. Основными преимуществами являются:

  1. Использование индикаторов канала для определения диапазона колебаний цен и выбора точек прорыва для входа может получить относительно высокий показатель выигрыша.

  2. Работают по 1-минутному графику, чтобы поймать больше возможностей и соответствовать потребностям быстрого трейдинга.

  3. Имея два уровня получения прибыли позволяет зафиксировать больше прибыли, когда тренд идет хорошо.

  4. Относительно широкий стоп-лосс дает движению цены некоторое пространство, избегая преждевременного стоп-лосса.

Анализ рисков

Самый большой риск при таких стратегиях выхода - ложные выходы, приводящие к убыткам.

  1. Сигналы прорыва могут быть ложными прорывами и не достигать прибыли или остановки потери.

  2. Стоп-лосс порог в 3% может быть сложным для некоторых трейдеров выдержать.

  3. Эта стратегия больше подходит для краткосрочной торговли и требует мониторинга.

Руководство по оптимизации

Стратегии прорыва тренда, подобные этому, могут оптимизироваться главным образом в следующих аспектах:

  1. Испытайте больше индикаторов, чтобы создать каналы и найти более надежные, чтобы уменьшить ложные прорывы.

  2. Оптимизируйте настройку параметров скользящей средней, найдите лучшие комбинации параметров.

  3. Испытывайте более сложные механизмы ввода, такие как добавление фильтров громкости и т.д.

  4. Установка комбинаций параметров, адаптируемых к различным характеристикам продукции, для достижения самоприспособления параметров.

  5. Добавьте механизмы автоматической остановки потери, которые динамически регулируют остановку потери с течением времени.

Заключение

Это эффективная двунаправленная торговая стратегия, основанная на индикаторах канала. Она входит на рынки с помощью принципов прорыва, двойного получения прибыли для закрепления вознаграждения, остановки потери для контроля рисков. Дальнейшая оптимизация может достичь еще лучших результатов. Но трейдерам все равно нужно остерегаться рисков, таких как ложные прорывы.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Erweiterte SSL Channel Strategy mit 2 TPs, SL und BE", overlay=true)

period = input(title="Period", defval=10)
len = input(title="Length", defval=10)
multiplier = input(title="Multiplier", defval=1.0, minval=1.0)
tp1Percent = input(title="Take Profit 1 (%)", defval=1.0) / 100
tp2Percent = input(title="Take Profit 2 (%)", defval=20.0) / 100
slPercent = input(title="Stop Loss (%)", defval=3.0) / 100

var float tp1Price = na
var float tp2Price = na
var float slPrice = na
var bool tp1Reached = false

smaHigh = sma(high * multiplier, len)
smaLow = sma(low / multiplier, len)

Hlv = 0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : nz(Hlv[1])
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)

longCondition = crossover(close, sslUp)
shortCondition = crossunder(close, sslDown)

if (longCondition)
    strategy.entry("Long", strategy.long)
    tp1Price := strategy.position_avg_price * (1 + tp1Percent)
    tp2Price := strategy.position_avg_price * (1 + tp2Percent)
    slPrice := strategy.position_avg_price * (1 - slPercent)
    tp1Reached := false

if (shortCondition)
    strategy.entry("Short", strategy.short)
    tp1Price := strategy.position_avg_price * (1 - tp1Percent)
    tp2Price := strategy.position_avg_price * (1 - tp2Percent)
    slPrice := strategy.position_avg_price * (1 + slPercent)
    tp1Reached := false

// Take Profit, Break-even und Stop-Loss Logik
if (strategy.position_size > 0) // Long-Positionen
    if (not tp1Reached and close >= tp1Price)
        strategy.close("Long", qty_percent = 50)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close < tp1Price)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
    if (close >= tp2Price)
        strategy.close("Long", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Long", "Long", stop = slPrice)

if (strategy.position_size < 0) // Short-Positionen
    if (not tp1Reached and close <= tp1Price)
        strategy.close("Short", qty_percent = 50)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close > tp1Price)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
    if (close <= tp2Price)
        strategy.close("Short", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Short", "Short", stop = slPrice)


Больше