
이 전략은 파동 채널 지표와 자금 흐름 지표가 결합된 방식을 채택하여 트렌드 방향을 식별하고 트렌드 추적을 수행한다. 전략은 15 분 시간 주기에서 실행되며, 파동 채널을 통해 가격 트렌드 방향을 판단하고, 다시 자금 흐름 지표를 사용하여 트렌드 확인을 수행하여 초단선 트렌드 추적을 수행한다.
파동 채널 지표 (WaveTrend) 는 가격의 추세 방향을 효과적으로 식별할 수 있다. 그것은 채널 평균선, 채널 평균 가격 및 채널 인덱스로 구성된다. 채널 평균선은 가격의 지수 이동 평균이며, 가격 추세를 반영한다. 채널 평균선은 채널 평균선의 이동 평균이며, 채널 평균선을 위치시키는데 사용된다. 채널 인덱스는 채널 평균선에서 가격이 얼마나 벗어났는지 반영하고, 과매 신호를 준다.
자금 흐름 지표 (CMF) 는 자금의 유입 흐름을 판단하여 트렌드를 확인한다. 이 지표는 거래량 조정 후 축적/배출 라인을 기반으로, 구매자와 판매자의 힘의 대립을 반영한다. 값은 0 근처에서 자금 유입 흐름을 나타냅니다. 균형; 0보다 낮은 것은 자금 유출을 나타내고, 0보다 높은 것은 자금 유입을 나타냅니다.
이 전략은 15분 주기적으로 실행되며, 파동 채널 지표에 의해 가격 트렌드 방향을 판단한 후, 자본 흐름 지표를 사용하여 확인하여 트렌드를 추적합니다. 구체적으로, 파동 채널 지표 채널 지표가 60보다 낮고 자본 흐름 지표가 -0.2보다 작으면 더 많이; 파동 채널 지표 채널 지표 지표가 60보다 높고 자본 흐름 지표가 0.2보다 크면 공평 포지션을 수행합니다.
위험 해결 방법:
이 전략은 파동 채널 지표를 사용하여 트렌드 방향을 판단하고, 자본 흐름 지표를 확인하여, 초단계 트렌드 추적 작업을 수행한다. 전략의 장점은 지표 포트폴리지가 합리적이고, 효과적으로 트렌드를 추적할 수 있으며, 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))