Стратегия динамической фиксации прибыли на основе скользящей средней


Дата создания: 2023-09-18 21:46:47 Последнее изменение: 2023-09-18 21:46:47
Копировать: 3 Количество просмотров: 606
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия основана на движущихся средних, которые определяют направление тренда, с определенным пропорциональным ATR-стоп-стоп, и в сочетании с ATR динамически корректируют позиции. Цель состоит в том, чтобы следить за трендом, чтобы получить прибыль, и одновременно контролировать риск.

Принципы

Стратегия использует простую скользящую среднюю длиной N для определения направления тренда. При использовании длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длины длиной длины длины длины длины длины длины длины длины длины длины длины длины длины длины длины длины длины дли

После входа, стратегия использует определенное кратное ATR в качестве остановки, если длинная позиция остановка остановки в качестве Entry Price + ATR * Factor. Когда цена превышает остановку остановка выходит из игры.

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

Преимущества

  1. Используя движущуюся среднюю для определения направления тенденции, есть определенная способность отслеживать тенденции.

  2. ATR-остановка выгодна, но не позволяет повернуть назад.

  3. Динамические позиции могут быть скорректированы, чтобы контролировать риск в зависимости от степени волатильности рынка.

  4. Параметры стоп-фактора и позиции могут быть настроены.

  5. В сочетании с стоп-лоском риск может быть еще более ограничен.

Риски и решения

  1. Задержка в движущихся средних может привести к задержке входа. Можно тестировать более чувствительные параметры.

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

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

  4. Риск увеличения убытков при отсутствии установленного стоп-стапа. Можно включить мобильную стоп-стратегию.

  5. Неправильный выбор показателя, например, низкий уровень волатильности активов, эта стратегия может быть неэффективной. Следует выбрать показатель более высокой волатильности.

Оптимизация

  1. Тестирование различных комбинаций параметров, чтобы найти оптимальные.

  2. Оптимизация логики открытия позиции, например, добавление фильтров на другие показатели.

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

  4. Управление позициями в сочетании с показателями волатильности.

  5. Присоединиться к механизму повторного вступления и продлить срок хранения.

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

Эта стратегия использует движущиеся средние, чтобы оценить тенденцию, остановить в ATR, и динамически корректировать позиции. Преимущество заключается в том, что есть определенная способность отслеживать тенденцию, которая может быть скорректирована с помощью параметров, чтобы контролировать риск. Однако существуют проблемы, такие как сложность выбора параметров, чрезмерная остановка.

Исходный код стратегии
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 5m
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/
// © dongyun

//@version=4
strategy("利润目标止损的移动平均线", overlay=true)

period = input(80,'')
ptper = input(252,'')
ptfactor = input(12,'')
sizeper = input(20, '')

trend = 0.0
signal = 0
size = 1.0
investment = 100000
atrange = 0.0
ptrange = 0.0
stoph = 0.0
stopl = 0.0


if sizeper != 0
	atrange := atr(sizeper)

if atrange == 0 or sizeper == 0 
	size := 1
else
	size := investment/atrange * 0.1

trend := sma(close,period)


if signal != 1 and nz(trend[1]) < nz(trend[2]) and trend > nz(trend[1])
	strategy.entry('long',strategy.long, comment='open_long')
	signal := 1
else
    signal := nz(signal[1])
    
if signal != -1 and nz(trend[1]) > nz(trend[2]) and trend < nz(trend[1])
	strategy.entry('short',strategy.short, comment='open_short')
	signal := -1
else
    if signal == 0
        signal := nz(signal[1])

ptrange := atr(ptper)

if strategy.position_size > 0
	strategy.exit("exit_long", "long", qty = strategy.position_size, limit = close + ptfactor*ptrange , comment='trail_long') 
else
	if strategy.position_size < 0
		strategy.exit("exit_short", "short", qty = abs(strategy.position_size), limit = close - ptfactor*ptrange, comment='trail_short')