원래의 원시적 트렌드 추적 전략 이동 평균에 기초한

저자:차오장날짜: 2023-11-23 15:54:37
태그:

img

전반적인 설명

이 전략은 시장 트렌드 방향을 판단하기 위해 EMA 지표와 결합하여 촛불의 몸체를 기반으로 하며, ORIGINAL PRIMITIVE TREND TRACKING 효과를 달성합니다. 큰 양선이 있을 때 길게, 큰 선이 있을 때 짧게 이동하여 시장 트렌드를 추적합니다.

전략 원칙

  1. 마지막 30 K-라인 촛불의 평균 몸 길이 sbody를 계산
  2. 가장 최근의 K-선이 양선이고 몸의 길이가 sbody/2보다 크면, 길게 이동
  3. 이미 긴 경우, 최신 K 라인이 인 라인이면, 몸의 길이가 sbody/2보다 크며, 현재 위치가 수익성이 있다면, 긴 위치를 닫습니다.
  4. 마지막 K선은 선이고 몸의 길이가 sbody/2보다 크면 짧습니다.
  5. 이미 짧은 경우, 최신 K 라인이 양 라인이면, 몸의 길이가 sbody/2보다 크며, 현재 위치가 수익성이 있다면, 짧은 위치를 닫습니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 독창적이고 간단하고 이해하기 쉽고 실행하기 쉽습니다.
  2. 촛불 구조 판단에 기초하여, 브레이크아웃을 잡는 데 어떤 영향을 미칩니다.
  3. 트렌드를 추적하고 더 큰 움직임을 포착 할 수 있습니다.
  4. 이윤을 올릴 때 손해를 빨리 멈추고, 이윤을 확보하는 데 도움이 됩니다.

위험 분석

이 전략에는 또한 몇 가지 위험이 있습니다.

  1. 가짜 유출을 효과적으로 필터링 할 수 없으므로 불필요한 손실이 발생할 수 있습니다.
  2. 촛불만 판단하면 미끄러짐과 간격의 영향에 민감합니다
  3. 과도한 거래 빈도의 문제를 고려하지 않았습니다.

위험은 다음과 같이 감소 할 수 있습니다.

  1. 신호를 필터링하기 위해 다른 지표와 결합
  2. 스톱 로스 전략을 설정
  3. 거래 빈도를 제어하기 위한 매개 변수를 최적화

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 가짜 브레이크오웃을 필터링하기 위해 브레이크오웃 지표를 추가합니다
  2. 단일 손실을 줄이기 위해 중지 손실 전략을 추가
  3. 트렌드 방향을 확인하기 위해 트렌드 지표를 포함합니다.
  4. 가장 좋은 매개 변수 조합을 찾기 위해 매개 변수 최적화

요약

이 전략은 원래의 간단한 트렌드 추적 전략에 속한다. 촛불 구조를 판단함으로써 트렌드 방향을 효과적으로 추적할 수 있다. 동시에 빠른 스톱 로스 메커니즘을 설정하면 수익을 확보할 수 있다. 이 전략은 트렌드 추적 포트폴리오를 보완할 수 있지만 여전히 위험을 줄이기 위해 최적화되어야 한다. 향후 다른 지표와 결합하는 효과를 더 연구할 가치가 있다.


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Primitive Strategy v1.0", shorttitle = "Primitive str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(01, defval = 01, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()

더 많은