이동평균 롱앤숏 전략


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

개요

이 전략은 이동 평균에 기반한 다중 하위 전략이다. 그것은 3개의 다른 변수의 이동 평균을 사용하여 거래 신호를 생성한다. 가격이 이동 평균을 상회할 때 더하고, 하락할 때 공백한다. 이 전략은 3개의 이동 평균을 가지고 있으며, 단계별로 더 많은 공백을 수행하여 트렌드 추적을 구현한다.

전략 원칙

이 전략은 sma 함수를 사용하여 len의 길이를 계산하는 이동 평균 ma ᄂ을 계산합니다. 그리고는 ma에 따라 3개의 평평한 이동 평균 longline1, longline2, longline3를 계산합니다. 그 중 longline1 평평한 -4%, longline2 평평한 -5%, longline3 평평한 -6%입니다.

구매 신호가 생성될 때, 현재 포지션이 없다면, 가격이 롱라인 1을 통과할 때 포지션을 더 한다. 1손 포지션이 있다면, 가격이 롱라인 2을 통과할 때 1손을 다시 열다. 2손 포지션이 있다면, 가격이 롱라인 3을 통과할 때 1손을 다시 열고, 최대 3손 포지션을 더 한다.

팔기 신호가 생성될 때, 만약 현재 더 많은 포지션을 가지고 있다면, 가격이 마를 뚫을 때 평소 포지션을 니다.

이 전략은 더 많은 것을 할 수 있으며, 트렌드 추적 효과를 얻을 수 있습니다.

전략적 이점

  • 이동 평균을 사용하여 트렌드 방향을 판단하여 시장 소음을 효과적으로 필터링하여 수익을 안정화 할 수 있습니다.
  • 더 많은 코카이팅을 통해 더 많은 수익을 얻을 수 있습니다.
  • 모바일 평균은 트렌드를 더 잘 파악할 수 있는 입구입니다.
  • 상대적으로 적은 철수, 최대 철수율 20% 정도

전략적 위험

  • 이 전략은 순수하게 트렌드 전략이며, 시장이 정리될 때 쉽게 갇힐 수 있습니다.
  • 이동 평균은 시그널 지연을 일으켜 트렌드 전환점을 놓칠 수 있습니다.
  • ‘그루에 묶어서 죽이는 것은 더 위험하다’
  • 단축 전략이 없고, 갑작스러운 상황에서는 큰 손실을 초래할 수 있습니다.

위험 해결 방법:

  • 트렌드 전환점을 결정하기 위해 다른 지표들을 추가할 수 있습니다.
  • 이동 평균 변수를 합리적으로 설정하여 너무 길지 않으면 신호가 너무 지연됩니다.
  • 추가로 생산되는 양을 적당히 줄여서 추격을 방지할 수 있다.
  • 손실을 제어하기 위해 이동 중지

전략 최적화 방향

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

  1. 다른 지표 판단을 추가하여 트렌드 방향을 결정합니다. 예를 들어 MACD를 사용하여 트렌드 판단이 강합니다.

  2. 이동 평균 변수를 최적화하여 최적의 변수 조합을 찾습니다.

  3. “이번 선거는 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단, 민주당의 선거인단,

  4. ATR에 따라 스톱포드를 설정할 수 있는 모바일 스톱포드 메커니즘이 추가되었습니다.

  5. 시장의 변동에 따라 지수를 조정할 수 있으며, 큰 변동이 있을 때 지분을 줄일 수 있습니다.

  6. 다양한 품종 변수의 효과를 테스트하여 전략에 가장 적합한 품종을 찾습니다.

  7. 특정 형태가 발생했을 때 Exit 모듈을 개발하여 Exit를 고려합니다.

요약하다

전체적으로 볼 때, 이 전략은 이동 평균을 사용하여 트렌드 방향을 판단하여 거래하고, 분단 분단 단위로 트렌드를 추적하여 이익을 얻을 수 있습니다. 그러나 약간의 지연이 존재하고, 위험을 높이는 위험이 있습니다. 보조 판단 지표, 최적화 파라미터, 위치 관리 조정, 손실 제도를 추가하는 등의 방법을 추가하여 이 전략을 최적화 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult

//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
    strategy.entry("TP", strategy.short, 0, limit = ma)