
Тренд-трекерная стратегия подвижных средних - это стратегия, основанная на долгосрочных движущихся средних, которые определяют направление тренда, а также на фильтрации средних истинных колебаний для отслеживания ошибочных движений. Эта стратегия использует индикаторные движущиеся средние для определения направления тренда, а затем использует средние истинные колебания для определения того, является ли это ложным прорывом. Это может эффективно отфильтровать шокирующие движения и снизить общий откат стратегии.
Эта стратегия основана на следующих принципах:
Эта стратегия имеет следующие преимущества:
Однако есть и потенциальные риски этой стратегии:
Эта стратегия может быть оптимизирована в следующих аспектах:
Тренд-следящая стратегия движущейся средней в целом является очень простой и практичной стратегией тренда. Она одновременно обладает хорошим эффектом контроля риска. Хотя стратегия не учитывает слишком много факторов, все еще требует тщательного тестирования и оптимизации параметров и методов остановки, в целом она является эффективной стратегией, которую легко освоить и настроить. Ее простая логика торговли и параметры настройки позволяют широко применять ее для различных сортов, особенно для торговли цифровыми валютами, такими как биткойн.
/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 00:00:00
period: 1d
basePeriod: 1h
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/
// © Inkedlau
//@version=5
strategy('Swing Trend Strategy', overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_value=0.1)
use_short = input.bool(false, 'Open Short Positions?')
exit_type = input.bool(true, 'Exit trade on Moving Average Cross?')
src = input.source(close, 'Source')
len = input.int(200, 'Trend Length')
ma_type = input.string('ema', 'Moving Average Type', options=['sma', 'ema', 'rma', 'wma', 'vwma'], tooltip='Select the type of Moving Average to use to calculate the Trend')
atr_multiplier = input.float(1., 'ATR Threshold', step=0.5, tooltip='Filter the ranging market using the Average True Range')
// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A TREND FOLLOWING SYSTEM THAT USES A COMBINATION OF MOVING AVERAGE AND AVERAGE TRUE RANGE
// TO SPOT THE TRENDS AND ENTER THE MARKET ACCODINGLY.
// THE MARKET IS CONSIDERED IN AN UPTREND WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE + THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// THE MARKET IS CONSIDERED IN AN DOWNTREND WHEN THE PRICE CLOSES BLOW THE MOVING AVERAGE - THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// BY DEFAULT, THE STRATEGY WILL ENTER LONG WHEN AN UPTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES BELOW THE MOVING AVERAGE
// THE STRATEGY WILL ENTER SHORT WHEN A DOWNTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE
// ------------------ INDICATORS CALCULATION------------------
my_ma()=>
ma = close
if ma_type == 'sma'
ma := ta.sma(src, len)
if ma_type == 'ema'
ma := ta.ema(src, len)
if ma_type == 'rma'
ma := ta.rma(src, len)
if ma_type == 'wma'
ma := ta.wma(src, len)
if ma_type == 'vwma'
ma := ta.vwma(src, len)
ma
trend = my_ma()
atr = ta.atr(10)
uptrend = trend + atr * atr_multiplier
downtrend = trend - atr * atr_multiplier
// ---------------- ENTRY AND EXIT CONDITIONS ----------------
open_long = strategy.position_size == 0 and src > uptrend
close_long = exit_type ? strategy.position_size > 0 and src < trend : strategy.position_size > 0 and src < downtrend
open_short = use_short and strategy.position_size == 0 and src < downtrend
close_short = exit_type ? strategy.position_size < 0 and src > trend : strategy.position_size < 0 and src > uptrend
strategy.entry('long', strategy.long, when=open_long)
strategy.close('long', when=close_long)
strategy.entry('short', strategy.short, when=open_short)
strategy.close('short', when=close_short)
// ------------------ PLOTTING AND COLORING ------------------
tcolor = src > uptrend ? color.green : src < downtrend ? color.red : na
ptrend = plot(trend, color=color.blue, linewidth=1)
puptrend = plot(uptrend, color=color.green, linewidth=1)
pdowntrend = plot(downtrend, color=color.red, linewidth=1)
pclose = plot(close, color=na)
fill(puptrend, pclose, color=close > uptrend ? color.green : na, transp = 90)
fill(pdowntrend, pclose, color=close < downtrend ? color.red : na, transp = 90)