다중 시간 프레임 MA 트렌드 전략

저자:차오장, 날짜: 2024-01-04 17:43:17
태그:

img

전반적인 설명

이 전략은 중장기 트렌드를 추적하기 위해 멀티 타임프레임 이동 평균 크로스오버를 기반으로합니다. 상승을 추구하고 기하급수적 자본 성장을 달성하기 위해 피라미드 포지션을 채택합니다. 가장 큰 장점은 중장기 트렌드와 피라미드 엔트리를 팩과 단계로 잡을 수 있다는 것입니다.

전략 논리

  1. 9일 MA, 100일 MA, 200일 MA를 기반으로 여러 시간 프레임을 구축합니다.
  2. 더 짧은 기간 MA가 더 긴 기간 MA를 넘을 때 구매 신호를 생성합니다.
  3. 7단계 피라미드 항목을 채택합니다. 새로운 항목을 추가하기 전에 기존 위치를 확인하고, 이미 6개의 위치가 열렸을 때 피라미드를 중지합니다.
  4. 위험 조절을 위해 3% TP/SL를 고정합니다.

위의 것은 기본적인 거래 논리입니다.

장점

  1. 중장기 동향을 효과적으로 파악하고 기하급수적인 성장을 즐기세요.
  2. 멀티 타임프레임 MA 크로스오버는 단기 잡음을 피합니다.
  3. 고정 TP/SL는 각 포지션의 리스크를 제어합니다.
  4. 피라미드 입장은 초과 수익을 얻기 위해 대량으로 이루어집니다.

위험 과 해결책

  1. 트렌드 반전에서 손실을 줄이지 않으면 엄청난 손실의 위험이 있습니다. 해결책은 MA 기간을 단축하고 더 빨리 손실을 멈추는 것입니다.
  2. 마진 콜 위험은 허용 이상의 손실이 발생하면 초기 포지션 크기를 낮추는 것이 해결책입니다.
  3. 700% 이상의 손실 위험이 강한 하락 추세에 대한 해결책은 고정 스톱 손실 비율을 높이는 것입니다.

최적화 방향

  1. 최적의 매개 변수를 찾기 위해 다양한 MA 조합을 테스트합니다.
  2. 피라미드 단계의 양을 최적화하고 가장 좋은 숫자를 찾으세요.
  3. 고정된 TP/SL 설정을 테스트해 더 높은 수익성을 위해 TP 범위를 확장해

요약

이 전략은 중장기 트렌드를 잡기 위해 매우 적합합니다. 대량으로 피라미드 엔트리는 매우 높은 위험-상금 비율을 달성 할 수 있습니다. 또한 매개 변수 조정으로 제어되어야하는 일부 운영 위험이 있습니다. 전반적으로 이것은 실시간 거래 검증과 추가 최적화에 가치가있는 유망한 전략입니다.


/*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)
     


더 많은