이 전략의 핵심 아이디어는 바이인 타이밍과 스톱 로스 포인트를 설정하기 위해 시간과 ATR 지표를 결합하는 것입니다. 전략은 지정된 시간 지점에서 시시된 구매 신호를 발행하고, 그 당시의 폐쇄 가격을 구매 가격으로 사용하고, 그 다음 구매 가격과 ATR 값을 합쳐 스톱 로스 포인트를 설정합니다. 이것은 위험을 제어하기 위해 ATR을 사용하는 동안 일부 부적절한 바이인 타이밍을 필터링 할 수 있습니다.
이 전략은 다음과 같은 주요 부분으로 구성됩니다.
입력 매개 변수: 구매 시간 timeTrade와 ATR 매개 변수를 포함 atrLength. timeTrade는 구매 시간을 결정하고 atrLength는 ATR의 기간 매개 변수를 결정합니다.
ATR 지표 계산: atrLength 매개 변수를 기반으로 ATR 값 atrValue를 계산합니다.
구매 조건을 정의합니다. 시간과 분의 조합이 timeTrade와 같을 때 구매 신호를 생성합니다.
구매 주문 발급: 구매 조건이 충족되면 롱으로 이동하고 구매 가격을 기록합니다.
스톱 로스 포인트를 설정: 스톱 로스 포인트는 구매 가격과 ATR 값으로 설정됩니다. 가격이 이 지점을 넘으면 스톱 로스 출구.
그래프: 스톱 로스 레벨 라인을 그래프합니다.
이 전략의 가장 큰 장점은 바이 인 타이밍과 스톱 로스 포인트를 시간 및 ATR 지표에 따라 두 번 확인하는 것입니다. 이것은 시장을 맹목적으로 따라 바이 인을 피하고 위험을 효과적으로 제어합니다. 둘째, ATR에 의해 설정된 스톱 로스 포인트는 동적으로 변화하며 시장 변동에 따라 합리적인 스톱 로스 범위를 설정 할 수 있습니다. 마지막으로 전략 논리는 간단하고 이해하기 쉽고 추적 할 수 있습니다.
이 전략의 주요 위험은 다음과 같습니다.
부적절한 구매 시간 설정은 더 나은 구매 기회를 놓칠 수도 있고 바람직하지 않은 시장에서 구매할 수도 있습니다.
ATR의 부적절한 매개 변수 설정은 스톱 손실 포인트가 너무 크거나 너무 작으면 전략 성능에 영향을 줄 것입니다.
장기적인 경향을 효과적으로 추적할 수 없으니, 단기적인 작업에 더 적합합니다.
근본적인 분석 요인은 고려되지 않습니다.
이 전략은 다음과 같은 측면에서 더 이상 최적화 될 수 있습니다.
더 과학적인 구매 시간을 결정하기 위해 여러 요소 모델을 결합합니다.
변동성 모델을 결합하여 ATR 매개 변수 설정을 최적화합니다.
더 긴 보유 기간에 적응하기 위해 트렌드 추적 메커니즘을 강화합니다.
기본 분석을 포함해서 인수 시기의 합리성을 판단해야 합니다.
전체적으로, 이것은 비교적 간단하고 직관적인 높은 주파수 내일 거래 전략이다. 핵심 아이디어는 바이인 타이밍과 스톱 로스 포인트를 결정하기 위해 시간 및 ATR 지표의 이중 확인을 사용하는 것입니다. 장점은 통제 가능한 위험과 비교적 구현하기가 쉽습니다. 그러나 바이인 타이밍의 불충분한 선택과 불충분한 매개 변수 최적화와 같은 문제도 있습니다. 더 많은 요소, 동적 매개 변수 최적화, 트렌드 추적 등을 도입하여 미래의 최적화를 수행 할 수 있습니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Time-based Strategy with ATR Take Profit", overlay=true) // Initialize take profit levels var float takeProfitLevel = na var float takeProfitLevelForSell = na var float buyprice = na var float sellprice = na // Input for the time when the trade should be executed tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings") // Calculate ATR for the last 5 minutes atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings") atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength)) // Define conditions for buy and sell buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0 sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0 // Execute Buy and Sell orders if (buyCondition) strategy.entry("Buy", strategy.long) buyprice := close takeProfitLevel := buyprice + atrValue strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel) // if (sellCondition) // strategy.entry("Sell", strategy.short) // sellprice := close // takeProfitLevelForSell := sellprice -atrValue // strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell) // Plot horizontal lines for take profit levels plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)") plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")