EMA와 적응적 피보나치 리트레이싱에 기반한 단기 하향 트렌드 전략

저자:차오장, 날짜: 2023-09-21 21:36:16
태그:

전반적인 설명

이 전략은 트렌드 방향을 결정하기 위해 EMA와 적응적 피보나치 리트레이싱을 사용하여 전환점을 자동으로 식별하며, 트렌드를 잡음으로써 높은 판매와 낮은 구매를 목표로합니다. 단기 거래에 적합한 빈번한 거래를 포함합니다.

전략 논리

  1. 트렌드 방향을 결정하기 위해 9일 EMA와 21일 EMA 황금 십자와 죽음의 십자 를 사용하십시오. 21일 EMA가 55일 EMA 아래로 넘어가는 것은 하락 트렌드 시작을 나타냅니다.

  2. 100개의 기간을 가진 적응적 피보나치 리트레이싱을 구현하여 최근 가격 변동에 기초한 주요 리트레이싱 수준을 자동으로 결정합니다.

  3. 0.236 피보나치 리트레이스는 반전을 나타내고 기존 포지션을 닫습니다.

  4. 9일 EMA가 21일 EMA 아래로 넘어가고 가격이 적응적 피보나치 마이너스보다 낮을 때

  5. 긴 수익 목표는 200일 EMA 이상의 크로스오버입니다. 짧은 스톱 손실은 0.236 피보나치 리트레이싱을 깨고 있습니다.

장점

  • EMA는 명확한 트렌드 신호를 제공하고 실행하기 쉽습니다.

  • 적응적인 피보나치로 수동 매개 변수를 조정하지 않습니다.

  • 빈번한 거래는 높은 빈도 전략에 대한 단기 움직임을 잡습니다.

  • 적시에 스톱 로스를 위한 주요 리트랙스 레벨

  • 사이클에 걸쳐 최적화를 위한 구성 가능한 매개 변수

위험성

  • EMA의 지연은 다른 지표로부터 확인이 필요합니다.

  • 적응적인 피보나치 위험은 불안정한 수준에 지나치게 적합합니다.

  • 고주파 거래는 수수료와 미끄러짐으로 인한 비용을 증가시킵니다.

  • 범위를 제한하는 트렌드의 비효율적 인 필터링은 잘못된 신호로 이어집니다.

  • 사용 관리 및 리스크 보상 통제 개선 필요

강화

  • 가격과 부피의 오차로 인한 잘못된 신호를 피하기 위해 부피 지표를 추가합니다.

  • 현재 시장 조건에 더 잘 맞게 EMA 기간을 최적화

  • 더 나은 위험 통제를 위해 동적 스톱 손실을 구현하십시오.

  • 트렌드 강도 인덱스를 포함 하 여 윙사 를 피 합니다.

  • 거래 비용의 영향을 고려하고 최소 수익 목표를 설정

결론

이 전략은 트렌드 방향을 EMA와 함께 식별하고 적응적 인 피보나치 리트레이싱을 사용하여 역전 수준을 동적으로 결정하며, 이는 자동으로 다른 시장 조건에 적응합니다. 그러나 트렌드 세그먼테이션과 엘리엇 웨브 논리가없는 지표 신호에 더 많이 의존하며 최적화를 할 수 있습니다. 전반적으로, 높은 빈도 단기 거래 전략으로 빠른 가격 변화를 포착 할 수 있지만 거래자가 관리해야하는 빈번한 스톱 러스 및 오버 트레이딩의 위험이 있습니다.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
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/
// © CheatCode1

//@version=5
strategy("CC-Trend strategy 2", overlay=true, initial_capital = 10000, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100 )
ema9 = ta.ema(close, 9)
ema21 = ta.ema(close, 21)
ema55 = ta.ema(close, 55)
ema200 = ta.ema(close, 200)


plot(ema200, '22', color.blue, 2)

FibL = input.int(100, 'Fibonacci Length', 1, 500, group = 'Automatic Fibonacci Retracement')
len1 = input.int(1, 'Show Last', 0, 1000, group = 'Automatic Fibonacci Retracement')
len2 = input.int(5, 'Offset Length', 0, 1000, group = 'Automatic Fibonacci Retracement')

highF = ta.highest(ema55 >= ema9 ? ema55:ema9, FibL)
lowF = ta.lowest(ema55 >= ema9 ? ema9:ema55, FibL)
AvgFib = highF - lowF

//Fibonacci Executions
LL2 = highF + .618 * AvgFib
LL1 = highF + .272 * AvgFib
L1 = highF
L236 = highF - 0.236 * AvgFib
L382 = highF - 0.382 * AvgFib
Mid =  highF - 0.50 * AvgFib
S382 = lowF + 0.382 * AvgFib
S236 = lowF + 0.236 * AvgFib
S1 = lowF
SS1 = lowF - .272 * AvgFib
SS2 = lowF - .618 * AvgFib
//Fibonacci Plot's


high2FP = plot(LL2, 'Highe2', color.red,offset = len2, show_last = len1, trackprice = true)
high1FP = plot(LL1, 'Highe1', color.red,offset = len2, show_last = len1, trackprice = true)
highFP = plot(highF, 'High', color.red,offset = len2, show_last = len1, trackprice = true)
L236P = plot(L236, "0.764", #ED381C, offset = len2, show_last = len1, trackprice = true )
L382P = plot(L382, "0.618", color.white,offset = len2, show_last = len1, trackprice = true )
MidP = plot(Mid, "0.5", color.orange,offset = len2, show_last = len1, trackprice = true )
S382P = plot(S382, "0.382", color.yellow ,offset = len2, show_last = len1, trackprice = true)
S236P = plot(S236, "0.236", color.lime ,offset = len2, show_last = len1, trackprice = true)
lowFP = plot(lowF, 'Low', color.green,offset = len2, show_last = len1, trackprice = true)
low1FP = plot(SS1, 'Lowe1', color.green,offset = len2, show_last = len1, trackprice = true)
low2FP = plot(SS2, 'Lowe2', color.green,offset = len2, show_last = len1, trackprice = true)

plot(ema9, '22', color.yellow, 2)

plot(ema55, '55', color.aqua, 2)

plot(ema200, '200', color.maroon, 2)



shortCondition = close[1] < highF and ema21 < ema55
if (shortCondition)
    strategy.entry("Short", strategy.short)

shorttp = ta.crossover(close, ema200) and strategy.openprofit >= 0
if (shorttp)
    strategy.close('Short', 'Short TP', qty_percent = 100)

shortclose2 = close[1] > L236 and not (shortCondition) 
if(shortclose2)
    strategy.close('Short', 'Short RM', qty_percent = 100)

더 많은