
이 전략은 트렌드 추적 스톱 손실과 스톱 탈퇴 논리를 결합하여 트렌드를 지속적으로 추적하여 수익을 얻습니다. 전략은 평평선을 사용하여 트렌드 방향을 판단하고, 가격이 평평선을 돌파하면 거래 신호를 발생시킵니다. 전략은 다수 포지션에 진입 한 후, 전략은 ATR 값에 따라 스톱 손실 거리를 설정하고, 동시에 트렌드 추적 스톱 손실 논리를 사용하여 스톱 손실 거리를 조정합니다. 이익을 보호하면서 동시 트렌드를 추적합니다.
사용자 입력된 응답 시간 범위에 따라 응답의 시작 및 종료 시간을 설정합니다.
긴 포지션과 짧은 포지션의 스톱 손실 가격과 스톱 손실 추적 비율을 설정합니다.
가격이 평균선을 돌파했을 때 더 많은 신호가 발생하면 더 많은 입장이 진행됩니다.
ATR 값에 따라 스톱로스 거리를 계산하고 스톱로스 가격을 설정한다.
가격이 계속 상승하면, 추적하여 스톱로스 거리를 조정하여 점차적으로 상승시켜 더 많은 수익을 확보하십시오.
가격이 설정된 정지값에 도달했을 때, 부분적으로 청산된 포지션은 정지한다.
평균선 아래로 떨어지면 코카이 신호가 발생하면 코카이 입구를 한다.
ATR 값에 따라 스톱로스 거리를 계산하고 스톱로스 가격을 설정한다.
가격이 계속 하락할 때, 추적하여 스톱로스 거리를 조정하여 더 많은 수익을 위해 점진적으로 아래로 이동하십시오.
가격이 설정된 정지값으로 내려가면 부분적으로 평점 정지
트렌드 추적 스톱 로드 메커니즘을 사용하여 수익을 보호하면서 지속적으로 트렌드를 추적 할 수 있으며, 전통적인 고정 스톱 로드 거리보다 더 우수합니다.
ATR 지표와 함께 동적 중지 거리를 계산하면 시장의 변동에 효과적으로 대응할 수 있으며, 중지 손실이 유발되는 확률을 줄일 수 있다.
부분 중단 논리는 수익의 일부를 잠금하고 철회 위험을 줄일 수 있습니다.
전략 논리는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉽습니다.
동향이 급격히 반전되면, 정지 거리가 너무 커서 정지할 수 없고, 더 큰 손실을 초래할 수 있다.
ATR 지표의 계산된 중지 거리는 너무 유연할 수 있으며, 시장 소음으로 인해 자주 중단되는 경우가 있다.
일부 스피드 비율이 잘못 설정되어 트렌드 기회를 놓치거나 손실을 증가시킬 수 있습니다.
최적화가 필요한 파라미터는 ATR 주기, 손해 추적 비율, 부분 정지 비율 등이 많으며, 최적화가 더 어렵다.
전략은 평균선과 ATR 지표에만 기반하며, 이 지표들이 잘못된 신호를 내면 거래 오류가 발생한다.
다른 지표 필터링 거래 신호와 결합하여 일률적인 잘못된 신호를 방지 할 수 있습니다. 예를 들어 MACD, KD 등.
고정된 부분 정지를 동적 비율 정지로 바꾸어 트렌드 강도에 따라 조정하는 것을 고려할 수 있다.
다양한 ATR 주기 파라미터를 테스트할 수 있으며, 가장 안정적인 파라미터를 사용한다. 또한 다른 지표와 결합하여 스톱 손실 거리를 결정할 수 있다.
기계 학습 알고리즘을 도입하여 알고리즘을 통해 자동으로 매개 변수를 최적화하고 시장에 따라 실시간으로 매개 변수를 조정할 수 있다.
Deep Learning 등과 같은 고급 알고리즘과 결합하여 모형을 통해 트렌드를 자동으로 인식하고 거래 신호를 생성할 수 있다.
이 전략은 트렌드 추적 스톱, ATR 동적 스톱 및 부분 스톱 논리를 통합하여 트렌드를 지속적으로 따라 스톱 할 수 있으며, 회수 제어에 있어서도 장점이 있습니다. 그러나 전략에는 트렌드 판단 지표의 단순성, 변수 최적화의 어려움 등과 같은 제한이 있습니다. 이것은 우리에게 좋은 최적화 방향을 제공합니다. 더 많은 지표와 기술 수단을 도입함으로써 전략의 안정성과 수익률을 더욱 향상시킬 수 있습니다.
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/
// © felipefs
//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)
//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false
//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0
long_stop_price := if (strategy.position_size > 0)
stopValue = close * (1 - long_trail_perc)
max(stopValue, long_stop_price[1])
else
0
short_stop_price := if (strategy.position_size < 0)
stopValue = close * (1 + short_trail_perc)
min(stopValue, short_stop_price[1])
else
999999
//Função de Debug
debug(value) =>
x = bar_index
y = close
label.new(x, y, tostring(value))
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
//ATR Stop
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR
// if (strategy.position_size > 0)
// xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)