다이나믹 K라인 방향 전략


생성 날짜: 2023-10-25 16:57:05 마지막으로 수정됨: 2023-10-25 16:57:05
복사: 0 클릭수: 643
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다이나믹 K라인 방향 전략

개요

이 전략은 과거 N 근 K 선의 종결 가격이 상위/하위 오픈 가격의 상황을 분석하여 미래의 K 선의 방향을 판단한다. K 선의 방향이 빈 상태에 따라 더 많은 또는 빈 작업을 한다.

전략 원칙

이 전략의 핵심 논리는 다음과 같습니다.

  1. 파라미터를NUM_CANDLES로 설정하여 분석해야 할 K선 수를 결정합니다.

  2. 함수 candle_dir를 정의하여, 단일 K 선의 방향을 판단한다. close>open은 다중 머리, close

  3. 함수 count_candles를 정의하여 지난NUM_CANDLES 루트 K 선에서 다른 방향의 K 선의 수를 통계한다.

  4. 지난NUM_CANDLES 루트 K라인에서 다목, 공백, 흔들림 K라인 수를 계산하고, ups, dns, neu에 저장한다.

  5. ups-dns에 ne를 더한 음의 양을 더한 indic 지수를 정의한다.

  6. indic 지표에 따라 과업과 공백 시간을 판단하십시오.

이 전략은 K 선의 방향을 통계를 통해 특정 수의 K 선의 방향을 판단하여 미래의 K 선의 방향을 판단하여 거래 결정을 내립니다. K 선의 수를 통계를 통해 제어 할 수 있으며, 전략의 민감도를 조정할 수 있습니다.

전략적 강점 분석

  1. 전략적 아이디어는 명확하고 이해하기 쉽고, 쉽게 설명되고 검증됩니다.

  2. 복잡한 지표를 계산하지 않고, K선 데이터만 사용해서 계산 비용을 절감한다.

  3. 매개 변수를 통해 통계 K 라인 수를 조정할 수 있으며, 전략 감수성을 제어할 수 있다.

  4. 모든 품종과 모든 주기에서 사용할 수 있으며, 적용성이 강하다.

  5. 최적의 변수 조합을 찾기 위해 변수 최적화를 쉽게 할 수 있습니다.

위험 분석

  1. 이 경우, 주식 시장의 위기상황을 처리할 수 없고, 빈번하게 하락상황이 발생할 수 있다.

  2. 통계주기가 부적절하면 신호가 지연될 수 있으며, 합리적으로 파라미터를 설정해야 한다.

  3. “전향이 뒤집을 수 없는 상황에서는 역동적인 손실이 발생할 수 있습니다”.

  4. 거래 비용의 영향을 고려하여 너무 자주 거래되는 것을 방지해야 합니다.

  5. 매개 변수 최적화 과 적합성 문제에 주의해야 하며, 여러 시장 피드백 검증해야 한다.

최적화 방향

  1. 손실의 위험을 줄이기 위해 스톱 로직을 추가하는 것을 고려할 수 있습니다.

  2. 트렌드 지표와 결합하여 역동적인 조작을 피할 수 있습니다.

  3. 통계주기를 늘리거나 저주기를 사용해서, 최적화 매개 변수를 사용하여 전략의 안정성을 높일 수 있다.

  4. 여러 품종의 조합을 고려하여 전략적 승률을 높일 수 있다.

  5. 기계학습 방법과 결합하여 자동 최적화 매개 변수.

요약하다

이 전략은 K선 방향 분석을 기반으로 거래 방향을 결정하고, 아이디어는 명확하고 이해하기 쉽으며, 파라미터 설정을 통해 전략의 민감도를 제어할 수 있다. 전략의 장점은 논리적으로 간단하고, 사용 요구 사항이 낮고, 적용 범위가 넓지만, 전략의 안정성을 높이기 위해 추가적인 최적화가 필요한 위험이 있다.

전략 소스 코드
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Refined CandleCounter Strategy by origo", overlay=true)

// how many candles to count
NUM_CANDLES = 7

// determine candle direction
candle_dir = close > open ? 1 : (round(close-open) == 0 ? 0 : -1)

// return # of candles with a given direction
count_candles(dir, max) =>
    count = 0
    for i = 0 to max
        if candle_dir[i] == dir
            count := count + 1
    count

ups = count_candles(1, NUM_CANDLES)
dns = count_candles(-1, NUM_CANDLES)
neu = count_candles(0, NUM_CANDLES)

indic = ups-dns


if indic > 0
    indic := indic+neu
else
    indic := indic-neu

plotarrow(neu, title="UP vs DN")

longCondition = (indic) > 0
shortCondition = (indic) <= 0

strategy.entry("buy", strategy.long, 1, when = longCondition and not shortCondition)
strategy.entry("sell", strategy.short, 1, when = shortCondition and not longCondition)