
이 전략은 일정 주기 내의 최고 가격과 최저 가격을 계산하여 상하를 형성하고, 가격이 상하를 돌파할 때 더 많이 하고, 가격이 하하를 돌파할 때 평지한다. 이 전략은 트렌드의 강도 단계를 포착하고, 트렌드 돌파를 통해 입문 시기를 판단한다.
이 전략은 우선 지난 20개의 K선에서 가장 높은 가격과 가장 낮은 가격을 계산하여 상반도와 하반도를 형성한다. 현재 K선 종점 가격이 상반도보다 높을 때, 더 많이 하고, 가격이 하반도를 넘어갈 때, 평지 상장을 한다.
구체적으로, 전략은 highestest 및 lowest 함수를 통해 최근 20개의 K선의 최고 가격과 최저 가격을 계산하여 범위를 형성한다. 그리고 현재의 K선 종식 가격이 상반도를 초과하는지 판단하고, 만약 그렇다면 더 많이 한다. 가격이 하반도를 넘어간다면, 평지 상장을 한다.
이 전략은 트렌드 브레이크에 의존하여 진입 시기를 판단하며, 트렌드 추적 전략에 속한다. 그것은 단지 더 많은 것을 하고 공백을 두지 않으며, 명백한 트렌드 특징이 있는 품종에 적용된다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
전략은 간단하고 명확하며, 실행을 이해하기 쉽습니다.
트렌드 브레이크를 이용해서 진입 시기를 판단하고, 트렌드의 강세를 포착할 수 있다.
이동적 손실을 사용하여 위험을 통제하여 단독 손실을 효과적으로 제한할 수 있습니다.
뚜렷한 트렌드가 있는 품종에 적용됩니다.
사용자 정의 변수, 조정 주기의 길이 및 중지 손실
이 전략에는 다음과 같은 위험도 있습니다.
이 트렌드가 바뀐다는 것을 판단할 수 없는 상황에서는 추격사건이 발생할 수 있습니다.
스톱피지션은 순간적으로 급격한 가격 상승으로 촉발될 수 있습니다.
트렌드가 변하면 여러 개의 작은 스톱 손실이 발생할 수 있습니다.
“이런 일이 일어나면, 우리는 더 많은 돈을 벌 수 있고, 더 많은 돈을 벌 수 있습니다.
잘못 설정된 매개 변수는 너무 민감하거나 느려질 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
트렌드를 판단하는 지표를 늘리고, 트렌드가 반전될 때 여전히 더 많은 것을 피한다. 예를 들어 MACD와 같은 지표가 트렌드 방향을 판단한다.
모바일 스톱 전략을 최적화하고, 위험 관리를 설정하는 것이 더 합리적입니다. 예를 들어, 가격 변동에 따른 모바일 스톱을 채택합니다.
허공 전략을 추가하여 하향 추세에서 상장하여 이익을 얻을 수 있습니다.
매개 변수를 테스트 최적화하여 최적의 매개 변수 조합을 찾습니다.
자동 변수 최적화 기능을 추가하여 시장 상황에 따라 변수를 동적으로 조정합니다.
여러 시기를 결합하여 전략적 판단을 하고, 단일 시기의 오해를 피한다.
이 전략의 전체적인 아이디어는 명확하고 이해하기 쉽다. 트렌드 돌파구를 사용하여 진입 시기를 판단하고 트렌드의 강력한 단계를 포착할 수 있다. 동시에 이동 중지 손실을 사용하여 위험을 제어한다. 그러나 이 전략에는 트렌드 판단의 부정확성, 중지 손실이 돌파되는 문제와 같은 몇 가지 위험이 있습니다. 우리는 트렌드 판단, 중단 전략, 공허 전략 등을 최적화하여 전략을 더 포괄적이고 안정적으로 개선 할 수 있습니다.
/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-24 17:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Donchian Wicks Strategy - Long Only with Customizable Donchian Exit and Stop Loss", "DWS", overlay = true)
// INPUTS
iLength = input(20, "Length", minval = 1)
stopLossPercent = input(1.0, "Stop Loss Percentage", type=input.float) / 100
// SETTING
float up = na
up := close > open ? high : nz(up[1])
float down = na
down := close < open ? low : nz(down[1])
highest = highest(up, iLength)
lowest = lowest(down, iLength)
// PLOT
p1 = plot(highest, "Highest", color.black, 2)
p2 = plot(lowest, "Lowest", color.black, 2)
fill(p1, p2, color.new(color.navy, 90), title="Range")
// ENTRY SIGNALS
wickDown = low < lowest
// STRATEGY IMPLEMENTATION
strategy.entry("Buy", strategy.long, when = wickDown)
strategy.exit("Sell at Donchian High", from_entry="Buy", limit=highest)
// Customizable Stop Loss
stopLossLevel = close * (1 - stopLossPercent)
strategy.exit("Stop Loss", from_entry="Buy", stop=stopLossLevel)