시간과 ATR을 기반으로 한 손절매 타이밍 매수 전략


생성 날짜: 2024-02-28 17:36:50 마지막으로 수정됨: 2024-02-28 17:36:50
복사: 0 클릭수: 630
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

시간과 ATR을 기반으로 한 손절매 타이밍 매수 전략

개요

이 전략의 핵심 아이디어는 시간과 ATR 지표가 결합되어 구매 시점과 중지 시점을 설정하는 것이다. 전략은 지정된 시간점에서 매출 신호를 발산하고, 그 당시의 종결 가격을 구매 가격으로 삼고, 구매 가격에 ATR 값을 추가하여 중지 시점으로 삼는다. 이렇게 하면 일부 부적절한 구매 시점을 필터링 할 수 있으며, 동시에 ATR을 사용하여 위험을 통제 할 수 있다.

전략 원칙

이 전략은 다음과 같은 부분들로 구성됩니다.

  1. 입력 파라미터: 구매 시간timeTrade와 ATR 파라미터atrLength. timeTrade가 구매 시간을 결정하고,atrLength는 ATR의 주기 파라미터을 결정한다.

  2. ATR 지수를 계산:atrLength 변수에 따라 ATR 지수의 값을 계산atrValue。

  3. 구매 조건을 정의합니다: 시간과 분의 조합이 timeTrade와 같을 때 구매 신호를 생성합니다.

  4. 구매 지시 발령: 구매 조건에 부합할 때 더 많이 하고, 구매 가격 buyprice를 기록한다.

  5. 스톱로스를 설정: 스톱로스는 구매 가격에 ATR 값을 더한다. 가격이 그 스톱로스를 뚫었을 때 스톱로스는 탈퇴한다.

  6. 그림: 스톱 손실 수평선을 그리십시오.

우위 분석

이 전략의 가장 큰 장점은 시간과 ATR 지표를 사용하여 구매 시점과 중지 지점을 두 번 확인하는 것입니다. 이것은 시장 구매를 맹목적으로 따라가는 것을 피하고 위험을 효과적으로 제어합니다. 둘째, ATR 설정을 이용한 중지 지점은 동적으로 변하며 시장의 변동 정도에 따라 합리적인 중지 범위를 설정할 수 있습니다. 마지막으로, 전략 논리는 간단하고 이해하기 쉽고 추적 할 수 있습니다.

위험 분석

이 전략에는 다음과 같은 위험들이 있습니다.

  1. 구매 시기가 잘못 설정되어서 구매할 수 있는 좋은 시기를 놓치거나 바람직하지 않은 시장을 구매할 수 있습니다.

  2. ATR 파라미터를 잘못 설정하면, 스톱포인트가 너무 크고 너무 작으면 전략 효과에 영향을 미칩니다.

  3. 긴 라인 트렌드를 효과적으로 추적할 수 없고, 짧은 라인 조작에 더 적합하다.

  4. 하지만, 이 모든 것은 근본적인 분석 요소를 고려하지 않았습니다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.

  1. 다인자 모델과 결합하여 보다 과학적인 구매 시간을 결정한다.

  2. 변동률 모델과 결합하여 ATR 파라미터 설정을 최적화한다.

  3. 트렌드 추적 장치가 추가되어 더 긴 보유 기간에 적응할 수 있습니다.

  4. 기본적 분석을 통해 구매 시기가 합리적인지 판단할 수 있습니다.

요약하다

이 전략은 전체적으로 간단하고 직관적인 고주파 인트라데이 거래 전략이다. 핵심 아이디어는 시간과 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)")