K-line 종가를 기반으로 한 매수 및 매도 전략


생성 날짜: 2024-01-08 11:11:18 마지막으로 수정됨: 2024-01-08 11:11:18
복사: 2 클릭수: 1039
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

K-line 종가를 기반으로 한 매수 및 매도 전략

개요

이 전략은 현재 K선과 이전 K선의 종결 가격을 비교하여 구매 또는 판매 신호를 유발하는지 판단합니다.

구체적으로, 만약 현재 K 라인 닫기 가격이 상위 K 라인 최고 가격보다 높다면, 구매 신호를 유발한다; 만약 현재 K 라인 닫기 가격이 상위 K 라인 최저 가격보다 낮다면, 판매 신호를 유발한다.

전략 원칙

  1. 지정된 시간대 (일계, 시간대 등) 에 대한 역사적인 최고 가격과 최저 가격을 얻습니다.
  2. 정지 거리와 정지 거리를 계산
    • 스톱 로드 거리 = 상위 K 라인 최고 가격 - 상위 K 라인 최저 가격
    • 정지 거리 = 정지 거리 * 3 ((1:3의 정지-정지 비율로 설정)
  3. 현재 K 라인 종료 가격과 이전 K 라인 최고 가격 및 최저 가격과의 관계를 판단합니다.
    • 만약 현재 종결 가격이 K선 상위 최고 가격보다 높다면, 구매 신호가 발생한다.
    • 만약 현재 종결 가격이 이라면 판매 신호를 발동합니다.
  4. 입력 후 손해 중지 및 정지 설정
    • 매입 후, 스톱로스를 최저 가격으로 설정합니다 - 스톱 거리, 스톱 은 최저 가격으로 설정합니다 + 스톱 거리
    • 매각 후, 스톱로스는 상위 K선 최고 가격 + 스톱 거리, 스톱은 상위 K선 최저 가격 - 스톱 거리

이 전략의 기본 거래 논리는 다음과 같습니다.

우위 분석

  • 전략은 명확하고 간단하며, 실행은 이해하기 쉽습니다.
  • K선 정보를 사용하여 트렌드 방향을 결정합니다.
  • 손해 방지 장치 제어 위험

위험 분석

  • 시간주기 K선형태를 판단하는 것만으로도 더 많은 가짜 신호를 생성할 수 있다.
  • 거래량 변화, 변동성 등과 같은 다른 요소들을 고려하지 않았습니다.
  • 손해 차단 장치가 잘못 설정되어 너무 크고 너무 작을 수도 있습니다.

최적화 방향

  • 거래량, 평균 등과 같은 추가 요소와 함께 입점 신호를 확인합니다.
  • 정지 알고리즘을 최적화하여 더 합리적이고 충분한 정지를 제공합니다.
  • 다른 품종의 파라미터 설정은 조정할 수 있습니다.
  • 더 긴 선주기의 효과를 테스트할 수 있습니다.

요약하다

이 전략의 전체적인 아이디어는 간단하고 명확하며, K 라인 종결 가격 정보를 사용하여 트렌드 방향을 판단하고, 동시에 스톱 스톱 제어 위험을 설정할 수 있으며, 주식, 디지털 통화 거래의 기본 전략으로 사용할 수 있다. 그러나 단 하나의 시간 주기 K 라인 형태를 기반으로만 거짓 신호를 생성할 수 있으며, 최적화 공간은 여전히 넓으며, 더 많은 요소와 파라미터 조정과 결합하여 전략 효과를 개선하기 위해 추가적인 고려가 필요합니다.

전략 소스 코드
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy/Sell on Candle Close", overlay=true)

var float prevLowest = na
var float prevHighest = na
var float slDistance = na
var float tpDistance = na

// Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.)
timeframe = "D"

// Fetching historical data for the specified timeframe
pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on)
pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on)

if bar_index > 0
    prevLowest := pastLow[1]
    prevHighest := pastHigh[1]

currentClose = close

if not na(prevLowest) and not na(prevHighest)
    slDistance := prevHighest - prevLowest
    tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio

// Buy trigger when current close is higher than previous highest
if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance)

// Sell trigger when current close is lower than previous lowest
if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance)

plot(prevLowest, color=color.blue, title="Previous Lowest")
plot(prevHighest, color=color.red, title="Previous Highest")