갈릴레오 이동 평균 교차 전략


생성 날짜: 2023-12-18 12:07:07 마지막으로 수정됨: 2023-12-18 12:07:07
복사: 0 클릭수: 566
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

갈릴레오 이동 평균 교차 전략

개요

갈릴레오 평균선 교차는 이동 평균을 기반으로 한 거래 전략이다. 이 전략은 일정 주기의 지수 이동 평균을 계산하고 가격과 교차 비교를 함으로써 거래 신호를 생성한다. 가격이 위쪽에서 아래로 이동하면 판매 신호를 생성하고, 가격이 아래쪽에서 평균선을 돌파하면 구매 신호를 생성한다. 이 전략의 이름은 갈릴레오 갈릴레오에서 유래했다.

전략 원칙

갈릴레오의 평균선 교차 전략의 핵심은 지수 이동 평균 (EMA) 이다. EMA는 최근 가격에 더 큰 무게를 부여하는 경향이있는 이동 평균 알고리즘이다. 그것의 계산 공식은 다음과 같다:

오늘 EMA = (오늘의 종결 가격 × 평평함수) + (어제 EMA × [1- 평평함수])

그 중, 평평한 상수 α = ((2/(주기수+1)) ᅳ

이 전략은 사용자 입력의 주기 길이를 통해 실시간으로 EMA 값을 계산한다. 그리고는 가격을 EMA와 비교하여 두 가지의 교차 상황을 판단하여 구매 및 판매 신호로 사용한다:

  1. 가격이 상향에서 하향으로 EMA를 넘어갈 때, 판매 신호를 생성하고, 짧은 라인 작업을 수행한다.

  2. 가격이 아래에서 EMA를 돌파할 때, 구매 신호가 발생하여 다중 거래가 진행됩니다.

이 전략은 EMA 라인을 그리는 동시에, 매매 신호를 표시하는 화살표를 그리는 것입니다.

우위 분석

갈릴레오의 평행선 교차 전략은 다음과 같은 장점을 가지고 있다:

  1. 이 아이디어는 간단하고 이해하기 쉽고, 초보자에게도 적합합니다.
  2. EMA를 이용하면 가격 변화에 더 빠르게 대응할 수 있다.
  3. 교차로에서 신호가 명확하게 나오고, 거래가 자주 일어나지 않습니다.
  4. 다양한 시장 환경에 적응하여 EMA 파라미터를 조정할 수 있습니다.
  5. 출입 및 출입 신호를 명확히 하고, 위험을 통제한다.

위험 분석

갈릴레오의 평행선 교차 전략에는 다음과 같은 위험도 있습니다.

  1. 가격의 급격한 변동이 있을 때, 더 많은 가짜 신호가 발생하여 효과에 영향을 미칩니다.
  2. 단일 지표는 가짜 행위의 영향을 받기 쉽고, 신호가 실패한다. 추가 지표를 추가하여 최적화할 수 있다.
  3. 어느 정도의 지연이 존재하는데, 특히 급격한 사건이 발생한 후 . 수평선 변수를 줄이는 테스트를 할 수 있다.
  4. 장기간 지속되는 가격의 일방적인 행태에 적응할 수 없습니다. 이것은 일방적인 전략의 공통된 단점입니다.

최적화 방향

갈릴레오 평행선 교차 전략은 다음과 같은 방향으로 최적화할 수 있다:

  1. 다른 지표와 결합하여 복합 전략을 구축하고, 가짜 신호를 피하고, 안정성을 향상시킵니다. 예를 들어, 거래량, 트렌드 지표 등을 추가하십시오.

  2. 단위 손실을 제어하기 위해 이동 중지 또는 비율 중지를 설정하여 손실을 중지하는 전략을 추가하십시오.

  3. EMA의 다른 변수들의 효과를 테스트하고, 최적의 변수 조합을 선택한다. 다른 유형의 이동 평균도 테스트할 수 있다.

  4. 재입장기구에 가입하는 것을 평가하고, 가격 반전 후 재입장하여 수익률을 높이는 것을 평가한다.

요약하다

갈릴레오 평선 교차 전략은 간단하고 실용적인 거래 전략으로, 아이디어가 명확하고, 작동하기 쉽으며, 양적 거래를하는 초보자에게 적합하다. 지속적인 최적화와 개선으로, 그 효과가 점점 더 좋아질 것으로 믿어 권장된다.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © armigoldman

//@version=3
strategy(title="Galileo Galilei", shorttitle="Galileo Galilei", overlay=true, initial_capital = 100000, default_qty_type=strategy.cash, default_qty_value = 100000)
len = input(11, minval=1, title="Length")
src = input(open, title="Source")
out = ema(src, len)
plot(out, title="EMA", color=yellow)
//last8h = highest(close, 8)
//lastl8 = lowest(close, 8)

//plot(last8h, color=red, linewidth=2)
//plot(lastl8, color=green, linewidth=2)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2020, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=12, title="To Month", minval=1, maxval=12)
toYear = input(defval=2021, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


bearish = cross(close, out) == 1 and close[1] > close
bullish = cross(close, out) == 1 and close[1] < close

plotshape(bearish, color=white, style=shape.arrowdown, text="BEAR", location=location.abovebar)
plotshape(bullish, color=white, style=shape.arrowup, text="BULL", location=location.belowbar)

buy = if cross(close, out) == 1 and close[1] < close
    strategy.entry("BUY", strategy.long, when=time_cond)
        //strategy.close_all(when=bearish)
        // strategy.exit("exit", "Long", profit =, loss = 35)


sell = if cross(close, out) == 1 and close[1] > close
    strategy.entry("SELL", strategy.short, when=time_cond)
        //sell = if bearish
        //strategy.close_all(when=bullish)
        // strategy.exit("exit", "Long", profit = bullish, loss = 100)

profit = strategy.netprofit
if not time_cond
    strategy.close_all()

//plotshape(true, style=shape.triangleup, location=location.abovebar)