즉시 사용 가능한 머신 러닝 거래 전략


생성 날짜: 2024-01-29 11:20:42 마지막으로 수정됨: 2024-01-29 11:20:42
복사: 0 클릭수: 723
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

즉시 사용 가능한 머신 러닝 거래 전략

개요

이 전략은 기계학습의 방법을 활용하여 상자에서 사용할 수 있는 자동화 거래 전략을 구현한다. 그것은 여러 지표와 모델을 통합하여 자동으로 거래 신호를 생성하고 신호에 따라 구매 및 판매 작업을 수행 할 수 있다.

전략 원칙

이 전략은 다음과 같은 몇 가지 요인에 기초하고 있습니다.

  1. 헐 평균선을 사용하여 시장 추세 방향을 판단
  2. 단기 및 중기 트렌드를 판단하기 위해 EMA를 사용합니다.
  3. K선 실체 통로를 사용하여 중요한 SUPPORT/RESISTANCE 위치를 판단
  4. 다주기 SECURITY 개시 가격과 종료 가격의 교차를 이용하여 의사결정을 한다.

구체적으로, 전략은 헐 평균, 13주기 EMA 및 21주기 EMA를 도출한다. EMA의 빈 상태로 단기 및 중기 트렌드 방향을 판단한다. 그리고 헐 평균과 결합하여 더 긴 기간의 트렌드를 판단한다. 이것은 후속 거래 신호에 큰 방향을 안내한다.

포지션을 조정하기 전에, 전략은 실물 통로의 최고 가격과 최저 가격에 대응하는 지원 및 저항 지점을 참조한다. 이것은 중요한 가격 영역에서 거래 신호를 생성하는 것을 피할 수 있다.

마지막으로, 전략은 60주기 오프닝 가격과 오프닝 가격을 호출합니다. 오프닝 가격과 오프닝 가격의 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오프닝 가격과 오

전략적 강점 분석

이 전략의 가장 큰 장점은 기계 학습과 기술 분석 지표를 결합하여 논리적으로 명확하고, 매개 변수를 조정할 수 있고, 작동하기 쉬운 자동화 거래 프로그램을 구현한다는 것입니다.

  1. 다중 지표 조합, 신호 정확성 향상

전략은 단순히 한 두 개의 지표에 의존하지 않고, 트렌드, 지지 저항, 가격 돌파구와 같은 여러 요소를 종합적으로 고려하여 신호의 신뢰성과 정확성을 크게 향상시킵니다.

  1. 유연한 변수 설정

hull 평균선 길이, EMA 주기 수, 상장 상장 교차 주기 수를 매개 변수로 조정할 수 있어 전략이 다른 시장 환경에 유연하게 적응할 수 있다.

  1. 자동 거래 신호

지표와 가격의 교차에 기반한 거래 신호는 자동으로 구매와 판매를 촉발할 수 있으며, 인적 판단이 필요하지 않아 조작의 난이도가 낮아진다.

  1. 시각화

전략의 차트는 시장 구조, 트렌드 상태 및 핵심 가격을 명확하게 보여주고, 전략 판단의 근거를 직관적으로 나타냅니다.

위험 분석

이 전략은 다방면으로 최적화되었지만, 몇 가지 위험 요소가 있습니다.

  1. 하지만, 그 결과로 인해,

급격한 가격 변동이 있는 상황에서 지표는 실패하거나 지연될 수 있으며, 이로 인해 전략이 가격 변화를 제 시간에 추적할 수 없습니다. 이러한 상황에 적응하기 위해 파라미터를 최적화해야 합니다.

  1. 신호 오류가 존재합니다.

지표와 모델의 거래 신호에 따라, 몇 가지 잘못된 신호 또는 누락된 신호가 발생할 수 있습니다. 이것은 더 많은 보조 신호를 조합하여 신호 품질을 향상시킬 필요가 있습니다.

  1. 다공간 MIX 위험

전략은 동시에 더 많은 코카이드를 하고, 판단이 잘못되면 양방향 손실의 위험에 직면할 수 있다. 이것은 엄격한 단절 손실 또는 위치를 낮추는 것을 통제해야 한다.

  1. 과대 최적화 위험

매개 변수 설정이 너무 복잡하여 최적화 될 위험이 있습니다. 이것은 시스템을 단순화하고 매개 변수 조합의 수를 제어해야합니다.

전략 최적화 방향

이 전략은 다음과 같은 몇 가지 측면에서 최적화 할 수 있습니다.

  1. 더 많은 지표 신호를 추가합니다.

기존의 지표 외에도 BOLL 채널, KD 지표 등과 같은 더 많은 보조 지표가 도입될 수 있으며, 시스템 판단 기반을 풍부하게 할 수 있다.

  1. 딥러닝 모델의 적용

심플 인디케이터 (simple indicators) 를 특징으로 하고, LSTM와 같은 딥 러닝 모델을 훈련시켜 신호 품질을 향상시킨다.

  1. 기본 데이터와 함께

대경제 데이터, 정책 정보와 같은 기본 요소를 추가하여 대주기 의사 결정을 최적화하십시오.

  1. 위험과 포지션 관리

손실을 막는 전략을 도입하고, 전략에 따라 수익 변동성에 따라 포지션 규모를 동적으로 조정하고, 위험을 엄격히 통제한다.

요약하다

이 전략은 트렌드, 지원 저항, 돌파구와 같은 여러 지표를 통합하여 기계 학습 방법을 사용하여 자동화 된 상자 공개 거래 프로그램을 구현합니다. 지표 포트폴리오의 다양성, 매개 변수 조정, 신호 자동화 등의 장점이 있지만, 추적 오차, 신호 오류, 다공간 MIX 등의 문제도 있습니다.

전략 소스 코드
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

///////////////////////////////////////////////////////////////////////////////////////////