
갈릴레오 평균선 교차는 이동 평균을 기반으로 한 거래 전략이다. 이 전략은 일정 주기의 지수 이동 평균을 계산하고 가격과 교차 비교를 함으로써 거래 신호를 생성한다. 가격이 위쪽에서 아래로 이동하면 판매 신호를 생성하고, 가격이 아래쪽에서 평균선을 돌파하면 구매 신호를 생성한다. 이 전략의 이름은 갈릴레오 갈릴레오에서 유래했다.
갈릴레오의 평균선 교차 전략의 핵심은 지수 이동 평균 (EMA) 이다. EMA는 최근 가격에 더 큰 무게를 부여하는 경향이있는 이동 평균 알고리즘이다. 그것의 계산 공식은 다음과 같다:
오늘 EMA = (오늘의 종결 가격 × 평평함수) + (어제 EMA × [1- 평평함수])
그 중, 평평한 상수 α = ((2/(주기수+1)) ᅳ
이 전략은 사용자 입력의 주기 길이를 통해 실시간으로 EMA 값을 계산한다. 그리고는 가격을 EMA와 비교하여 두 가지의 교차 상황을 판단하여 구매 및 판매 신호로 사용한다:
가격이 상향에서 하향으로 EMA를 넘어갈 때, 판매 신호를 생성하고, 짧은 라인 작업을 수행한다.
가격이 아래에서 EMA를 돌파할 때, 구매 신호가 발생하여 다중 거래가 진행됩니다.
이 전략은 EMA 라인을 그리는 동시에, 매매 신호를 표시하는 화살표를 그리는 것입니다.
갈릴레오의 평행선 교차 전략은 다음과 같은 장점을 가지고 있다:
갈릴레오의 평행선 교차 전략에는 다음과 같은 위험도 있습니다.
갈릴레오 평행선 교차 전략은 다음과 같은 방향으로 최적화할 수 있다:
다른 지표와 결합하여 복합 전략을 구축하고, 가짜 신호를 피하고, 안정성을 향상시킵니다. 예를 들어, 거래량, 트렌드 지표 등을 추가하십시오.
단위 손실을 제어하기 위해 이동 중지 또는 비율 중지를 설정하여 손실을 중지하는 전략을 추가하십시오.
EMA의 다른 변수들의 효과를 테스트하고, 최적의 변수 조합을 선택한다. 다른 유형의 이동 평균도 테스트할 수 있다.
재입장기구에 가입하는 것을 평가하고, 가격 반전 후 재입장하여 수익률을 높이는 것을 평가한다.
갈릴레오 평선 교차 전략은 간단하고 실용적인 거래 전략으로, 아이디어가 명확하고, 작동하기 쉽으며, 양적 거래를하는 초보자에게 적합하다. 지속적인 최적화와 개선으로, 그 효과가 점점 더 좋아질 것으로 믿어 권장된다.
/*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)