EMA와 피보나치 수정을 기반으로 한 하락 추세 전략


생성 날짜: 2023-09-21 21:36:16 마지막으로 수정됨: 2023-09-21 21:36:16
복사: 1 클릭수: 827
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 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)