탄탄한 추세 지속 전략

저자:차오장, 날짜: 2024-01-29 16:57:01
태그:

img

전반적인 설명

이 전략은 이동 평균을 기반으로 합니다. 상승 추세의 단기적 보정 후 오랫동안 진행됩니다. 그것은 추세를 따르는 전략에 속합니다.

전략 원칙

이 전략은 서로 다른 기간을 가진 3개의 EMA 라인을 사용한다. 짧은 기간을 가진 EMA1 라인은 단기 트렌드를 판단하는 데 사용됩니다. EMA2와 EMA3 라인은 긴 기간을 가진 중장기 트렌드를 결정하는 데 사용됩니다. EMA3가 가장 긴 기간을 가지고 있습니다. 단기 EMA1 라인이 상승하면 단기 상승 추세에 있음을 나타냅니다. EMA2가 EMA3보다 높으면 중장기 또한 상승 추세에 있음을 의미합니다. 따라서 이것은 긴 진입을위한 좋은 타이밍입니다. 구체적으로, 거래 신호는 가격이 EMA1 라인을 넘을 때 생성됩니다. 트렌드의 안정성을 더 확인하려면 EMA2와 EMA3가 상승하고 마지막 표시줄이 필터 표시줄에서 상승하고 있음을 요구하며, 이는 단기 잘못된 수정 신호를 제거하는 데 도움이됩니다.

스톱 로스 라인 및 취익 라인은 이익과 손실을 잠금하도록 설정됩니다. 구체적으로, 스톱 로스 라인은 ATR 값에 따라 움직이고, 취익 라인은 ATR 값에 따라 움직입니다.

이점 분석

이 전략의 가장 큰 장점은 중장기 상승 추세를 효과적으로 파악할 수 있다는 점과 동시에 단기 교정을 고려할 수 있다는 점입니다.

또한 스톱 로즈와 영업 영업률을 설정하면 위험도 조절할 수 있습니다.

위험 분석

이 전략의 가장 큰 위험은 트렌드 반전 지점을 결정할 수 없다는 것입니다. 단기 트렌드가 상승하는 동안 중장기 트렌드가 반전되면 시장 진입에 대한 잘못된 장기 신호를 생성하여 더 큰 손실을 초래할 수 있습니다.

또한, 범위에 제한된 시장에서도 불필요한 거래 손실이 발생할 수 있습니다.

최적화 방향

특정 거래 품종의 특성에 따라 EMA의 주기 매개 변수를 조정하여 품종의 중장주기에 더 잘 맞추는 것을 고려하십시오.

단기 조정의 끝을 결정하기 위해 다른 지표와 결합하면 잘못된 입력을 피할 수 있습니다.

ATR 값에 기초하여 스톱 손실 계수를 조정하는 것을 고려하고, ATR이 큰 경우 스톱 손실 거리를 적절히 완화합니다.

결론

일반적으로, 이 전략은 잘 수행되는 중장기 트렌드를 따르는 전략입니다. 이동 평균을 통해 트렌드 방향을 결정하고, 인하 신호를 통해 입시 시기를 결정하고, 스톱 로스 및 영업 설정을 통해 이익과 손실을 잠금합니다. 그러나 맹목적인 트렌드를 따르는 특정 위험이 있습니다. 거래자는 시장에 진입 여부를 결정하기 위해 자신의 판단을 내릴 필요가 있습니다.


/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Trend Continuation', shorttitle='Trend_Continuation', overlay=true)

// Input
price = input(close)
MA1_Length = input.int(50, step=1, title='EMA 1 Length')
MA2_Length = input.int(80, step=1, title='EMA 2 Length')
MA3_Length = input.int(200, step=1, title='EMA 3 Length')
numberOfCandles = input(1)
slATRFactor = input(3.5)
tpATRFactor = input(3.5)
ATRLength = input(14)
// switch1=input(true, title="Show Bar Color?")
// switch2=input(true, title="Show Moving Averages?")

// Calculation
MA1 = ta.ema(price, MA1_Length)
MA2 = ta.ema(price, MA2_Length)
MA3 = ta.ema(price, MA3_Length)
prev_price = close[numberOfCandles]


// Strategy
allPositive = true
for i = 0 to numberOfCandles - 1 by 1
    if close[i] < close[i + 1] or close[i] < MA1
        allPositive := false
        break


long = MA2 > MA3 and price > MA1 and ta.crossunder(prev_price, MA1) and allPositive
// short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1)  and change(MA2)<0 ) 


if long
    strategy.entry('Long', strategy.long, comment='Long')

bought = strategy.position_size[0] > strategy.position_size[1]
atrAtLong = ta.valuewhen(bought, ta.atr(ATRLength), 0)


// Stop loss and take profit
slPrice = strategy.position_avg_price - slATRFactor * atrAtLong
tpPrice = strategy.position_avg_price + tpATRFactor * atrAtLong

SL = plot(slPrice, title='SL', style=plot.style_linebr, linewidth=1, color=color.new(color.red, 0))

if price >= tpPrice and price < MA1
    strategy.close('Long')

if price < strategy.position_avg_price
    strategy.exit('Stop Loss', 'Long', stop=slPrice)


// Strategy Alert
alertcondition(long, title='Long Alert', message='Go Long!')
// alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!')

// MA trend bar color
// up =  change(MA2)>0 and change(MA3)>0
// dn =  change(MA2)<0 and change(MA3)<0
// bar_color = up?green:dn?red:blue
// barcolor(switch1?bar_color:na)

// MA trend output color
change_1 = ta.change(MA2)
MA2_color = ta.change(MA2) > 0 ? color.lime : change_1 < 0 ? color.red : color.blue
change_2 = ta.change(MA3)
MA3_color = ta.change(MA3) > 0 ? color.lime : change_2 < 0 ? color.red : color.blue

// MA output
// EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color)
// EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color)
// fill(EMA2, EMA3, color=silver, transp=50)

color_1 = MA2 > MA3 ? color.green : color.red

EMA1 = plot(MA1, title='EMA 1', style=plot.style_linebr, linewidth=1, color=color_1)
// EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=2, color=blue)
// EMA3 = plot(MA3, title="EMA 3", style=linebr, linewidth=3, color=red)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)



더 많은