이 전략은 유동 동향 지표와 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 미만일 때 짧은 포지션을 닫습니다.
해결책:
이 전략은 트렌드를 결정하기 위해 웨이브 트렌드 (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))