전략 을 따르는 경향

저자:차오장, 날짜: 2023-11-06 10:34:19
태그:

img

전반적인 설명

트렌드 다음 전략은 이동 평균의 교차를 기반으로하는 트렌드 거래 전략이다. 트렌드 방향을 결정하고 그에 따라 거래 신호를 생성하기 위해 기하급수적인 이동 평균 (EMA) 과 허ల్ 이동 평균 (HMA) 의 교차를 사용합니다. 전략은 단기 오스실레이션보다는 장기적인 가격 추세를 따르는 것을 목표로합니다.

전략 논리

이 전략은 다른 매개 변수와 함께 두 개의 이동 평균을 사용합니다: 더 빠른 EMA와 더 느린 HMA. EMA는 가격 변화에 더 빨리 반응하고 단기 트렌드를 판단하는 데 사용됩니다. HMA는 더 느리게 반응하고 장기 트렌드 방향을 추적합니다.

더 빠른 EMA가 느린 HMA를 넘을 때, 그것은 상승 추세의 시작으로 간주되며, 전략은 다음 바 오픈에서 시장 가격에 긴 주문을 할 것입니다. EMA가 HMA 아래에 넘을 때, 그것은 하락 추세의 시작으로 간주되며, 전략은 다음 바 오픈에서 시장 가격에 짧게됩니다.

입시 시기를 최적화하기 위해 전략에는 하이킨-아시 옵션이 포함되어 있습니다. 활성화되면 구매 및 판매 신호는 일반적인 촛불 대신 하이킨-아시 바를 기반으로합니다. 하이킨-아시 바는 원래 촛불에서 단기 가격 변동을 필터링하여 잘못된 신호를 줄일 수 있습니다.

이 전략은 또한 스톱 로스 설정을 사용합니다. 포지션 손실이 미리 설정된 스톱 로스 비율에 도달하면 포지션은 시장 가격으로 종료되며 거래당 최대 손실을 제한합니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 트렌드를 결정하기 위해 EMA와 HMA의 크로스오버를 사용하면 다른 기간 이동 평균을 활용하고 정확도를 향상시킬 수 있습니다.

  2. 트렌드를 기반으로 하는 거래는 소소한 변동에 대한 혼란을 피하고 불필요한 거래를 줄입니다.

  3. 하이킨-아시 옵션은 잘못된 신호를 필터링하여 입력 시기를 최적화합니다.

  4. 이동 스톱 손실은 거래당 최대 손실을 효과적으로 제한합니다.

  5. 사용자 정의 가능한 매개 변수는 다양한 제품과 시간 프레임에 대한 최적화를 허용합니다.

위험 분석

이 전략의 위험은 다음과 같습니다.

  1. 트렌드를 따라가는 시스템으로서, 범위에 묶인 시장에서는 실적이 떨어집니다.

  2. 트렌드가 뒤집어지면 큰 손실이 발생할 수 있습니다.

  3. 부적절한 스톱 손실 설정은 불필요한 스톱을 유발하거나 손실을 증폭시킬 수 있습니다.

  4. 잘못된 매개 변수 조정은 과잉 거래 또는 무작위로 이어질 수 있습니다.

  5. EMA와 HMA 기간은 다른 제품과 시간 프레임에 최적화가 필요합니다.

  6. 하이킨-아시는 거짓 탈출의 위험을 완전히 피할 수 없습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 트렌드 정확성을 높이기 위해 MACD, KDJ와 같은 더 많은 지표를 활용하십시오.

  2. 더 많은 필터를 추가해 볼륨, ATR 같은 것을 추가하면 잘못된 브레이크를 줄일 수 있습니다.

  3. 제품과 시간 프레임에 기반한 이동 평균의 매개 변수를 최적화합니다.

  4. 더 나은 스톱 로스 동작을 위해 스톱 로스 비율을 조정합니다.

  5. 이윤 취득 기능, 예를 들어 이윤 정지 이동 및 부분 이윤 취득을 고려하십시오.

  6. 최적화를 위한 위치 비용 기초를 계산하는 대안 방법을 테스트합니다.

요약

트렌드 다음 전략은 이동 평균 크로스오버를 사용하여 트렌드를 식별하고 하이킨-아시 및 이동 스톱 손실을 통해 성능을 최적화합니다. 중장기 트렌드 거래에 적합하며 매개 변수 조정 및 기능 확장으로 더욱 향상 될 수 있습니다. 그러나 사용자는 반전 및 부적절한 스톱 손실의 위험을 인식해야합니다. 전반적으로 다른 제품과 시간 프레임에 걸쳐 작동하는 트렌드 거래에 대한 보편적이고 사용자 정의 가능한 프레임워크를 제공합니다. 적절한 매개 변수 테스트가 적용될 때 필요합니다.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Heikin Ashi Option
ha = input(true, title = "Heikin Ashi Source")
src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close
usestoploss = input(true, title="Stop Loss")

//EMA
len1 = input.int(9, minval=1, title="EMA Length")
ema = ta.ema(src, len1)
emaline = plot(ema, title="EMA", color=color.blue, linewidth=2)

//HMA
len2 = input.int(69, minval=1, title="HMA Length")
hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2)))
hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2)
fillcolor = hma < ema ? color.blue : color.purple
fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true)

//Stop Loss Conditions
stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100
stoploss = strategy.position_avg_price * (1 + stoplosspercent)
stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss

//Buy Sell Conditions
buy = hma < ema
sell = hma > ema

//Trades and Alerts
if buy
	strategy.entry("Long Position", strategy.long, comment="BUY")
//	alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if sell and strategy.openprofit > 0
	strategy.close("Long Position", comment="SELL")
//	alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if stop
    strategy.close("Long Position", comment="STOP")
//    alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)

//Alternate Labels
var pos = 0
if buy and pos <= 0
    pos := 1
if sell and pos >= 0
    pos := -1
buylabel  = pos ==  1 and (pos !=  1)[1]
selllabel = pos == -1 and (pos != -1)[1]

//Plot Labels
plotshape(buylabel,  style=shape.labelup,   location=location.belowbar, color=color.blue,   text="BUY",  textcolor=color.white, size=size.tiny)
plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny)
plotshape(stop,      style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)


더 많은