동적 촛불 방향 전략

저자:차오장, 날짜: 2023-10-25 16:57:05
태그:

img

전반적인 설명

이 전략은 과거 N 개의 촛불의 개막 가격에 대한 폐쇄 가격을 분석하여 미래의 촛불 방향을 결정합니다. 촛불 방향 신호에 따라 긴 또는 짧은 포지션을 취합니다.

전략 논리

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

  1. NUM_CANDLES 매개 변수를 설정하여 분석하는 촛불의 수를 결정합니다.

  2. 하나의 촛불의 방향을 결정하기 위해 함수 candle_dir를 정의합니다. close>open은 상승, close

  3. 과거 NUM_CANDLES 촛불에서 특정 방향의 촛불 수를 셀 수 있는 함수 count_candles를 정의합니다.

  4. 지난 NUM_CANDLES 촛불에서 상승, 하락 및 중립 촛불의 수를 세어, 업, dns, neu에 저장하십시오.

  5. 지표 지표를 정의합니다. 그 값은 ups-dns 더하기/ 빼기 neu와 같습니다.

  6. 롱/코트 엔트리를 지표 기준으로 결정합니다.

특정 수의 촛불의 촛불 방향을 분석함으로써, 이 전략은 거래 결정을 위해 미래의 촛불 방향의 확률을 추정합니다. NUM_CANDLES는 전략 감수성을 조정하기 위해 샘플 크기를 제어합니다.

이점 분석

  1. 전략 논리는 명확하고 이해하기 쉽고 해석하고 확인하기 쉽습니다.

  2. 촛불 데이터만 사용해서 계산 비용을 줄일 수 있습니다.

  3. NUM_CANDLES 매개 변수를 조정하여 감도를 조정하기 쉽습니다.

  4. 모든 제품과 시간대에 적용되며, 높은 적응력

  5. 가장 좋은 조합을 찾기 위해 매개 변수를 최적화하기 쉽습니다.

위험 분석

  1. 범위에 묶인 시장을 처리하지 못하면 거래가 너무 많을 수 있습니다.

  2. 적당한 샘플링 기간이 신호 지연을 일으킬 수 있기 때문에 NUM_CANDLES는 신중한 조정이 필요합니다.

  3. 트렌드 반전에 적응할 수 없는 경우, 트렌드 반전에서 손실의 위험이 있습니다.

  4. 거래 비용 영향은 과도한 거래를 피하기 위해 고려되어야합니다.

  5. 매개 변수 최적화에서 과도한 적합성 조심, 여러 시장 검증을 요구.

최적화 방향

  1. 한계 손실에 스톱 손실을 추가하는 것을 고려하십시오.

  2. 트렌드 지표와 결합하여 역 트렌드 거래를 피합니다.

  3. 표본 크기를 늘리거나 안정성을 높이기 위해 짧은 기간을 사용하세요.

  4. 승률을 높이기 위해 다중 시장 복합을 고려하십시오.

  5. 자동 매개 변수 최적화를 위해 기계 학습을 활용합니다.

결론

이 전략은 촛불 방향을 분석하여 명확하고 간단한 논리를 통해 거래 방향을 결정합니다. 민감도는 매개 변수 조정을 통해 제어 할 수 있습니다. 장점은 단순성, 낮은 요구 사항 및 광범위한 적응력이지만 일부 위험이 존재하며 안정성을 향상시키기 위해 추가 최적화가 필요합니다. 전반적으로이 전략은 양적 거래에 간단하고 실용적인 접근 방식을 제공합니다.


/*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)


더 많은