이동평균선 교차 장기 및 정량적 전략


생성 날짜: 2024-02-20 15:22:12 마지막으로 수정됨: 2024-02-20 15:22:12
복사: 0 클릭수: 582
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균선 교차 장기 및 정량적 전략

개요

이 전략은 다른 주기에서의 평평선 교차 형태와 RSI 지표를 이용하여 시장의 매수 시기를 판단하여 긴 선을 보유하는 모드를 구현한다. 전략은 파라미터를 조정하여 실시간으로 최적화할 수 있으며, 큰 주식 지수의 긴 선 투자에 적용된다.

전략 원칙

이 전략은 주로 EMA 평균의 황금 포크, 죽은 포크를 통해 구매 및 판매 시간을 판단한다. RSI 지표와 결합하여 과매매 상태인지 판단한다.

구체적으로, 구매 신호의 판단 논리는 다음과 같습니다: 가격이 아래로 EMA20을 통과하고 상단 EMA50을 통과하면 금강이 형성될 때 구매합니다. 따라서 트렌드 전환점을 더 효과적으로 판단 할 수 있습니다. 또한, 상장 가격보다 낮은 종결 가격과 전날 최저 가격보다 낮은 종결 가격 조건을 충족해야 합니다. 이것은 일부 가짜 돌파구를 제거 할 수 있습니다.

우리는 위의 구매 조건을 다른 파라미터로 배분하여 각각 다른 평균 주기 및 수량에 대응하는 4 개의 구매 규칙을 구성했습니다. 이것은 수량을 평균적으로 배분하여 수량을 배치하여 수치를 구축 할 수 있습니다.

판매와 탈퇴의 경우 판단 조건은: 가격이 EMA10을 상단으로 돌면 사각지대가 형성되고 RSI 지표가 오버 바이 신호를 표시할 때 판매; 또는 가격이 EMA10을 상단으로 돌면 사각지대가 형성되고 RSI가 오버 판매를 표시할 때 판매. 또한, 특정 수익률을 충족시키는 조건을 검사합니다.

전략적 강점 분석

이 전략의 가장 큰 장점은 평평선의 교차 형태를 통해 시장 전환점을 판단하여 트렌드 추적을 구현하는 데 있습니다. 단일 평평선 시스템에 비해 쌍평평선 교차법이 몇 가지 가짜 신호를 필터링 할 수 있습니다. 또한, 이 전략은 RSI 지표를 도입하여 오버 바이 오버 셀 영역을 판단하여 거래 위험을 효과적으로 줄일 수 있습니다.

또 다른 장점은 매개 변수를 조정하여 지분을 세분화 하는 것입니다. 이러한 피라미드 매장 방식은 비용 가격이 지속적으로 하향으로 이동하여 추세가 나타나면 최대 수익을 얻을 수 있습니다. 동시에 수량의 분산이 이루어지며, 단일 수량의 위험이 감소합니다.

전략적 위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 평선 시스템은 그 자체로 지연성에 민감하며, 급격한 사건에 대해 적시에 대응할 수 없으며, 이로 인해 적시에 중지할 수 없습니다. 이 위험은 스톱 포인트를 추가하여 줄일 수 있습니다.

  2. 이 정책은 구매 기간에 제한이 없습니다. 구성 오류가 발생하면 조기 구매가 발생할 수 있으며, 이는 회수 영역에 갇힐 수 있습니다.

  3. 이 전략의 대량 매장 방식은 너무 큰 포지션을 초래할 수 있으며 일방적인 돌파구를 견딜 수 없습니다. 이것은 수준 매개 변수를 조정하고 위험 제어 장치를 추가함으로써이 부분의 위험을 줄일 수 있습니다.

전략 최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 손실을 막는 전략을 추가하여, 가격이 특정 핵심 지원 지점을 넘어서는 경우 손실을 막는 것으로 하향 위험을 효과적으로 제어 할 수 있습니다.

  2. 거래 전 검증 모듈을 추가하여 대차 트렌드 방향을 판단하고, 트렌드가 상승했을 때만 포지션을 설정하여 역전 거래의 위험을 피할 수 있습니다.

  3. 구매 구역에 제한을 두고, 특정 시간 동안만 입금할 수 있으며, 조기 입장을 열지 않도록 한다.

  4. 기계 학습 알고리즘을 도입하여 여러 요소의 판단과 함께 구매 시기를 결정하는 것은 전략의 승률을 높일 수 있습니다.

요약하다

이 글은 긴 선량화 전략의 아이디어에 대해 자세히 소개합니다. 이 전략은 RSI 지표와 결합한 쌍평평선 교차 형태를 사용하여 입점 지점을 판단하고, 분량 매장 방식을 취하여 최대 효율성을 얻습니다. 이 전략은 파라미터를 조정하여 대부분의 지수와 주식에 적용할 수 있으며, 이는 더 일반적인 긴 선 추적 전략입니다. 또한 이 전략이 존재할 수있는 위험점과 후속 최적화 아이디어는 분석합니다.

전략 소스 코드
/*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"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true)

// Input parameters
qt1 = input.int(1, title="Quantity 1", minval=1)
qt2 = input.int(2, title="Quantity 2", minval=1)
qt3 = input.int(3, title="Quantity 3", minval=1)
qt4 = input.int(4, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// RSI(14) condition
rsi_threshold = 65
rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold
rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold
rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=1, day=1)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)