MA 트렌드 라인 돌파구 전략

저자:차오장, 날짜: 2023-10-30 11:39:31
태그:

img

이 전략은 변동적인 시장에서 이동 평균 라인 돌파구를 추적함으로써 지속적인 수익성을 실현합니다.

전략 논리

이 전략의 핵심 논리는 이동 평균 라인의 돌파구에 기초하여 포지션을 개척하는 것입니다. 주요 이동 평균 라인을 형성하기 위해 여러 이동 평균을 집계하기 위해 MA를 사용합니다. 가격은 주요 이동 평균 라인을 통과 할 때 거래 신호가 생성됩니다.

특히, 전략은 주요 이동 평균 라인으로 60 기간 WMA 이중 이동 평균을 채택합니다. 동시에 가격의 진정한 범위를 계산하고 상위 및 하위 밴드를 그리습니다. 가격이 상위 밴드를 통과 할 때 길고, 하위 밴드를 통과 할 때 짧습니다.

돌파구 신호 외에도 전략은 RSI와 EMA를 보조 지표로 통합합니다. 그것은 거짓 파장을 피하기 위해 RSI>50과 EMA 이상의 가격이 길고 RSI<50과 EMA 이하의 가격이 짧게 갈 필요가 있습니다.

또한, 전략은 출구점을 결정하기 위해 삼중 이동 평균 형식을 사용합니다. 삼중 이동 평균이 약한 형식으로 (-1) 있을 때, 출구점은 채널의 역단 돌파점으로 선택됩니다.

이점 분석

  • MA를 사용하여 가격 변화를 부드럽게 할 수 있으며, 트렌드 방향을 효과적으로 식별 할 수 있습니다.
  • 채널 브레이크업에 기반한 거래는 범위 제한 시장에서 적당한 수익을 창출 할 수 있습니다.
  • RSI와 EMA를 결합하면 잘못된 브레이크오웃 신호를 피할 수 있습니다.
  • 출구 지점을 결정하기 위해 삼중 MA 형식을 사용하여 고갈 된 추세를 피합니다.

위험 분석

  • MA 라인은 매우 변동적인 시장에서 많은 가짜 브레이크를 일으킬 수 있습니다.
  • 트리플 MA 출구 시기는 매우 정확하지 않을 수 있습니다.
  • 부적절한 RSI 매개 변수는 과도한 거래로 이어질 수 있습니다.

이러한 위험은 MA 기간을 최적화하고, 트리플 MA 설정을 조정하고, RSI를 신중하게 사용함으로써 감소 할 수 있습니다.

최적화 방향

  • 주요 이동 평균 라인에 대한 더 나은 설정을 찾기 위해 MA 기간을 최적화하십시오.
  • 다른 보조 지표를 시도하여 RSI를 대체하십시오. 예를 들어 KDJ, MACD 등.
  • 전환점을 더 정확하게 식별하기 위해 삼중 MA 매개 변수를 조정합니다.
  • 거래당 위험 통제에 스톱 로스를 추가합니다.

요약

요약하자면, 이것은 범위에 묶인 시장에 대한 우수한 브레이크아웃 전략입니다. 핵심 아이디어는 트렌드 지표에 의해 필터링 된 MA 브레이크아웃을 기반으로 포지션을 열고 트렌드 아닌 시장에서 안정적인 수익을 창출하는 것입니다. 출구는 트리플 MA 형식을 사용하여 더 일찍 결정됩니다. 파라미터 최적화, 엔트리 / 출구 논리 등을 개선하여 범위에 있는 시장에서 성능을 극대화 할 수있는 충분한 공간이 있습니다.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-03-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/



//@version=5

//exapple bot
strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sl_inp = input(0.1, title='Stop Loss %') / 100
tp_inp = input(0.33, title='Take Profit %') / 100

length = input(defval=21)
upper = ta.highest(length)
lower = ta.lowest(length)

lengthChop = input.int(14, minval=1)
ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop)
offset = input.int(0, "Offset",  minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

rsi = ta.rsi(close, 14)

var float entry_price = na

output = 100 * (close - upper) / (upper - lower)
ema = ta.ema(output, input(defval=13, title='EMA'))

ma(src, len) =>
    ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
BBMC = ma(close, 60)
rangema = ta.ema(ta.tr, 60)
upperk = BBMC + rangema * 0.2
lowerk = BBMC - rangema * 0.2
color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray

ExitHigh = ma(high, 15)
ExitLow = ma(low, 15)
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = ta.crossover(close, sslExit)
base_cross_Short = ta.crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
entry_long = false

entry_short = false

    
if ta.crossover(close, BBMC) and output > ema
    entry_long := true
    
if ta.crossunder(close, BBMC) and output < ema
    entry_short := true

if entry_long and strategy.position_size == 0
    entry_price := close
    strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size > 0
    strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))


//if entry_short and strategy.position_size == 0
    //entry_price := close
    //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size < 0
    strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))
// plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0))

plot(rsi, color=color.yellow)

plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2)
plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2)

plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0)
plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')





더 많은