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

트럼프볼링거 EM 캔들스타크 전략

저자:차오장, 날짜: 2023-10-07 15:30:27
태그:

전반적인 설명

이 전략은 단기 거래 전략에 속하는 듀얼 라인 도박 거래를 위해 볼링거 밴드, EMA 및 촛불 패턴을 사용합니다.

원칙

이 전략은 다음과 같은 부분으로 구성됩니다.

  1. 볼링거 밴드 닫기 가격과 표준편차를 기반으로 상위 및 하위 레일을 생성합니다. 가격이 상위 레일에 접근 할 때 짧게, 하위 레일에 접근 할 때 길게 이동합니다.

  2. EMA 21일 지수 이동 평균을 계산하고 가격이 EMA를 넘으면 거래 신호를 생성합니다.

  3. 촛대 패턴 가격 반전 포인트를 식별 하락 어두운 구름 덮개와 상단 뚫림 패턴과 같은 거래를 촉발.

  4. 이중 라인 도박 볼링거, EMA 크로스오버 및 촛불 패턴의 신호를 기반으로 동시에 장과 단위로 이동하십시오.

논리는 다음과 같습니다.

볼링거 밴드를 사용하여 잠재적 인 반전 지점을 식별하고, 상부 레일에서 짧고, 하부 레일에서 길게 이동하십시오. 21 일간의 EMA를 계산하고 골든 크로스에서 길게 이동하고, 죽음의 크로스에서 짧게 이동하십시오. 또한 반전을 식별하기 위해 촛불 패턴을 사용하며, 아래 어두운 구름에서 길게 이동하고, 상위 파격에서 짧게 이동하십시오. 최종 쌍방향 거래 결정을 내리기 위해 세 가지 신호를 모두 결합하십시오.

이 전략은 거래 결정의 효율성을 향상시키기 위해 여러 확인 신호를 통합합니다. 이점은 여러 가지 검증과 역행에 대한 신속한 대응으로 더 높은 수익성입니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 여러 신호 확인으로 정확도가 향상됩니다.

볼링거, EMA 및 촛불을 함께 사용하면 신호를 검증함으로써 정확성을 향상시킵니다. 이것은 잘못된 신호와 잘못된 거래를 피하는 데 도움이됩니다.

  1. 적시에 대응하고 역행을 포착합니다

결합된 신호는 전환이 진행되기 전에 적시에 거래할 수 있는 잠재적인 전환점을 빠르게 식별합니다.

  1. 더 높은 이중 거래 수익성

긴 포지션과 짧은 포지션을 두 가지 방향으로 큰 움직임에서 이익을 얻습니다. 이것은 일방적인 시장에서 위험을 줄입니다.

  1. 단기 거래에 대한 유연성

짧은 기간 볼링거와 EMA는 짧은 기간의 움직임을 포착 할 수 있으며 빈번한 거래에 적합하며 고 빈도의 변동에 반응합니다.

  1. 직접 사용할 수 있고 조작이 간단합니다.

완전한 전략 코드는 라이브 트레이딩에 직접 사용할 수 있습니다. 합리적인 매개 변수 선택 또한 개인 트레이더에 매우 쉽게 사용할 수 있습니다.

위험 분석

잠재적인 위험은 다음과 같습니다.

  1. 가능한 연속 스톱 손실

볼링거, EMA 및 촛불 신호의 윙사 (Whipsaw) 는 연속적인 스톱 손실을 일으킬 수 있습니다. 합리적인 스톱 손실을 보장하기 위해 매개 변수를 조정하십시오.

  1. 이중 거래에서 더 높은 위험

장기 및 단위 보유는 손실을 증폭시킬 수 있습니다. 위험을 지원하기 위해 충분한 자본이 필요합니다. 낮은 포지션 크기가 권장됩니다.

  1. 단기 거래에 필요한 긴밀한 모니터링

빈번한 단기 거래는 시장을 면밀히 추적해야 합니다. 예상치 못한 큰 손실을 제한하기 위해 Stop Profit/Loss를 설정하세요.

  1. 제한된 최적화 공간

볼링거와 EMA는 상대적으로 작은 최적화 공간을 가지고 있습니다. 매개 변수를 적용 할 때 유연성이 필요합니다.

  1. 일반적인 촛불 패턴은 명확하지 않을 수 있습니다.

전략의 일부는 때때로 불분명 할 수있는 촛불 신호에 의존합니다. 그러한 경우 다른 지표와 결합하십시오.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 더 많은 표시 신호를 통합

KD와 같은 다른 지표를 추가하면 MACD는 신호 소스를 다양화하고 의사 결정 정확도를 향상시킵니다.

  1. 기계 학습을 통합

ML 알고리즘을 사용하여 역사적 데이터를 분석하고 수동 개입을 줄이기 위해 일부 지표 신호를 증강하거나 대체합니다.

  1. 스톱 이윤/손실 최적화

성과에 기반한 적응 스톱프로피를 도입하고 위험을 줄이기 위해 스톱 손실을 추적합니다.

  1. 리스크 관리 강화

시장 조건에 따라 자본 할당, 위치 크기 및 위험 관리 전략을 최적화합니다.

  1. 양적 백테스팅 및 최적화

백테스팅과 종이 거래를 활용하여 매개 변수를 반복적으로 최적화하고 실시간 거래 결정을 돕습니다.

  1. 자동 거래

백테스트 결과를 기반으로 전략을 매개 변수화하고 자동화 거래 시스템으로 통합하여 손 자유 실행.

결론

