Стратегия разворота стоп-сигнала, следующего за трендом


Дата создания: 2024-02-01 14:54:09 Последнее изменение: 2024-02-01 14:54:09
Копировать: 0 Количество просмотров: 829
1
Подписаться
1617
Подписчики

Стратегия разворота стоп-сигнала, следующего за трендом

Обзор

Тренд-следящая стоп-стоп-обратная стратегия - это стратегия, которая использует показатель Parabolic SAR для идентификации тенденции и вступает в обратную позицию при обратном тренде. Эта стратегия одновременно сочетает в себе механизмы стоп-стоп и стоп-стоп для управления риском.

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

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

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

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

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

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

Эта стратегия, в сочетании с трендовыми индикаторами и механизмом стоп-стоп, имеет следующие основные преимущества:

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

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

В этой стратегии также есть некоторые риски, о которых следует помнить:

  1. Параболическая SAR не идеальна, иногда посылает ошибочный сигнал.
  2. Стоп-цены должны быть разумными, в противном случае они могут быть преждевременными.
  3. Также на конечную прибыль могут повлиять комиссионные.
  4. Новый тренд lengthening может быть более кратковременным после реверсии.

Эти риски можно решить путем корректировки параметров оптимизации или фильтрации с другими показателями.

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

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

  1. Оптимизация параметров Parabolic SAR для поиска оптимального сочетания параметров.
  2. Попытайтесь использовать различные стратегии по прекращению убытков, такие как остановка убытков.
  3. Добавление показателей или условий для фильтрации обратных торговых сигналов.
  4. Добавление позиционного контроля, увеличение или сокращение позиции в зависимости от рыночных условий.
  5. Параметры корректировки для различных торговых сортов.

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

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

Исходный код стратегии
/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Parabolic SAR Strategy", overlay=true)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na
if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := min(AF + increment, maximum)
	if uptrend
		SAR := min(SAR, low[1])
		if bar_index > 1
			SAR := min(SAR, low[2])
	else
		SAR := max(SAR, high[1])
		if bar_index > 1
			SAR := max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)
	if barstate.isconfirmed
		if uptrend
			strategy.entry("ParSE", strategy.short, stop=nextBarSAR, comment="ParSE")
			strategy.cancel("ParLE")
		else
			strategy.entry("ParLE", strategy.long, stop=nextBarSAR, comment="ParLE")
			strategy.cancel("ParSE")
plot(SAR, style=plot.style_cross, linewidth=3, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=3, color=color.aqua)
//Stop Loss Inputs
use_short_stop_loss = input(false, title="Short Stop Loss", group="Stop Loss and Take Profit", inline="Short_SL")
short_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Short_SL") * 0.01
use_long_stop_loss = input(false, title="Long Stop Loss", group="Stop Loss and Take Profit", inline="Long_SL")
long_stop_loss = input(title="(%)", type=input.float, minval=0.0, step=0.1, 
     defval=5, group="Stop Loss and Take Profit", inline="Long_SL") * 0.01

//Take Profit Inputs     
use_short_take_profit = input(false, title="Short Take Profit", group="Stop Loss and Take Profit", inline="Short_TP")
short_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Short_TP") * .01
use_long_take_profit = input(false, title="Long Take Profit", group="Stop Loss and Take Profit", inline="Long_TP")
long_take_profit = input(title="(%)", type=input.float, minval=0.0, step=0.1,
     defval = 20, group="Stop Loss and Take Profit", inline="Long_TP") * .01


longStopPrice  = strategy.position_avg_price * (1 - long_stop_loss)
shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss)
longLimitPrice = strategy.position_avg_price * (1 + long_take_profit)
shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit)


if (strategy.position_size > 0.0)
    if (use_long_stop_loss and not use_long_take_profit)
        strategy.exit("Long", stop = longStopPrice)
    if (use_long_take_profit and not use_long_stop_loss)
        strategy.exit("Long", limit = longLimitPrice)
    if (use_long_take_profit and use_long_stop_loss)
        strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice)
if (strategy.position_size < 0.0)
    if (use_short_stop_loss and not use_short_take_profit)
        strategy.exit("Short", stop = shortStopPrice)
    if (use_short_take_profit and not use_short_stop_loss)
        strategy.exit("Short", limit = shortLimitPrice)
    if (use_short_take_profit and use_short_stop_loss)
        strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice)

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)