
다단계 파동대 거래 전략은 가격 변동성에 기반한 정량 거래 방법이다. 이 전략은 여러 변동으로 인한 시장의 과매매 및 과매매 지역을 식별하고 가격이 이 영역을 만질 때 거래한다. 전략의 핵심 아이디어는 가격이 평균값에서 벗어날 때 포지션을 구축하고 가격이 돌아왔을 때 이익을 얻는 것이다. 이 방법은 평균값 회귀 이론을 모티브로 삼고, 마팅거 전략의 아이디어와 결합하여 불리한 흐름에서 포지션을 증가시 수익 기회를 높인다.
평균선 계산: 전략은 선택 가능한 평균선 유형을 사용하여 (SMA, EMA, SMMA, WMA, VWMA) 기준선을 계산한다.
진동대 설정: 기준선에 기초하여, 표준차를 곱한 배수를 사용하여 다층 진동대 설정을 한다.
피보나치 레벨: 피보나치 회수 레벨 ((23.6%, 38.2%, 50%, 61.8%) 을 사용하여 변동 영역을 세분화하여 더 많은 거래 기회를 창출하십시오.
동적 조정: 동적 배수를 사용하여 ATR ((평균 실제 파도) 에 따라 변동 대역폭을 자동으로 조정할 수 있다.
입구 논리: 가격이 어떤 변동 영역을 만지거나 넘으면, 전략은 그 방향으로 위치를 설정한다.
포지션 메커니즘: 가격이 불리한 방향으로 계속 움직인다면, 전략은 마팅겔 전략의 아이디어를 반영하여 변동의 범위에서 더 멀리 포지션을 증가시킵니다.
출구 논리: 가격이 기준선으로 돌아가면 평점을 선택하여 이익을 얻을 수 있다. 또한 가격이 기준선을 통과하면 평점을 설정할 수 있다.
다단계 진입: 여러 변동역과 피보나치 레벨을 설정함으로써 전략은 더 많은 거래 기회를 제공하며, 다른 가격 수준에서 시장의 변동성을 포착할 수 있다.
유연성: 전략은 사용자가 다른 시장 환경과 거래 품종에 맞게 다른 평균선 유형, 주기 및 변수를 선택할 수 있습니다.
동적 적응: 선택 가능한 동적 배수 기능은 전략이 시장의 변동성에 따라 자동으로 조정될 수 있도록 하여 전략의 적응성을 향상시킨다.
리스크 관리: 불리한 흐름에서 포지션을 증가시킴으로써, 전략은 평균 입시 가격을 낮추고 최종 수익을 올릴 가능성을 높인다.
평균값 회귀 이념: 전략은 가격이 결국 평균값으로 돌아가는 이념에 기초하고 있으며, 이는 많은 시장과 시간 프레임에서 잘 수행된다.
사용자 정의: 사용자는 자신의 위험 선호와 거래 스타일에 따라 주식 수, 피보나치 수평등과 같은 매개 변수를 조정할 수 있다.
연속적인 손실 위험: 강한 추세 시장에서, 가격은 지속적으로 여러 변동 영역을 뚫을 수 있으며, 이로 인해 연속적인 가장점과 많은 손실이 누적됩니다.
자금 관리 압력: 마틴게일 방식의 저축 전략은 계좌의 감당할 수 있는 능력 이상으로 급격히 증가하는 자금 수요를 초래할 수 있다.
과도한 거래: 여러 층의 변동폭은 불안한 시장에서 과도한 거래 신호를 생성하여 거래 비용을 증가시킬 수 있습니다.
매개 변수 민감성: 정책 성능은 매개 변수 설정에 크게 의존하며, 잘못된 매개 변수는 정책의 부실한 성능을 초래할 수 있다.
슬라이드 포인트 및 유동성 위험: 급격하게 변동하는 시장에서, 특히 포지션을 올릴 때 심각한 슬라이드 포인트에 직면 할 수 있습니다.
탈퇴 위험: 전략은 가축을 통해 평균 비용을 낮추는 것을 목표로 하지만, 극단적인 시장 조건에서는 여전히 큰 탈퇴가 발생할 수 있다.
트렌드 필터를 도입: 장기적인 트렌드 지표를 추가하여 트렌드 방향에서만 포지션을 열고, 강한 트렌드 중에 자주 역행 거래하는 것을 피할 수 있습니다.
다이내믹 포지션 관리: 계정 규모와 시장의 변동성에 따라 거래 당 주식의 수를 조정하여 위험을 더 잘 제어합니다.
최적화된 출전 메커니즘: 수익을 더 잘 고정하고 위험을 제어하기 위해 트레일링 스톱이나 변동성에 기반한 동적 스톱을 도입하는 것을 고려할 수 있습니다.
시간 필터링을 추가: 거래 시간 창 제한을 추가하여 변동성이 높거나 유동성이 낮은 시기를 피하십시오.
시장 정서 지표 통합: VIX와 같은 변동률 지표와 결합하여, 높은 변동성 동안 전략 파라미터를 조정하거나 거래를 일시 중지한다.
기계 학습을 도입: 기계 학습 알고리즘을 사용하여 동적으로 최적화 된 파라미터를 사용하여 시장 변화에 대한 전략의 적응력을 향상시킵니다.
기본 필터링을 추가합니다. 기본 데이터와 결합하여 특정 기본 조건에 따라 거래가 허용되며 거래 품질이 향상됩니다.
다단계 파동띠 거래 전략은 기술 분석, 확률 이론, 위험 관리 등을 결합한 복잡한 거래 시스템이다. 그것은 다단계 입시점과 마틴 앵글스식 가축 방법을 통해 가격 변동에서 이익을 잡으려고 한다. 전략의 장점은 유연성과 평균값에 대한 회귀를 이용하는 데 있지만, 동시에 강한 추세 시장에서 위험을 감수한다.
이 전략을 성공적으로 적용하려면 거래자가 시장 특성을 깊이 이해하고, 매개 변수를 신중하게 설정하고, 엄격한 위험 관리를 수행해야합니다. 시장에 대한 통찰력과 결합 된 지속적인 최적화 및 재검토를 통해 이 전략은 효과적인 거래 도구가 될 잠재력이 있습니다. 그러나, 그 복잡성과 잠재적인 위험을 감안할 때 실제 거래 전에 충분한 시뮬레이션 테스트와 위험 평가가 권장됩니다.
전체적으로 볼 때, 다단계 파동대 거래 전략은 양적 거래자에게 흥미롭고 도전적인 프레임워크를 제공합니다. 그 성공적인 적용은 기술적 분석 능력, 위험 관리 기술 및 지속적인 전략 최적화를 필요로합니다.
/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 2h
basePeriod: 15m
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/
// © abtov
//@version=5
strategy("Spider Strategy", overlay=true)
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
stdev = input.int(56, "STDEV", group="Stdev")
mult = input.float(2.3, "Multiplier", group="Stdev")
ma_len = input.int(230, "Basis Length", group="Stdev")
ma_type = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Stdev")
auto_mult = input.bool(true, "Dynamic Mult.", group="Stdev")
basis_exit = input.bool(false, "Basis Exit", group="Stdev")
col_int = input.int(12, "Collective Value", group="Collective")
col_input = input.bool(true, "Collective Input", group="Collective")
fib1 = input.float(0.236, "Fibonacci Level 1", group = "Fibonacci")
fib2 = input.float(0.382, "Fibonacci Level 2", group = "Fibonacci")
fib3 = input.float(0.5, "Fibonacci Level 3", group = "Fibonacci")
fib4 = input.float(0.618, "Fibonacci Level 4", group = "Fibonacci")
atr_len = input.int(30, "ATR", group="ATR")
atr_bias = input.float(0.72, "Bias", group="ATR")
shares = input.int(1, "Shares Amount", group="Strategy")
if(col_input == true)
stdev := col_int
ma_len := col_int
atr_len := col_int
if(auto_mult == true)
mult := ma(ta.tr(true), atr_len, ma_type) * atr_bias
basis = ma(close, ma_len, ma_type)
lower = basis - stdev * mult
upper = basis + stdev * mult
lower2 = basis - stdev * mult * fib1
upper2 = basis + stdev * mult * fib1
lower3 = basis - stdev * mult * fib2
upper3 = basis + stdev * mult * fib2
lower4 = basis - stdev * mult * fib3
upper4 = basis + stdev * mult * fib3
lower5 = basis - stdev * mult * fib4
upper5 = basis + stdev * mult * fib4
var lowerAct = false
var lower2Act = false
var lower3Act = false
var lower4Act = false
var lower5Act = false
var upperAct = false
var upper2Act = false
var upper3Act = false
var upper4Act = false
var upper5Act = false
plot(upper, "limit short", color.red)
plot(upper2, "limit 1 short", color.red)
plot(upper3, "limit 2 short", color.red)
plot(upper4, "limit 3 short", color.red)
plot(upper5, "limit 4 short", color.red)
plot(basis, "basis", color.white)
plot(lower, "limit long", color.green)
plot(lower2, "limit 1 long", color.green)
plot(lower3, "limit 2 long", color.green)
plot(lower4, "limit 3 long", color.green)
plot(lower5, "limit 4 long", color.green)
if(lowerAct == false)
if(close < lower)
strategy.entry("long", strategy.long, shares)
lowerAct := true
else
if(low > basis)
lowerAct := false
if(lower2Act == false)
if(close < lower2)
strategy.entry("long", strategy.long, shares)
lower2Act := true
else
if(low > basis)
lower2Act := false
if(lower3Act == false)
if(close < lower3)
strategy.entry("long", strategy.long, shares)
lower3Act := true
else
if(low > basis)
lower3Act := false
if(lower4Act == false)
if(close < lower4)
strategy.entry("long", strategy.long, shares)
lower4Act := true
else
if(low > basis)
lower4Act := false
if(lower5Act == false)
if(close < lower5)
strategy.entry("long", strategy.long, shares)
lower5Act := true
else
if(low > basis)
lower5Act := false
if(upperAct == false)
if(close > upper)
strategy.entry("short", strategy.short, shares)
upperAct := true
else
if(high < basis)
upperAct := false
if(upper2Act == false)
if(close > upper2)
strategy.entry("short", strategy.short, shares)
upper2Act := true
else
if(high < basis)
upper2Act := false
if(upper3Act == false)
if(close > upper3)
strategy.entry("short", strategy.short, shares)
upper3Act := true
else
if(high < basis)
upper3Act := false
if(upper4Act == false)
if(close > upper4)
strategy.entry("short", strategy.short, shares)
upper4Act := true
else
if(high < basis)
upper4Act := false
if(upper5Act == false)
if(close > upper5)
strategy.entry("short", strategy.short, shares)
upper5Act := true
else
if(high < basis)
upper5Act := false
if((ta.crossover(close, basis) and basis_exit == true))
strategy.close("short")
strategy.close("long")