이 전략은 이동 평균을 기반으로 트렌드 방향을 판단하고, ATR의 일정 비율로 중지하고, ATR의 동적 조정 포지션을 결합합니다. 목표는 트렌드를 추적하여 수익을 창출하면서 위험을 제어하는 것입니다.
전략은 길이 N의 간단한 이동 평균을 사용하여 트렌드 방향을 판단한다. 단기 SMA에서 긴 SMA를 착용 할 때, 더 많이하고, 단기 SMA에서 긴 SMA를 착용 할 때, 공백을 한다.
진입 후, 전략은 ATR의 일정한 배수를 스톱로 설정하고, 장거리 포지션의 경우 스톱은 Entry Price + ATR * Factor이다. 가격이 스톱을 초과했을 때 스톱은 출전한다.
또한, 전략은 ATR의 크기로 포지션을 조정한다. 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')