웨이브 트렌드 및 CMF 기반 트렌드 다음 전략

저자:차오장, 날짜: 2023-11-16 16:38:03
태그:

img

전반적인 설명

이 전략은 유동 동향 지표와 Chaikin Money Flow (CMF) 지표를 결합하여 유동 동향 방향을 파악하고 유동 동향을 추적합니다. 유동 동향을 확인하기 위해 유동 동향을 사용하고 유동 동향을 확인하기 위해 CMF를 사용하여 15 분 시간 프레임에서 실행됩니다.

전략 논리

웨이브트렌드 지표는 가격의 트렌드 방향을 효과적으로 식별할 수 있다. 채널 미드라인, 채널 평균 및 채널 인덱스로 구성된다. 채널 미드라인은 가격의 기하급수적인 이동 평균이며, 가격 트렌드를 반영한다. 채널 평균은 채널 미드라인을 찾기 위해 사용되는 채널 미드라인의 이동 평균이다. 채널 인덱스는 채널 미드라인에서 가격의 편차 정도를 반영하고 과소매/ 과소매 신호를 생성한다.

CMF 지표는 자금의 유입과 유출을 판단하고 동향을 확인 할 수 있습니다. 이 지표는 구매력과 판매력의 비교를 반영하여 부피에 따라 조정된 축적/분배선을 기반으로합니다. 0 주위의 값은 자금의 유입과 유출 사이의 균형을 나타냅니다. 0 이하는 자금의 유출을 나타냅니다. 0 이상은 자금의 유입을 나타냅니다.

이 전략은 15분 시간 프레임에서 실행된다. 그것은 먼저 가격 트렌드 방향을 결정하기 위해 웨브 트렌드 지표를 사용 하 고, 트렌드를 따르기 위해 확인하기 위해 CMF 지표를 사용 합니다. 구체적으로, 웨브 트렌드 채널 인덱스가 -60 아래와 CMF가 -0.2 미만일 때, 그것은 오래 간다. 웨브 트렌드 채널 인덱스가 60 이상과 CMF가 0.2보다 크면, 그것은 짧게 간다. 출구 조건은 주로 CMF 지표에 기반 - 그것은 CMF가 0.18보다 크면 긴 포지션을 닫고 CMF가 -0.18 미만일 때 짧은 포지션을 닫습니다.

이점 분석

  1. 웨이브트렌드 지표는 가격 트렌드 방향을 효과적으로 결정할 수 있습니다.
  2. CMF 지표는 트렌드 방향을 확인하고 잘못된 거래를 피할 수 있습니다.
  3. 웨이브 트렌드와 CMF를 결합하면 극단기 트렌드 추적을 얻을 수 있습니다.
  4. 15분 시간 프레임은 단기 거래에 더 적합합니다.

위험 분석

  1. 웨이브트렌드는 통합 과정에서 잘못된 신호를 생성할 수 있습니다.
  2. CMF는 트렌드 전환점을 뒤쳐 놓을 수도 있고 놓칠 수도 있습니다.
  3. 단일 시간 프레임 거래는 더 높은 위험을 가지고, 보유 기간을 확장해야합니다.
  4. 스톱 로스 전략이 없어 단 1회 손실을 통제할 수 없습니다.

해결책:

  1. 잘못된 신호를 피하기 위해 확인을 위해 다른 표시기를 추가하십시오.
  2. CMF 매개 변수를 조정해 좀 더 민감하게
  3. 단일 시간 프레임에서 위험을 낮추기 위해 보유 기간을 확장하십시오.
  4. 손실을 제어하기 위해 이동 스톱 손실, 동점 스톱 등을 추가합니다.

최적화

  1. 더 나은 트렌드 추적을 위해 위치 크기를 추가합니다.
  2. 단일 손실을 제한하기 위해 스톱 로스 전략을 추가합니다.
  3. 단일 지표에서 오류를 피하기 위해 스토카스틱과 같은 지표를 추가합니다.
  4. 최적을 찾기 위해 다른 유지 기간을 테스트합니다.
  5. CMF 매개 변수를 최적화해서 최적의 조합을 찾아

요약

이 전략은 트렌드를 결정하기 위해 웨이브 트렌드 (WaveTrend) 를 사용하며, 초단기 트렌드 추적을 위해 CMF (CMF) 를 확인한다. 이 전략의 장점은 합리적인 지표 조합과 효과적인 트렌드 추적에 있으며, 15분 시간 프레임으로 단기 거래에 적합하다. 그러나 정확하지 않은 신호와 너무 짧은 보유 기간과 같은 위험이 존재한다. 스톱 로스, 매개 변수 최적화 및 더 많은 신호 필터링과 같은 향후 개선은 안정성과 수익성을 더욱 향상시킬 수 있다.


/*backtest
start: 2023-11-08 00:00:00
end: 2023-11-15 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR)

//Chaikin Money Flow

len = input(20, minval=1, title="Length")
mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"])
e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)")
p = input(false, title="Show in Percentage")
mvs = input(false, "Factor in Price (Money Volume)")
src=input(hlc3, title="Source for price factor")

trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price
wv = pow(volume,e/10.0)*(mvs ? src : 1)
ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv
cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na
cmf_p  = if p
    50*cmf+50
else
    cmf
b = p ? 50 : 0


//WaveTrend
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)
// 


longCondition = wt1 < -60 and cmf < - 0.20
if (longCondition)
 
    strategy.entry("My Long Entry Id", strategy.long)
    
 
shortCondition = wt1 > 60 and cmf > 0.20
if (shortCondition)
 
    strategy.entry("My Short Entry Id", strategy.short)
    
closeLongCondition = cmf_p > 0.18 ? true : false
closeShortCondition = cmf_p < -0.18 ? true : false
    
    
strategy.close("My Long Entry Id", when=(closeLongCondition == true))
strategy.close("My Short Entry Id", when=(closeShortCondition == true))

더 많은