이동 평균 다중 차이 추세 추적 전략


생성 날짜: 2024-01-04 17:43:17 마지막으로 수정됨: 2024-01-04 17:43:17
복사: 0 클릭수: 630
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

이동 평균 다중 차이 추세 추적 전략

개요

이 전략은 평균선의 다중 시간 프레임 차차에 기초하여 중장선 추세를 추적하고, 차차 위치 추적 모드를 채택하여 자금의 지수 성장을 달성한다. 전략의 가장 큰 장점은 중장선 추세를 포착하고, 단계별로 단계별로 추적하여, 과잉 수익을 얻을 수 있다는 것이다.

전략 원칙

  1. 9일 평균선, 100일 평균선 및 200일 평균선에 기반하여 다중 시간 프레임워크를 구축한다.
  2. 짧은 주기 평균선이 아래에서 위로 긴 주기 평균선을 돌파할 때 구매 신호가 발생한다.
  3. 7단계 격차 포지션 추적 모드를 적용하여, 새로운 포지션을 개설할 때마다 이전 포지션이 채워졌는지 판단하고, 이미 6개의 포지션이 있다면 포지션을 추가하지 않습니다.
  4. 각 포지션은 3%의 고정된 스톱 스톱 손실을 설정하고, 위험을 통제한다.

이 전략의 기본 거래 논리는 다음과 같습니다.

전략적 이점

  1. “중장선 트렌드를 효과적으로 파악하고, 시장의 지수적 성장을 최대한 활용할 수 있다”.
  2. 여러 시간 주기 평균선을 사용하여 차등을 수행하여 단선 시장 소음 방해를 효과적으로 피할 수 있습니다.
  3. 고정 스톱 스톱 손실 지점을 설정하여 각 포지션의 위험을 효과적으로 제어합니다.
  4. 차등차별 추적모델을 적용하여, 매장을 세분화하여, 트렌드 기회를 잡을 수 있고, 초과 수익을 얻을 수 있다.

전략적 위험과 해결 방법

  1. 종식될 위험이 있다. 시장이 변동하면 적자를 제때 막지 못하면 큰 손실을 입을 수 있다. 해결책은 평균선주기를 줄이고, 손해의 속도를 가속화하는 것이다.
  2. 포지션 리스크가 존재한다. 만약 갑작스러운 사건이 발생하여 손실이 견딜 수 있는 범위를 초과하면 추가 보증금이나 포지션 폭파의 위험에 직면하게 된다. 해결 방법은 초기 포지션 비율을 적절히 줄이는 것이다.
  3. 손실이 너무 큰 위험이 있습니다. 시장 상황이 급격히 떨어지면, 차등이 뒤집혀 상공으로 돌아가면 최대 700% 이상의 손실이 발생할 수 있습니다. 해결 방법은 고정 손실 비율을 높이고 손실 속도를 가속화하는 것입니다.

전략 최적화 방향

  1. 다른 변수들의 평균선 조합을 테스트하여 더 우수한 변수를 찾아볼 수 있다.
  2. 포지션을 최적화할 수 있는 포지션의 수. 다양한 차등 포지션의 포지션을 테스트하여 최적의 해법을 찾는다.
  3. 고정 중지 손해 차단 장치의 설정을 테스트할 수 있다. 적절히 차단 범위를 확대하여 더 높은 수익률을 추구한다.

요약하다

이 전략은 전반적으로 시장의 중장선 추세를 포착하는 데 매우 적합하며, 단계별로 단계별로 추적하는 방식을 채택하여 위험과 이익의 비율이 매우 높은 초과 수익을 얻을 수 있습니다. 또한 특정 운영 위험이 존재하며, 매개 변수 조정 등의 방법으로 제어해야하며, 이익과 위험 사이의 균형을 찾을 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 1m
basePeriod: 1m
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/
    // © Coinrule
    
//@version=3
strategy(shorttitle='Pyramiding Entry On Early Trends',title='Pyramiding Entry On Early Trends (by Coinrule)', overlay=false, pyramiding= 7, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.1)
    
    
//Backtest dates
fromMonth = input(defval = 1,  title = "From Month")     
fromDay   = input(defval = 10,    title = "From Day")       
fromYear  = input(defval = 2020, title = "From Year")       
thruMonth = input(defval = 1,    title = "Thru Month")     
thruDay   = input(defval = 1,    title = "Thru Day")     
thruYear  = input(defval = 2112, title = "Thru Year")       
    
showDate  = input(defval = true, title = "Show Date Range")
    
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"
    
    
//MA inputs and calculations
inSignal=input(9, title='MAfast')
inlong1=input(100, title='MAslow')
inlong2=input(200, title='MAlong')
    
MAfast= sma(close, inSignal)
MAslow= sma(close, inlong1)
MAlong= sma(close, inlong2)
    
    
Bullish = crossover(close, MAfast) 
    
longsignal = (Bullish and MAfast > MAslow and MAslow < MAlong and window())
    
//set take profit
    
ProfitTarget_Percent = input(3)
Profit_Ticks = (close * (ProfitTarget_Percent / 100)) / syminfo.mintick
    
//set take profit
    
LossTarget_Percent = input(3)
Loss_Ticks = (close * (LossTarget_Percent / 100)) / syminfo.mintick
    
    
//Order Placing
    
strategy.entry("Entry 1", strategy.long, when = (strategy.opentrades == 0) and longsignal)
    
strategy.entry("Entry 2", strategy.long, when = (strategy.opentrades == 1) and longsignal)
        
strategy.entry("Entry 3", strategy.long, when = (strategy.opentrades == 2) and longsignal)
    
strategy.entry("Entry 4", strategy.long, when = (strategy.opentrades == 3) and longsignal)
    
strategy.entry("Entry 5", strategy.long, when = (strategy.opentrades == 4) and longsignal)
        
strategy.entry("Entry 6", strategy.long, when = (strategy.opentrades == 5) and longsignal)
        
strategy.entry("Entry 7", strategy.long, when = (strategy.opentrades == 6) and longsignal)
    
    
    
if (strategy.position_size > 0)
    strategy.exit(id="Exit 1", from_entry = "Entry 1", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry = "Entry 2", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry = "Entry 3", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry = "Entry 4", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry = "Entry 5", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry = "Entry 6", profit = Profit_Ticks, loss = Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry = "Entry 7", profit = Profit_Ticks, loss = Loss_Ticks)