이 전략은 유동성 주도 트렌드 전략 (Liquidity Driven Trend Strategy) 이라고 불린다. 이 전략은 다른 시간 프레임에 걸쳐 가격 트렌드 방향을 파악하고 그에 따른 긴 또는 짧은 결정을 내리는 것을 목표로 한다. 이 전략은 트렌드를 결정하기 위해 이중 이동 평균 시스템을 사용하고 트렌드 변화에 적시에 대응하기 위해 여러 시간 프레임에 걸쳐 상대 강도 지수 (RSI) 값의 차이를 사용합니다.
이 전략의 핵심 논리는 이동 평균 시스템이 전체 트렌드 방향을 판단하는 CHOP 지표에 기반합니다. 구체적으로, 전략은 더 높은 시간 프레임에서 빠른 라인 (장 = 20) 및 느린 라인 (장 = 50) 의 RSI 값을 계산하고 두 RSI 라인 사이의 차이를 계산합니다. 빠른 라인 RSI가 느린 라인 RSI 위에 넘어가면 상승 추세를 신호하고 긴 신호를 유발합니다. 반대로, 빠른 라인 RSI가 느린 라인 RSI 아래에 넘어가면 하락 추세를 표시하고 짧은 신호를 생성합니다. 가격 하락으로 인해 변화하는 RSI 차이는 상승하고 트렌드 변화 지점을 민감하게 식별 할 수 있습니다.
이 전략은 또한 멀티 타임프레임 메커니즘을 도입합니다. 전체 트렌드 방향을 결정하기 위해 더 높은 시간 프레임 (예를 들어 매일) 에서 RSI 차이를 계산하고, 더 낮은 시간 프레임 (예를 들어 5 분) 에서 더 높은 시간 프레임 트렌드 판단에 따라 실제 구매 및 판매 명령을 실행합니다. 여러 시간 프레임의 이러한 조합은 높은 시간 프레임 트렌드 결정과 낮은 시간 프레임 실행의 유연성을 모두 고려합니다.
해결책:
이 전략은 트렌드의 잠재적 인 전환점을 민감하게 파악하기 위해 RSI 분리를 활용합니다. 멀티 타임프레임 응용 프로그램은 특정 거래 실행을 유연하게 유지하면서 전반적인 트렌드를 판단 할 수 있습니다. 다른 트렌드 다음 전략과 비교하면이 전략은 더 간단하고 매개 변수 조정에 직관적이며 최적화하기가 쉽습니다. 결론적으로 전략은 추가 탐색 및 응용 가치가있는 효율적이고 실용적인 트렌드 거래 시스템을 형성합니다.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true) isTimeFrame(timeFrame) => timeFrame == timeframe.period ? true : false Htf() => isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D" TrendIndication() => trendFastLength = 20 trendSlowLength = 50 upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf)) upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf)) rsiDiff = rsiFastHtf - rsiSlowHtf crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na if (TrendIndication() == true) strategy.entry("Long", strategy.long) if (TrendIndication() == false) strategy.entry("Short", strategy.short)