Эта стратегия основана на движущихся средних, которые определяют направление тренда, с определенным пропорциональным ATR-стоп-стоп, и в сочетании с ATR динамически корректируют позиции. Цель состоит в том, чтобы следить за трендом, чтобы получить прибыль, и одновременно контролировать риск.
Стратегия использует простую скользящую среднюю длиной N для определения направления тренда. При использовании длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длиной длины длиной длины длины длины длины длины длины длины длины длины длины длины длины длины длины длины длины длины дли
После входа, стратегия использует определенное кратное ATR в качестве остановки, если длинная позиция остановка остановки в качестве Entry Price + ATR * Factor. Когда цена превышает остановку остановка выходит из игры.
Кроме того, стратегия корректирует позиции на величину ATR. Размер ATR представляет собой рыночную волатильность, размер позиции противоположен ATR.
Используя движущуюся среднюю для определения направления тенденции, есть определенная способность отслеживать тенденции.
ATR-остановка выгодна, но не позволяет повернуть назад.
Динамические позиции могут быть скорректированы, чтобы контролировать риск в зависимости от степени волатильности рынка.
Параметры стоп-фактора и позиции могут быть настроены.
В сочетании с стоп-лоском риск может быть еще более ограничен.
Задержка в движущихся средних может привести к задержке входа. Можно тестировать более чувствительные параметры.
Изменение размера ATR может привести к тому, что стоп будет слишком маленьким или слишком большим. Можно добавить ATR в среднюю линию, чтобы извлечь ее тенденцию.
При чрезмерном колебании позиция может оказать незначительное влияние на прибыль. Можно установить нижний предел позиции.
Риск увеличения убытков при отсутствии установленного стоп-стапа. Можно включить мобильную стоп-стратегию.
Неправильный выбор показателя, например, низкий уровень волатильности активов, эта стратегия может быть неэффективной. Следует выбрать показатель более высокой волатильности.
Тестирование различных комбинаций параметров, чтобы найти оптимальные.
Оптимизация логики открытия позиции, например, добавление фильтров на другие показатели.
Изучение динамических стратегий остановки и прекращения убытков, чтобы сделать остановку и прекращение убытков более гибкими.
Управление позициями в сочетании с показателями волатильности.
Присоединиться к механизму повторного вступления и продлить срок хранения.
Эта стратегия использует движущиеся средние, чтобы оценить тенденцию, остановить в 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')