이 전략은 복수의 검증을 위해 볼링거, EMA 및 촛불 신호를 통합합니다. 이중 라인 거래는 수익성을 더욱 향상시킵니다. 빠른 반응으로 단기 빈번한 거래에 적합합니다. 효과적인 스톱 이익 / 손실 및 매개 변수 최적화는 위험을 줄이는 동시에 성능을 더욱 향상시킬 수 있습니다. 전반적으로이 간단하고 실용적인 전략은 강력한 실용적 가치를 가지고 있습니다.


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

//@version=4
//Design by MrPhu in August,10,2018
strategy("TrumpShipper_Long_Short V26", overlay=true)
filterFractals = input(true, title=" Follow Code #Trump On/Off")
dt = 0.0001
confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1])
prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1]

if (prediction)
    strategy.exit("Close", "Short ")
    strategy.entry("Long ", strategy.long)

if (not prediction)
    strategy.exit("Close", "Long ")
    strategy.entry("Short ", strategy.short)
///////////Bollinger Band///////////////
length = 20
crc = close, title="Source"
mult = 2.0
basis = sma(crc, length)
dev = mult * stdev(crc, length)
upper = basis + dev
lower = basis - dev
spanColor = prediction ? green : red, transp=90

p1 = plot(upper, title="Short", style=line, linewidth=1, color=spanColor)
p2 = plot(lower, title="Long", style=line, linewidth=1, color=spanColor)

fill(p1, p2, color=spanColor, transp=90, title="Fill")

/////////////
Optional_TimeFrame = 'D'

M_HIGH = request.security(syminfo.tickerid, Optional_TimeFrame, high)
M_OPEN = request.security(syminfo.tickerid, Optional_TimeFrame, open)
M_LOW = request.security(syminfo.tickerid, Optional_TimeFrame, low)

H_RANGE = M_HIGH-M_OPEN
L_RANGE = M_OPEN-M_LOW

H_236 = M_HIGH - H_RANGE * 0.236
H_382 = M_HIGH - H_RANGE * 0.382
H_500 = M_HIGH - H_RANGE * 0.500
H_618 = M_HIGH - H_RANGE * 0.618
H_764 = M_HIGH - H_RANGE * 0.764

L_236 = M_LOW + L_RANGE * 0.236
L_382 = M_LOW + L_RANGE * 0.382
L_500 = M_LOW + L_RANGE * 0.500
L_618 = M_LOW + L_RANGE * 0.618
L_764 = M_LOW + L_RANGE * 0.764

pl1=plot(M_HIGH, color=M_HIGH != M_HIGH[1] ?na:black, style=line, linewidth=1, transp=80)

pl2=plot(H_236, color=H_236 != H_236[1] ?na:gray, style=line, linewidth=1, transp=80)
pl3=plot(H_382, color=H_382 != H_382[1] ?na:black, style=line, linewidth=1, transp=80)
pl4=plot(H_500, color=H_500 != H_500[1] ?na:red, style=line, linewidth=1, transp=80)
pl5=plot(H_618, color=H_618 != H_618[1] ?na:gray, style=line, linewidth=1, transp=80)
pl6=plot(H_764, color=H_764 != H_764[1] ?na:gray, style=line, linewidth=1, transp=80)

pl7=plot(M_OPEN, color=M_OPEN != M_OPEN[1] ?na:blue, style=line, linewidth=2)

pl8=plot(L_236, color=L_236 != L_236[1] ?na:gray, style=line, linewidth=1, transp=80)
pl9=plot(L_382, color=L_382 != L_382[1] ?na:black, style=line, linewidth=1, transp=80)
pl10=plot(L_500, color=L_500 != L_500[1] ?na:red, style=line, linewidth=1, transp=80)
pl11=plot(L_618, color=L_618 != L_618[1] ?na:black, style=line, linewidth=1, transp=80)
pl12=plot(L_764, color=L_764 != L_764[1] ?na:gray, style=line, linewidth=1, transp=80)

pl13=plot(M_LOW, color=M_LOW != M_LOW[1] ?na:black, style=line, linewidth=1, transp=80)

SHOW_MA = false
MA_SRC = hlc3
MA_LENGTH = 21

_MA = ema(MA_SRC, MA_LENGTH)
pl14=plot(not SHOW_MA ? na : _MA, color=teal, linewidth=2)

SHOW_SIGNALS = true

BUYX(_F) => cross(_F, MA_SRC) and rising(_MA, 1)
SELX(_F) => cross(_F, MA_SRC) and falling(_MA, 1)

SEL_SIGNAL = SELX(H_236) or SELX(H_382) or SELX(H_500) or SELX(H_618) or SELX(H_764) or SELX(L_236) or SELX(L_382) or SELX(L_500) or SELX(L_618) or SELX(H_764)

BUY_SIGNAL = BUYX(H_236) or BUYX(H_382) or BUYX(H_500) or BUYX(H_618) or BUYX(H_764) or BUYX(L_236) or BUYX(L_382) or BUYX(L_500) or BUYX(L_618) or BUYX(H_764)

//================= Chart 30m =================/////
//Jurij
h_left = 10
h_right = 10
//barCount = nz(barCount[1]) + 1
//check history and realtime PTZ
h_left_low = lowest(h_left)
h_left_high = highest(h_left)
newlow = low <= h_left_low
newhigh = high >= h_left_high
central_bar_low = low[h_right + 1]
central_bar_high = high[h_right + 1]
full_zone_low = lowest(h_left + h_right + 1)
full_zone_high = highest(h_left + h_right + 1)
central_bar_is_highest = central_bar_high >= full_zone_high
central_bar_is_lowest = central_bar_low <= full_zone_low
plotchar(central_bar_is_highest ? -1 : 0, offset=-h_right-1 ,color=red, text="Top")
plotchar(central_bar_is_lowest ? 1 : 0, offset=-h_right-1 ,location=location.belowbar, color=green, text="Bottom")

더 많은