모멘텀 협상 전략


생성 날짜: 2024-01-26 11:07:47 마지막으로 수정됨: 2024-01-26 11:07:47
복사: 16 클릭수: 570
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

모멘텀 협상 전략

개요

동적 청탁 전략은 이동 평균 지표와 K선 모형 모델을 결합하여 거래 기회를 발견하기 위해 파격점과 조정점을 식별하는 중·단계 거래 전략이다. 이 전략은 보잉 옵션, 보잉 옵션, 선물과 같은 높은 리버리지 금융 상품의 거래에 적합하다.

전략 원칙

이 전략의 핵심 논리는 5일 간단한 이동 평균을 기반으로 한다. 가격이 이 평균을 돌파할 때, 폭파의 최고점 또는 최저점 K 선이 형성되며, 이 시점은 잠재적인 상위 또는 하위 신호이다. 가격이 평균을 돌파하는 두 번째 K 선이 닫히면, 이전 폭파의 최저 가격 또는 최고치를 파기하지 않으면 진입 신호가 형성된다. 그 다음에는 스톱로스 포인트와 스톱 스톱 목표에 따라 리스크 을 설정한다.

가격이 상향으로 5일 평균선을 돌파하고 종결될 때, 앞의 하락 K 선의 최고 가격은 스톱 로스트이며, 최저 가격은 일정 회귀 범위를 빼고 리스크 수익률을 스톱 로스트 목표로 한다. 가격이 하락으로 5일 평균선을 돌파하고 종결될 때, 앞의 하락 K 선의 최저 가격은 스톱 로스트이며, 최고 가격은 일정 회귀 범위를 더하여 리스크 수익률을 스톱 로스트 목표로 한다.

이 전략은 또한 선택적인 필터링 조건을 제공합니다. 즉, 현재 K 선의 종료 가격은 K 선에 비해 약간 낮거나 약간 높습니다. 이것은 부분적으로 잘못된 신호를 피할 수 있습니다.

전략적 강점 분석

  • 전략적 아이디어는 명확하고 간결하며 이해하기 쉽고 실행이 가능합니다.
  • 이동 평균을 기반으로 트렌드를 파악하고 회전을 할 수 있습니다.
  • K선 형태와 결합하여 보다 정확한 거래 시점을 발견할 수 있습니다.
  • 위험과 수익의 일치, 합리적인 거래 원칙
  • 자신의 거래 종류와 주기에 따라 매개 변수를 조정할 수 있습니다.
  • 선택 가능한 필터링 조건을 제공하여 잘못된 신호를 줄일 수 있습니다.

전략적 위험 분석

  • 다른 기술 지표 전략과 마찬가지로, 포착, 차단 추적 등의 위험도 발생할 수 있습니다.
  • 이동 평균 지표는 지연되어 짧은 선의 큰 흐름을 놓칠 수 있습니다.
  • 지진 추세에서는 잘못된 신호가 더 많이 발생하기 쉽다.
  • 정책 변수 설정이 잘못되면 과다 거래가 발생할 수 있습니다.

합리적인 스톱로스, 적절히 느슨한 포지션 보유, 낮은 주파수 거래를 선택하는 등의 방법으로 위험을 줄일 수 있다. 또한 다른 지표와 결합하여 신호 필터링을 고려할 수 있다.

전략 최적화 방향

  • 다양한 변수 조합을 테스트하여 최적의 변수를 선택할 수 있습니다.
  • 다른 지표 또는 그래프와 결합하여 신호 필터링을 최적화할 수 있습니다.
  • 동적 상쇄, 이동 상쇄와 같은 방법을 고려할 수 있습니다.
  • 기계 학습 모델과 결합 가능한 자동 최적화 매개 변수
  • 자율적 손해 방지 플러그인을 개발할 수 있습니다
  • 다양한 종, 다양한 기간에 걸친 견고성 검증 전략을 시도할 수 있습니다.

요약하다

이 전략은 전체적으로 이해하기 쉽고 구현하기 쉬운 중단계 거래 전략이다. 이동 평균과 K 선 모양을 뛰어넘어 트렌드 전환점을 인식하여 합리적인 위험 제어 프레임 워크 아래에서 작동한다. 개선의 여지가 있지만, 핵심 아이디어는 보편적이며 학습 및 적용할 가치가 있다. 변수 조정, 신호 필터링과 같은 최적화 조치를 통해 이 전략을 더 광범위한 거래 관행에 적용할 수 있다.

