
EMA 골드 크로스 트레이딩 전략은 서로 다른 주기의 EMA 평균선을 계산하여, 그들의 교차 상황을 판단하여 구매 및 판매 신호를 발산한다. 짧은 주기의 EMA 상에서 긴 주기의 EMA를 통과하면 구매 신호를 생성하고, 짧은 주기의 EMA 아래에서 긴 주기의 EMA를 통과하면 판매 신호를 생성한다.
이 전략의 핵심은 두 개의 다른 주기의 EMA 평균을 계산하는 것입니다. 그 중 하나는 짧은 주기의 EMA 평균이며, 기본 주기는 9이며, 더 긴 주기의 EMA 평균은 20입니다. 코드는 파인 스크립트의 built-in ema 함수를 호출하여 각각 두 개의 라인을 계산합니다. 두 개의 EMA 라인이 교차하는지 판단하여 거래를 생성합니다.
교차 신호의 판단은 pine 스크립트의 crossover와 crossunder 두 개의 내장 함수를 통해 실현된다. crossover 함수는 빠른 선이 아래에서 긴 선을 통과하여 부어 값을 반환하는지 판단하고, crossunder 함수는 빠른 선이 위에서 아래에서 긴 선을 통과하여 부어 값을 반환하는지 판단한다. 이 두 가지 함수의 반환값에 따라, 코드는 대응하는 구매 또는 판매 명령을 제출한다.
이 외에도 코드는 시작 및 종료 날짜를 설정하고, 더 많은 작업을 수행하거나 더 많은 작업을 수행하는 것을 제한하는 것과 같은 보조 조건을 제공합니다. 이것은 더 정교한 재검토 또는 최적화를 수행하는 데 도움이됩니다.
이 전략의 가장 큰 장점은 매우 간단하고 직설적이며 이해하기 쉽고 구현하기 쉽고 초보자 학습에 적합하다. 또한, 이동 평균 자체는 추세 추적 지표로서 시장 추세를 효과적으로 추적하여 추세를 사용하여 추가 수익을 창출 할 수 있습니다. 마지막으로, 이 전략의 파라미터가 적고 조정하기 쉽다는 것도 이 전략의 장점 중 하나입니다.
이 전략은 주로 노이즈 트레이딩과 트렌드 반전의 위험에 직면한다. EMA 라인은 단기 시장의 변동에 영향을 받기 쉽고, 잘못된 신호를 생성하여 불필요한 거래를 초래할 수 있으며, 이는 거래 빈도와 비용을 증가시킨다. 다른 한편으로, 교차 신호가 발산될 때, 트렌드가 반전 지점에 가까워질 수 있으며, 이때 거래의 위험이 높다. 또한, 파라미터를 적절하게 설정하지 않으면 전략의 성과에 영향을 줄 수 있다.
EMA 주기를 조정하거나 다른 필터 조건을 추가하는 등의 방법을 사용하여 노이즈 거래를 줄일 수 있습니다. 또한 단독 손실을 제어하기 위해 스톱로스를 설정할 수 있습니다. 최적화 매개 변수는 전략을 더 안정적으로 만들 수 있습니다. 물론, 어떤 거래 전략도 손실을 완전히 피할 수 없으며 약간의 위험을 감수해야합니다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
EMA 골드 크로스 (EMA Gold Cross) 는 간단한 효과적인 트렌드 추적 전략이다. EMA 크로스 (EMA Cross) 를 사용하여 거래 신호를 생성하여 가격 트렌드를 자동으로 캡처하고, 가격의 트렌드로부터 이익을 얻을 수 있다. 이 전략은 이해하기 쉽고 조정할 수 있으며 초보자 학습에 적합하며 더 복잡한 전략에 모듈로 통합 될 수 있다. 그러나 모든 전략에는 위험이 있으며 적절한 관리가 필요합니다.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
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/
// This strategy has been created for illustration purposes only and should not be relied upon as a basis for buying, selling, or holding any asset or security.
// © kirilov
//@version=4
strategy(
"EMA Cross Strategy",
overlay=true,
calc_on_every_tick=true,
currency=currency.USD
)
// INPUT:
// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input(title="Fast EMA", type=input.integer, defval=9, minval=1, maxval=9999)
emaSlow = input(title="Slow EMA", type=input.integer, defval=20, minval=1, maxval=9999)
// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")
// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 1970 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2170 23:59"))
// CALCULATIONS:
// Use the built-in function to calculate two EMA lines
fastEMA = ema(close, emaFast)
slowEMA = ema(close, emaSlow)
// PLOT:
// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.black, linewidth=2)
plot(series=slowEMA, color=color.red, linewidth=2)
// CONDITIONS:
// Check if the close time of the current bar falls inside the date range
inDateRange = true
// Translate input into trading conditions
longOK = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
// Decide if we should go long or short using the built-in functions
longCondition = crossover(fastEMA, slowEMA)
shortCondition = crossunder(fastEMA, slowEMA)
// ORDERS:
// Submit entry (or reverse) orders
if (longCondition and inDateRange)
strategy.entry(id="long", long=true, when = longOK)
if (shortCondition and inDateRange)
strategy.entry(id="short", long=false, when = shortOK)
// Submit exit orders in the cases where we trade only long or only short
if (strategy.position_size > 0 and shortCondition)
strategy.exit(id="exit long", stop=close)
if (strategy.position_size < 0 and longCondition)
strategy.exit(id="exit short", stop=close)