적응형 이동 평균 십자 추적 스톱 전략은 여러 기술 지표들을 결합한 양적 거래 전략이다. 이 전략은 주로 빠르고 느린 간단한 이동 평균 (SMA) 의 십자 신호를 기반으로 거래하며, 적응형 추적 스톱을 사용하여 위험을 관리한다. 이 전략은 또한 변동률에 기반한 포지션 사이징과 적응형 스톱 레벨과 같은 몇 가지 고급 기능을 통합하여 다양한 시장 조건에서 적응성과 융통성을 높인다.
이 전략의 핵심 논리에는 다음과 같은 핵심 요소들이 포함되어 있습니다.
이동 평균 교차: 두 개의 다른 주기의 간단한 이동 평균 ((SMA) 를 사용하여, 각각 빠른 SMA ((默认5周期) 과 느린 SMA ((默认50周期)) 을 사용한다. 빠른 SMA가 느린 SMA를 상향으로 통과하면, 여러 신호가 발생한다.
포지션 사이징: 이 전략은 계정 잔액과 현재 가격에 기반한 동적 포지션 사이징 방법을 사용합니다. 또한 “신뢰” 인자를 도입하여 투입 된 자금의 비율을 조정할 수 있습니다.
추적 스톱: 퍼센티지 기반의 추적 스톱 메커니즘을 구현한다. 스톱 레벨은 가격 상승에 따라 올라갈 수 있어 수익을 잠금하고 철수를 제한한다.
자기 적응성: “fancy_tests” 옵션이 활성화되면, 전략은 표준 차원에 기반한 동적 스톱 손실 비율을 사용하여 스톱 손실 수준이 시장의 변동성에 따라 자기 적응 할 수 있도록합니다.
탈퇴 논리: 이 전략은 주로 고정된 수익을 얻은 결점을 설정하지 않고, 정지 손실을 추적하여 청산합니다.
트렌드 추적: 이동 평균의 교차를 사용하여, 전략은 중기 및 장기 동향을 포착할 수 있으며, 강한 동향에서 상당한 수익을 얻을 수 있습니다.
위험 관리: 손실을 추적하는 스톱 메커니즘을 적용하여 하향 위험을 효과적으로 제어하고 수익을 자유롭게 성장시킬 수 있습니다.
자기 적응성 (Self-adaptability): 변동률 요소를 통합하여 스톱 레벨을 조정하여 전략이 다른 시장 환경에 더 잘 적응할 수 있다.
자금 관리: 다이내믹 포지션 사이징은 계정 성장에 따라 거래 규모를 증가시키는데 도움을 주며, 또한 계정이 줄어들 때 자동으로 위험 을 줄일 수 있다.
유연성: 전략은 이동 평균, 스톱 손실 비율 등과 같은 여러 가지 조정 가능한 매개 변수를 제공하여 사용자가 다른 시장과 개인 위험 선호도에 따라 최적화 할 수 있습니다.
가짜 브레이크: 가로판이나 흔들리는 시장에서, 이동 평균의 가짜 브레이크가 자주 발생할 수 있으며, 이로 인해 여러 번의 손실이 발생한다.
뒤처진성: 이동 평균은 본질적으로 뒤처진 지표이며, 급격한 변동성 시장에서 충분히 빠르게 반응하지 않을 수 있다.
과도한 거래: 매개 변수가 잘못 설정되면, 거래 비용이 증가하는 빈번한 출전으로 이어질 수 있다.
철회 위험: 추적 손실이 있음에도 불구하고, 빠르게 변하는 시장에서는 여전히 큰 철회에 직면할 수 있습니다.
한방 거래: 전략은 현재 더 많은 것을 하고 공백을 하지 않고, 하향 추세에서 기회를 놓치거나 손실을 입을 수 있다.
다중 시간 프레임 분석: 거짓 신호를 줄이기 위해 더 긴 기간의 이동 평균과 같은 더 긴 기간의 추세 판단 지표를 도입한다.
코스피 로직에 가입: 코스피 거래를 지원하기 위해 전략을 확장하여 전략의 포괄성과 수익 기회를 향상시킵니다.
진입 시기를 최적화: 다른 기술 지표 (RSI, MACD 등) 와 결합하여 거래 신호를 필터링하여 진입 정확도를 높이는 것을 고려하십시오.
동적 변수 최적화: 시장의 변동성 동적에 기반하여 이동 평균 주기를 조정하는 등 적응적 변수 조정 메커니즘을 구현한다.
이윤을 채우기 메커니즘을 추가합니다. 기술 지표 또는 고정 목표에 기반한 이윤을 채우기 규칙을 추가하는 것을 고려할 수 있습니다.
포지션 관리를 개선: 케일리 가이드라인이나 다른 위험 평준화 방법과 같은 더 복잡한 포지션 사이징 전략을 적용하십시오.
기본적 필터링을 추가: 주식 거래의 경우, 기본적 지표를 추가 거래 필터링 조건으로 도입하는 것을 고려할 수 있습니다.
적응형 이동 평균 크로스 트래킹 스톱 전략은 여러 양적 거래 개념을 통합한 통합 전략이다. 그것은 트렌드를 포착하는 이동 평균 크로스, 트래킹 스톱 리스크를 활용하고 동적 파라미터를 조정하여 적응성을 향상시킵니다. 일부 고유한 위험과 한계가 있지만, 신중한 파라미터를 최적화하고 추가 전략적 개선을 통해 안정적인 거래 시스템으로 발전할 잠재력이 있습니다. 전략의 모듈러 디자인은 또한 미래의 확장과 최적화에 좋은 토대를 제공합니다.
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © chinmay.hundekari
//@version=5
//@version=5
strategy("test", overlay = true)
// Calculate two moving averages with different lengths.
SLMA = input.int(50,"SMA",minval=10,step=1)
FSMA = input.int(5,"SMA",minval=1,step=1)
fancy_tests = input.bool(true,"Enable Fancy Changes")
longLossPerc = input.float(2, title="Trailing Stop Loss (%)",
minval=0.0, step=0.1) * 0.01
stdMult = input.float(2.0, title="Standard Deviation Multiplier",
minval=0.0, step=0.01)
float fastMA = ta.sma(close, FSMA)
float slowMA = ta.sma(close, SLMA)
float closMA = ta.sma(close, 25)
confidence = 1.0
if (fancy_tests)
longLossPerc := stdMult * ta.stdev(ohlc4, 20)/close
balance = strategy.initial_capital + strategy.netprofit
balanceInContracts = balance* confidence/close
// Enter a long position when `fastMA` crosses over `slowMA`.
if ta.crossover(fastMA, slowMA)
strategy.entry("BUY", strategy.long, qty=balanceInContracts)
//longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
//Trailing Stop loss Code
longStopPrice = 0.0
percLoss = longLossPerc
longStopPrice := if strategy.position_size > 0
//if (strategy.openprofit_percent/100.0 > longLossPerc)
// percLoss := math.min(strategy.openprofit_percent/200.0, longLossPerc)
stopValue = close * (1 - percLoss)
math.max(stopValue, longStopPrice[1])
else
0
if strategy.position_size > 0
strategy.exit("STP", stop=longStopPrice)
plot(strategy.position_size > 0 ? longStopPrice : na,
color=color.red, style=plot.style_cross,
linewidth=2, title="Long Stop Loss")
// Enter a short position when `fastMA` crosses under `slowMA`.
//if ta.crossunder(fastMA, closMA)
// strategy.close_all("SEL")//strategy.entry("sell", strategy.short)
// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)
plot((confidence)*(close), "Confidence", color=color.green, linewidth=2)