전략에 따른 다 기간 이동 평균 채널 트렌드

저자:차오장, 날짜: 2024-02-20 13:45:42
태그:

img

전반적인 설명

이것은 암호화폐 및 주식과 같은 트렌딩 시장에 설계된 스윙 전략으로, 8시간과 같은 큰 시간 프레임을 사용합니다. 이 전략은 SMA, EMA, VWMA, ALMA, SMMA, LSMA 및 VWMA를 포함한 여러 이동 평균을 사용하여 채널로 두 개의 평균선을 형성하기 위해 높고 낮게 별도로 적용합니다.

클로즈가 하위선보다 높을 때 롱, 클로즈가 하위선보다 낮을 때 쇼트.

전략 논리

이 전략은 SMA, EMA, VWMA, ALMA, SMMA, LSMA 및 VWMA를 포함한 7 가지 다른 유형의 이동 평균을 사용합니다. 이 MAs는 두 개의 평균 라인을 생성하기 위해 촛불의 가장 높고 가장 낮은 가격에 별도로 적용됩니다.

높은 가격에 적용되는 평균선은 avg_high이라고 불립니다. 낮은 가격에 적용되는 것은 avg_low이라고 불립니다. 이 두 선은 채널을 형성합니다.

Close가 AVG_high보다 높을 때 장거리, close가 AVG_low보다 낮을 때 단거리.

장기간에 대한 스톱 손실은 avg_low입니다. 이윤을 취하는 것은 입상 가격입니다. 짧게는 스톱 손실은 avg_high이며, 이윤을 취하는 것은 입상 가격입니다.

이점 분석

이 전략의 가장 큰 장점은 수익성을 향상시키기 위해 여러 이동 평균을 활용하는 것입니다. 다른 MAs는 가격 변화에 다른 반응 속도를 가지고 있습니다. 그것들을 결합하면 더 신뢰할 수있는 거래 신호를 형성합니다.

또 다른 장점은 채널 접근법입니다. 채널은 스톱 로스 범위를 제한하고 스윙 거래에 적합한 위험을 감소시킵니다.

위험 분석

이 전략은 두 가지 주요 위험을 가지고 있습니다.

  1. 여러 MAs의 조합은 파라미터 튜닝을 복잡하게 만듭니다. 가장 좋은 것을 찾기 위해 많은 테스트와 최적화를 필요로 합니다.

  2. 옆면 또는 트렌드가 아닌 시장에서 전략은 손실과 위프사우를 발생시키는 경향이 있습니다.

위험을 줄이기 위해 명확한 추세를 가진 제품을 선택하고 현재 시장 조건에 적합한 매개 변수를 찾기 위해 광범위한 백테스트와 최적화를 수행하십시오.

최적화 방향

더 많은 최적화를 위한 영역:

  1. 더 나은 조합을 찾기 위해 더 많은 유형의 MAs를 테스트하십시오. SMA, EMA, KAMA, TEMA 등과 같이.

  2. 최적의 매개 변수를 결정하기 위해 MA의 길이를 최적화하고 채널 너비를 최적화합니다.

  3. 트레일링 스톱이나 다이내믹 스톱과 같은 다른 수익 및 손해를 막는 메커니즘을 테스트하십시오.

  4. ADX, ATR와 같은 트렌드 메트릭을 포함시켜 시장이 불안정할 때 위프사우를 피합니다.

  5. 유효하지 않은 트레이드를 줄이기 위해 추가 필터로 입출구 논리를 최적화합니다.

요약

이 스윙 트렌드 다음 전략은 여러 MAs를 사용하여 수익성을 향상시키고 채널을 통해 위험을 감소시킵니다. 매개 변수 최적화 후 트렌딩 제품에 잘 작동합니다. 그러나 트렌드 역전에서 큰 손실을 입을 수 있습니다. 하향 위험을 완화하기 위해 추가 최적화가 필요합니다.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 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/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))



더 많은