
이 전략은 시장의 동향을 판단하기 위해 평행선 모형을 사용하며, 시장의 골든 크로스 상향 동향을 추적하기 위해 보이스 트렌드 때 정기적으로 더 많은 포지션을 설정합니다.
이 전략은 다음과 같은 몇 가지 기술 원칙에 기초하고 있습니다.
EMA 평균선을 사용하여 시장의 경향 방향을 판단한다. 빠른 EMA 라인에 느린 EMA 라인을 통과 할 때, 관측 경향으로 판단하고, 다방향으로 입주를 준비한다.
MACD 지표와 결합하여 진입 시점을 판단한다. MACD 지표가 긍정적으로 전환되면, 거래가 약해지기 시작하고, 다방향 진입을 한다.
매월 한 번만 입장할 수 있도록 제한한다. 매번 입장하는 숫자는 고정되어 있다.
시작 날짜와 종료 날짜를 설정할 수 있으며, 재검토 주기를 제한할 수 있다. 재검토가 끝나면, 전략은 모든 포지션을 평행한다.
구체적으로, 이 전략은 먼저 빠른 EMA 라인을 계산하고 느린 EMA 라인을 검출하여 두 가지의 골드포크 관계를 판단하여 시장의 흐름을 판단한다. 동시에 MACD 지표를 계산하여 특정 진입 지점을 판단한다. 두 번째 조건이 성립할 때 여러 신호를 생성하고, 매월 한 번만 진입할 수 있는 제한된 규칙에 따라 실제 진입 명령을 발령하는 것을 결정한다.
이 전략은 간단하고 직접적인 트렌드 추적 전략으로 다음과 같은 장점이 있습니다.
EMA 평균선을 사용하여 큰 트렌드 방향을 판단하는 것은 간단하고 실용적입니다. EMA 평균선은 가격 변화에 일정하게 평준화 작용을 하며, 흔들리는 시장의 소음을 효과적으로 필터링 할 수 있습니다.
MACD 지표는 거래소 구조가 약해진 시점을 더 정확하게 판단할 수 있어 입점 위험이 적다.
매월 한 번만 추적하는 것은 황소 시장에서 추격하는 것을 피할 수 있습니다.
월당 입금 금액을 사용자 정의할 수 있으며, 자신의 전략에 따라 포지션을 유연하게 조정할 수 있다.
시작 및 종료 날짜를 통해 재검토 테스트를 통해 전략 효과를 평가할 수 있다.
재검토가 끝나면 입장을 평정할 수 있으며, 시뮬레이션 거래가 시장에서 퇴출될 때 입장을 유지해야 하는 곤란을 피할 수 있다.
이 전략에는 다음과 같은 몇 가지 잠재적인 위험도 있습니다.
평평선에 의존하는 방식은 단기 조정에서 기회를 놓칠 수 있고, 또는 추세가 역전될 때 반응하기에는 능동적이지 않다. 평평선 주기를 적절히 단축하거나 최적화를 위해 다른 판단 지표를 추가할 수 있다.
매월 한 번만 추적하는 것은 좋은 진입 시점을 놓칠 수 있다. 진입 주파수를 완화하거나 새로운 최고치를 돌파할 때 다시 한 번 추적하는 것을 고려할 수 있다.
특정 리테스트 적합성 위험이 있습니다. 변수 조정 공간을 늘리고 시장과 시간 경기의 안정성 테스트를 수행해야합니다.
추격 하락과 과매매의 위험이 있습니다. 매달 입금 금액을 적절히 통제하여 과도한 포지션을 피하십시오.
이 전략은 다음의 몇 가지 측면에서 확장되고 최적화될 수 있습니다.
추가된 EXIT 논리, 시장에서 명백한 곰머리가 나타났을 때 적극적으로 중지한다.
MACD 미소 기준이 수립되었을 때, 더 많은 폭을 얻기 위해 또 한 번 더 구매했습니다.
이 달의 새로운 최고점과 이전 달의 새로운 최고점의 대조를 통해, 추세가 여전히 강하다는 것을 평가하기 위해 다중 공전 경로 판단을 도입한다.
추가 포지션 제어 논리. 매달 입금 금액은 고정된 값이 아닌 비율로 조절할 수 있다.
다양한 평형선 조합과 MACD 변수의 전략 효과에 대한 영향을 평가한다. 최적의 변수 조합을 찾는다.
트레일링 스톱을 추가하여 트레일링 스톱을 추적한다. 가격이 새로운 최고치를 달성한 후 일정 규모로 추적하기 시작하여 수익이 계속 실행되도록 한다.
이 전략은 전체적으로 간단한 트렌드 추적 전략으로, 핵심 아이디어는 명확하고, 구현하기 쉬운 것으로, 평형 트렌드 추적과 고정 투자의 결합을 테스트하는 데 적합합니다. 양적 거래 입문 전략 중 하나로 학습 할 수 있습니다. 그러나 실물에서는 포지션 크기를 제어하는 데 주의를 기울이고, 전략이 더 복잡한 시장 환경에 적응 할 수 있도록 계속 최적화해야합니다.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-30 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/
// © runescapeyttanic
//@version=4
// strategy("Buy and Hold entry finder Strategy",pyramiding=10000, overlay=true,initial_capital=0,default_qty_type=strategy.cash,default_qty_value=1000,currency = currency.EUR,commission_type=strategy.commission.cash_per_order,commission_value=0)
//INPUTS##################################################################################################################
maxEmaDistance = input(title="Maximum EMA Distance", type=input.float, step=0.01, defval=50000)
emalength = input(title="EMA Length", type=input.integer,defval=200)
// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2020, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
defval=12, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
defval=02, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100)
endDate1=endDate-1
//starttag
//startmonat
//MACD########################################################################################################################
fast_length=12
slow_length=26
src=close
col_macd=#0094ff
fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma
//EMA Distance CALC########################################################################################################
ma1 =ema(close,emalength)
distFromMean = close - ma1
inDateRange = true
longCondition = (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0 and inDateRange)
longnow=false
if(longCondition and strategy.position_size == 0)
strategy.entry("My Long Entry Id", strategy.long)
longnow:=true
if(longCondition and strategy.position_size > 0)
longnow:=true
if(longCondition and strategy.position_size > 0 and month>valuewhen(longnow, month ,1) or longCondition and strategy.position_size > 0 and year>valuewhen(longnow, year ,1) and inDateRange)
strategy.entry("My Long Entry Id", strategy.long)
plotchar(minute, "Minuten", "", location = location.top)
plotchar(hour, "Stunden", "", location = location.top)
plotchar(dayofmonth, "Tage", "", location = location.top)
plotchar(month, "Monat", "", location = location.top)
plotchar(year, "Jahr", "", location = location.top)
plotchar(strategy.position_size, "Positionen", "", location = location.top)
plotchar(longCondition, "Long Condition", "", location = location.top)
if true
strategy.close_all()
//#########################################################################################################################
plotArrow = if (distFromMean<=maxEmaDistance and distFromMean>=distFromMean[1] and macd<=0)
1
else
0
plotarrow(series=plotArrow)