리소스 로딩... 로딩...

격차 거래 이동 평균 전략

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

img

이 문서에서는 Noro에 의해 코딩 된 이동 평균 격차 거래 전략에 대한 심층 분석을 제공합니다. 전략은 폐쇄 가격과 간단한 이동 평균 사이의 오차를 계산하여 트렌드 역전을 식별하고 낮은 구매 및 높은 판매를 달성합니다.

전략 논리

이 전략은 먼저 3일 간 간단한 이동 평균 (SMA) 을 계산합니다. 그 다음 종료 가격 (결결) 과 SMA 마이너스 1의 비율을 지표 (ind) 로 계산합니다. ind가 미리 설정된 매개 변수 한도를 넘으면 종료 가격이 SMA를 크게 초과 한 것을 의미하며 긴 지위가 간주됩니다. ind가 -limit 이하로 넘으면 종료 가격이 SMA보다 훨씬 낮아지고 짧은 지위가 간주된다는 것을 의미합니다.

이 전략은 또한 0 축, 한계 축 및 한계 축을 그래프화합니다. 판단을 돕기 위해 인드 지표는 개별 영역에서 색상이 다릅니다. 인드가 한계 또는 한계를 넘으면 긴 또는 짧은 입력을 신호합니다.

긴 / 짧은 신호에 따라 전략은 반대 포지션을 먼저 닫고 긴 / 짧은 포지션을 열 것입니다.

장점

  1. 트렌드 뒤따르는 전략과 달리 트렌드 반전을 잡기 위해 격차 거래 원칙을 채택합니다.

  2. 지표 위치와 교차점을 직관적으로 판단하기 위한 지표 축의 그래핑

  3. 최적화된 근접 논리, 방향 전환 전에 기존 위치를 닫습니다. 불필요한 반대 위치를 피합니다.

  4. 불필요한 오버나이트 포지션을 피하기 위해 정의된 거래 시간 범위

  5. 긴/단거래를 가능하게 하거나 차단할 수 있는 유연성

위험성

  1. 이동 평균 전략은 손실 트레이드를 여러 번 생성하는 경향이 있으며, 보유에 대한 인내심이 필요합니다.

  2. 이동 평균은 실시간 가격 변화를 포착하는 유연성이 부족합니다.

  3. 미리 설정된 한계 매개 변수는 정적이므로 다른 제품과 시장 환경에 대한 조정이 필요합니다.

  4. 트렌드의 변동을 식별할 수 없으므로 변동성 지표와 결합해야 합니다.

  5. 보유 규칙을 최적화해야 합니다. 예를 들어, 손해를 멈추거나 이익을 취하거나 초기 격차만 잡아야 합니다.

개선 방향

  1. 다른 매개 변수 설정을 테스트하십시오. 예를 들어 SMA 기간 또는 EMA와 같은 적응 이동 평균.

  2. 의미 없는 거래를 피하기 위해 이동 평균 방향과 기울기 검증을 추가합니다.

  3. 변동성이 증가할 때 거래를 중단하기 위해 볼링거 밴드와 같은 변동성 지표와 결합하는 것을 고려하십시오.

  4. 포지션 크기를 결정하는 규칙을 적용합니다. 예를 들어, 일정한 양, 추가 피라미드, 돈 관리.

  5. 스톱 로스/프로프트 라인을 설정하거나, 고정 비율 스톱 로스가 트리거될 때 새로운 오더를 일시 중지하여 거래 리스크별로 제어합니다.

요약

이 기사에서는 노로의 이동 평균 격차 거래 전략을 포괄적으로 분석했습니다. 이동 평균 기능에서 가격 격차를 활용하고 입력 시기를 위해 지표 축과 색상을 구현합니다. 또한 근사 논리를 최적화하고 거래 시간 범위를 정의합니다. 그러나 이동 평균 추적의 고유한 약점은 남아 있으며, 매개 변수, 스톱 로스 규칙, 지표 결합 등을 더 이상 최적화하여 안정성을 향상시킵니다.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Shift Close Strategy v1.0", shorttitle = "Shift Close 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
limit = input(10)
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(12, defval = 12, 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")

//Shift MA
sma = sma(ohlc4, 3)
ind = ((close / sma) - 1) * 100

//Oscilator
plot(3 * limit, color = na, transp = 0)
plot(limit, color = black, transp = 0)
plot(0, color = black, transp = 0)
plot(-1 * limit, color = black, transp = 0)
plot(-3 * limit, color = na, transp = 0)
plot(ind, linewidth = 3, transp = 0)
col = ind > limit ? red : ind < -1 * limit ? lime : na
bgcolor(col, transp = 0)

//Signals
size = strategy.position_size
up = ind < -1 * limit
dn = ind > limit
exit = ind > -1 * limit and ind < limit

//Trading
lot = 0.0 
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

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

더 많은