Расширенная торговая стратегия, основанная на откате объема и цены и множественных тейк-профитах


Дата создания: 2023-12-12 15:39:19 Последнее изменение: 2023-12-12 15:39:19
Копировать: 0 Количество просмотров: 612
1
Подписаться
1621
Подписчики

Расширенная торговая стратегия, основанная на откате объема и цены и множественных тейк-профитах

Обзор

Эта стратегия сочетает в себе пересечение скользящих средних, относительно сильный индекс (RSI) и суждение о значительном увеличении объема торгов, создание позиций, чтобы сделать дополнительный пробел, когда цена попадает в определенную долю после высокого объема торгов, и установка трех прогрессивных стоп-листов для блокировки различных пропорций прибыли. У стратегии также есть опциональная функция отслеживания стоп-убытков, чтобы поймать возможность продолжения благоприятного изменения цены.

Стратегический принцип

Золотой пересечение быстрого и медленного движущегося средних обеспечивает ранние сигналы о начале изменения тренда. RSI используется для оценки состояния перекупа и перепродажи и помогает избежать появления сигналов выхода на рынок в этих сценариях, чтобы гарантировать стабильность сигнала. Когда объем торгов значительно превышает средний уровень, это означает, что внимание рынка было сосредоточено на каком-то потенциальном изменении цены.

Принцип получения и остановки выхода из пустого сигнала аналогичен принципу многодела, который здесь не рассматривается. Следует отметить, что эта стратегия обладает одновременной способностью многодела и многодела.

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

Эта стратегия имеет следующие основные преимущества:

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

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

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

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

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

  6. Применяется также для многооборотных и пустых сделок, прибыль может быть получена как при повышении, так и при падении рынка, что увеличивает практичность стратегии.

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

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

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

  2. Неправильная настройка параметров RSI также может привести к проникновению в зону перекупа и перепродажи.

  3. Субсидирование объема торгов не всегда означает существенное изменение цены, и эталонный критерий объема торгов может быть соответствующим образом скорректирован.

  4. Слишком большое или слишком маленькое снижение цены и объема торгов может повлиять на сроки выхода на рынок, что также требует корректировки в соответствии с рынком.

  5. Установленная стоп-магнитация не гарантирует полную продажу стоп-оборот, а резкие изменения рынка могут привести к сдвигу.

  6. Следить за стоп-лоском: если вы установили слишком большую величину, вы можете слишком рано выйти из стоп-лосса и потерять большую прибыль.

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

Направление оптимизации

В этой стратегии есть место для дальнейшей оптимизации:

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

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

  3. Добавлена функция динамической корректировки стоп/стоп-лосс, основанная на рыночных колебаниях, позволяющая стратегии автоматически корректировать стоп-прибыль в зависимости от текущих рыночных колебаний.

  4. Использование метода динамического сближения для оптимизации фактора регресса в режиме реального времени в зависимости от взаимосвязи между общим падением и падением и отдельными акциями, чтобы выбрать оптимальное время для создания позиции.

  5. Использование многофакторной модели в сочетании с эмоциональным анализом и анализом правил взаимосвязи может значительно повысить эффективность стратегии.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true)

// Parametreler
fastLength = input(12, minval=1, title="Fast Moving Average")
slowLength = input(26, minval=1, title="Slow Moving Average")
rsiPeriod = input(14, minval=1, title="RSI Period")
volLength = input(20, minval=1, title="Volume MA Length")
volMultiplier = input(2.0, title="Volume Spike Multiplier")
trailOffset = input(1, title="Trailing Offset (%)")
usdtPerTrade = input(50000, title="USDT per Trade")
retraceFactor = input(0.8, title="Retracement Factor for Entry")
takeProfit1 = input(1, title="Take Profit 1 (%)")
takeProfit2 = input(2, title="Take Profit 2 (%)")
takeProfit3 = input(3, title="Take Profit 3 (%)")
trailForTP = input(true, title="Use Trailing Stop for Take Profits")

// Hesaplamalar
fastMA = sma(close, fastLength)
slowMA = sma(close, slowLength)
rsi = rsi(close, rsiPeriod)
volMA = sma(volume, volLength)
volumeSpike = volume > volMA * volMultiplier

// Durum Değişkenleri ve Saklanan Değerler
var float spikeVolume = na
var float spikePrice = na
var int direction = 0

// Alım/Satım Sinyalleri
longCondition = crossover(fastMA, slowMA) and rsi < 70
shortCondition = crossunder(fastMA, slowMA) and rsi > 30

// Hacim Spike ve Fiyat Hareketinin Saklanması
if (longCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := 1
else if (shortCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := -1

// Retracement Kontrolü ve Giriş Emirleri
if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100))
    strategy.entry("Long", strategy.long, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0
else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100))
    strategy.entry("Short", strategy.short, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0

// Take Profit Emirleri
if strategy.position_size > 0
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

if strategy.position_size < 0
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

// Pozisyon çıkışları
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)