전략 소스 코드
/*backtest
start: 2024-01-18 00:00:00
end: 2024-01-25 00:00:00
period: 15m
basePeriod: 5m
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/
// © TradingInsights2

//@version=5
strategy("Ultimate 5EMA Strategy By PowerOfStocks", overlay=true)

Eusl = input.bool(false, title="Enable the Extra SL shown below")
usl = input.int(defval=5, title='Value to set SL number of points below-low or above-high', minval=1, maxval=100)
RiRe = input.int(defval=3, title='Risk to Reward Ratio', minval=1, maxval=25)
ShowSell = input.bool(true, 'Show Sell Signals')
ShowBuy = input.bool(false, 'Show Buy Signals')
BSWCon = input.bool(defval=false, title='Buy/Sell with Extra Condition - candle close')

// Moving Average 

ema5 = ta.ema(close, 5)
pema5 = plot(ema5, '5 Ema', color=color.new(#da1a1a, 0), linewidth=2)

var bool Short = na
var bool Long = na
var shortC = 0
var sslhitC = 0
var starhitC = 0
var float ssl = na
var float starl = na
var float star = na
var float sellat = na
var float alert_shorthigh = na
var float alert_shortlow = na
var line lssl = na
var line lstar = na
var line lsell = na
var label lssllbl = na
var label lstarlbl = na
var label lselllbl = na
var longC = 0
var lslhitC = 0
var ltarhitC = 0
var float lsl = na
var float ltarl = na
var float ltar = na
var float buyat = na
var float alert_longhigh = na
var float alert_longlow = na
var line llsl = na
var line lltar = na
var line lbuy = na
var label llsllbl = na
var label lltarlbl = na
var label lbuylbl = na

ShortWC = low[1] > ema5[1] and low[1] > low and shortC == 0 and close < close[1]
ShortWOC = low[1] > ema5[1] and low[1] > low and shortC == 0
Short := BSWCon ? ShortWC : ShortWOC
sslhit = high > ssl and shortC > 0 and sslhitC == 0
starhit = low < star and shortC > 0 and starhitC == 0
LongWC = high[1] < ema5[1] and high[1] < high and longC == 0 and close > close[1]
LongWOC = high[1] < ema5[1] and high[1] < high and longC == 0
Long := BSWCon ? LongWC : LongWOC
lslhit = low < lsl and longC > 0 and lslhitC == 0
ltarhit = high > ltar and longC > 0 and ltarhitC == 0

if Short and ShowSell
    shortC := shortC + 1
    sslhitC := 0
    starhitC := 0
    alert_shorthigh := high[1]
    if Eusl
        ssl := high[1] + usl
        starl := BSWCon ? ((high[1] - close) + usl) * RiRe : ((high[1] - low[1]) + usl) * RiRe
    else
        ssl := high[1]
        starl := BSWCon ? (high[1] - close) * RiRe : (high[1] - low[1]) * RiRe
    star := BSWCon ? close - starl : low[1] - starl
    sellat := BSWCon ? close : low[1]
    // lssl := line.new(bar_index, ssl, bar_index, ssl, color=color.new(#fc2d01, 45), style=line.style_dashed)
    // lstar := line.new(bar_index, star, bar_index, star, color=color.new(color.green, 45), style=line.style_dashed)
    // lsell := line.new(bar_index, sellat, bar_index, sellat, color=color.new(color.orange, 45), style=line.style_dashed)
    // lssllbl := label.new(bar_index, ssl, style=label.style_none, text='Stop Loss - Short' + ' (' + str.tostring(ssl) + ')', textcolor=color.new(#fc2d01, 35), color=color.new(#fc2d01, 35))
    // lstarlbl := label.new(bar_index, star, style=label.style_none, text='Target - Short' + ' (' + str.tostring(star) + ')', textcolor=color.new(color.green, 35), color=color.new(color.green, 35))
    // lselllbl := label.new(bar_index, sellat, style=label.style_none, text='Sell at' + ' (' + str.tostring(sellat) + ')', textcolor=color.new(color.orange, 35), color=color.new(color.orange, 35))

if sslhit == false and starhit == false and shortC > 0
    // line.set_x2(lssl, bar_index)
    // line.set_x2(lstar, bar_index)
    // line.set_x2(lsell, bar_index)
    sslhitC := 0
    starhitC := 0
else
    if sslhit
        shortC := 0
        sslhitC := sslhitC + 1
    else
        if starhit
            shortC := 0
            starhitC := starhitC + 1

if Long and ShowBuy
    longC := longC + 1
    lslhitC := 0
    ltarhitC := 0
    alert_longlow := low[1]
    if Eusl
        lsl := low[1] - usl
        ltarl := BSWCon ? ((close - low[1]) + usl) * RiRe : ((high[1] - low[1]) + usl) * RiRe
    else
        lsl := low[1]
        ltarl := BSWCon ? (close - low[1]) * RiRe : (high[1] - low[1]) * RiRe
    ltar := BSWCon ? close + ltarl : high[1] + ltarl
    buyat := BSWCon ? close : high[1]
    llsl := line.new(bar_index, lsl, bar_index, lsl, color=color.new(#fc2d01, 45), style=line.style_dotted)
    lltar := line.new(bar_index, ltar, bar_index, ltar, color=color.new(color.green, 45), style=line.style_dotted)
    lbuy := line.new(bar_index, buyat, bar_index, buyat, color=color.new(color.orange, 45), style=line.style_dotted)
    llsllbl := label.new(bar_index, lsl, style=label.style_none, text='Stop Loss - Long' + ' (' + str.tostring(lsl) + ')', textcolor=color.new(#fc2d01, 35), color=color.new(#fc2d01, 35))
    lltarlbl := label.new(bar_index, ltar, style=label.style_none, text='Target - Long' + ' (' + str.tostring(ltar) + ')', textcolor=color.new(color.green, 35), color=color.new(color.green, 35))
    lbuylbl := label.new(bar_index, buyat, style=label.style_none, text='Buy at' + ' (' + str.tostring(buyat) + ')', textcolor=color.new(color.orange, 35), color=color.new(color.orange, 35))

if lslhit == false and ltarhit == false and longC > 0
    // line.set_x2(llsl, bar_index)
    // line.set_x2(lltar, bar_index)
    // line.set_x2(lbuy, bar_index)
    lslhitC := 0
    ltarhitC := 0
else
    if lslhit
        longC := 0
        lslhitC := lslhitC + 1
    else
        if ltarhit
            longC := 0
            ltarhitC := ltarhitC + 1

strategy.entry("Buy", strategy.long, when=Long)
strategy.entry("Sell", strategy.short, when=Short)
strategy.close("ExitBuy", when=sslhit or starhit)
strategy.close("ExitSell", when=lslhit or ltarhit)

plotshape(ShowSell and Short, title='Sell', location=location.abovebar, offset=0, color=color.new(#e74c3c, 45), style=shape.arrowdown, size=size.normal, text='Sell', textcolor=color.new(#e74c3c, 55))
plotshape(ShowSell and sslhit, title='SL Hit - Short', location=location.abovebar, offset=0, color=color.new(#fc2d01, 25), style=shape.arrowdown, size=size.normal, text='SL Hit - Short', textcolor=color.new(#fc2d01, 25))
plotshape(ShowSell and starhit, title='Target Hit - Short', location=location.belowbar, offset=0, color=color.new(color.green, 45), style=shape.arrowup, size=size.normal, text='Target Hit - Short', textcolor=color.new(color.green, 55))
plotshape(ShowBuy and Long, title='Buy', location=location.belowbar, offset=0, color=color.new(#2ecc71, 45), style=shape.arrowup, size=size.normal, text='Buy', textcolor=color.new(#2ecc71, 55))
plotshape(ShowBuy and lslhit, title='SL Hit - Long', location=location.belowbar, offset=0, color=color.new(#fc2d01, 25), style=shape.arrowdown, size=size.normal, text='SL Hit - Long', textcolor=color.new(#fc2d01, 25))
plotshape(ShowBuy and ltarhit, title='Target Hit - Long', location=location.abovebar, offset=0, color=color.new(color.green, 45), style=shape.arrowup, size=size.normal, text='Target Hit - Long', textcolor=color.new(color.green, 55))

if ShowSell and Short
    alert("Go Short@ " + str.tostring(sellat) + " : SL@ " + str.tostring(ssl) + " : Target@ " + str.tostring(star) + " ", alert.freq_once_per_bar )

if ShowBuy and Long
    alert("Go Long@ " + str.tostring(buyat) + " : SL@ " + str.tostring(lsl) + " : Target@ " + str.tostring(ltar) + " ", alert.freq_once_per_bar )

///// End of code