윌리엄스 앨리게이터 전략


생성 날짜: 2023-11-13 10:58:22 마지막으로 수정됨: 2023-11-13 10:58:22
복사: 0 클릭수: 719
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

윌리엄스 앨리게이터 전략

개요

윌리엄스어 전략은 트렌드 추적 전략으로, 3개의 서로 다른 주기에서 형성된 이동 평균의어 형태를 사용하여 트렌드 방향을 판단한다. 빠른 선이 중간 선보다 높고, 중간 선이 느린 선보다 높을 때, 상승하는 트렌드의어 문을 형성하고, 더 많이 한다. 빠른 선이 중간 선보다 낮고, 중간 선이 느린 선보다 낮을 때, 하향하는 트렌드의어 문을 형성하고, 공백한다. 이 전략은 빌 윌리엄스가 발명한어 지표에 기초하며, 이동 평균의 트렌드 판단 능력을 결합하여, 시장 흐름을 효과적으로 포착할 수 있다.

전략 원칙

이 전략은 3개의 다른 주기 길이의 SMA 이동 평균을 사용한다. 즉, 빠른 선 sma1, 중간 선 sma2, 그리고 느린 선 sma3 ᅳ 그 중, sma1의 주기가 가장 짧고, sma3의 주기가 가장 길다.

sma1이 sma2을 뚫고 sma2이 sma3을 뚫을 때, 시장이 상승 추세에 있다는 것을 나타내고, 상승 해파리를 형성하며, 트렌드 거래 이론에 따르면, 이 때 입장은 더해야 한다.

반대로, sma1이 sma2을 통과하고 sma2이 sma3을 통과하면, 시장이 하향 추세에 있다는 것을 나타내고, 하향 해킹을 형성하고, 이때는 입장이 공백해야 한다.

오버와 오프라이의 출전 조건은 세 개의 평선으로 재배열되며, 빠른 선은 중선보다 낮거나 중선은 느린 선보다 낮으며, 이 때 평정한다.

이 전략은 또한 트렌드 방향을 표시하기 위해 배경 색상을 그리는데, 녹색은 상승세를, 빨간색은 하락세를 나타냅니다.

전체적으로, 이 전략은 이동 평균의 장점을 활용하여, 상어 입 상어 모양으로 트렌드 방향을 판단하고, 상향으로 입찰하는, 좀 더 전형적인 트렌드 추적 전략이다.

우위 분석

  • ‘조선’은 ‘조선’을 ‘조선’이라고 부릅니다. ‘조선’은 ‘조선’을 ‘조선’이라고 부릅니다.
  • 다른 주기선 조합을 사용하여 형태 판단의 정확도를 높일 수 있다.
  • 트렌드 트레이딩 이론에 따라 순조로운 입시 거래.
  • 배경 색상 보조 판단을 설정하여 직관적으로 볼 수 있습니다.
  • 거래 논리는 간단하고 명확하며, 실행하기 쉽습니다.

위험 분석

  • 큰 주기적 흔들림 시장에서, 여러 차례의 조정 위험이 존재한다.
  • 3선 배열 순서가 바뀌면 평점 위험이 크다.
  • 트렌드가 강하거나 약하다고 판단할 수 없고, 트렌드에 적합하지 않은 상황이 있다.
  • 하지만, 이 경우, 그 위험은 매우 크다.
  • 고정주기는 시장의 변화에 적응할 수 없으며, 적응주기를 채택해야 한다.

위와 같은 위험에 대해 다음과 같은 조치를 취할 수 있습니다.

  1. 트렌드 필터링 조건을 추가하여 불안정한 시장에서 자주 포지션을 열지 않도록하십시오.

  2. 출전 조건을 최적화하고, 트렌드 지표와 결합하여 매매 시점을 판단한다.

  3. 단독 손실을 통제하기 위한 전략이 추가되었습니다.

  4. 적응형 이동 평균을 사용하여 주기적으로 동적으로 조정할 수 있습니다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.

  1. 트렌드 강약 판단을 높이고 평형 또는 흔들림 트렌드가 조기에 들어오는 것을 피한다. MACD, KDJ 등의 보조 판단을 도입할 수 있다.

  2. 이동 평균 주기 변수를 최적화하여 최적의 조합을 찾습니다. 다중 집합 변수를 재검토하여 최적의 변수를 찾을 수 있습니다.

  3. 적응형 이동 평균을 사용하여 시장의 움직임에 따라 주기적으로 적응 할 수 있습니다.

  4. 위험 통제를 위해 추적 중지, 잔액 중지 등의 손실을 막는 전략을 추가하십시오.

  5. 입학 조건을 최적화하여, 입학 수, 브린 띠 등의 지표를 필터링하여 입학 정확도를 높일 수 있습니다.

  6. 출전 조건을 최적화하고, 3선 교차시 트렌드 지표와 결합하여 트렌드 반전의 확률을 판단하여 출전 위험을 줄인다.

요약하다

윌리엄스 ?? 어 전략은 전형적인 트렌드 추적 전략이다. 그것은 빠른 또는 느린 3 개의 이동 평균을 통해 ?? 어 입을 판단하는 트렌드 방향을 형성하고 순조롭게 진입한다. 이 전략의 장점은 거래 논리가 간단하고 명확하며 작동하기 쉽다는 것이다. 이 전략의 단점은 트렌드 판단 정확도와 위험 제어 능력에 대한 약한 것이다.

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

//Noro
//2019

//@version=3
strategy(title = "Noro's Alligator Strategy by Bill Williams", shorttitle = "Alligator", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//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")
len1 = input(50, defval = 50, minval = 1, title = "MA 1 Length")
len2 = input(100, defval = 100, minval = 1, title = "MA 2 Length")
len3 = input(200, defval = 200, minval = 1, title = "MA 3 Length")
src = input(close, title = "Source")
showbg = input(false, title = "Show Background")
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")

//MAs
sma1 = sma(src, len1)
sma2 = sma(src, len2)
sma3 = sma(src, len3)
plot(sma1, color = lime, linewidth = 2)
plot(sma2, color = blue, linewidth = 2)
plot(sma3, color = red, linewidth = 2)

//Signals
up = sma1 > sma2 and sma2 > sma3
dn = sma1 < sma2 and sma2 < sma3

//Background
trend = 0
trend := up ? 1 : dn ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : red
bgcolor(col)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
    strategy.entry("Short", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()