거북이 브레이크업 EMA 크로스 전략

저자:차오장, 날짜: 2023-11-07 15:40:08
태그:

img

전반적인 설명

이 전략은 두 개의 다른 기간의 EMA 라인을 사용하여 진입 및 출구 신호로 교차를 통해 트렌드 반전을 식별합니다. 전략은 간단하고 구현하기가 쉽습니다.

전략 논리

이 전략은 2개의 EMA 라인을 ta.ema를 사용하여 계산합니다. 하나는 단기 10의 길이이고 하나는 장기 트렌드를 위해 20의 길이입니다. EMA 크로스오버와 크로스온더를 ta.crossover와 ta.crossunder를 사용하여 입구와 출구 지점을 결정합니다. 짧은 EMA가 긴 EMA를 넘으면 길게됩니다. 짧은 EMA가 긴 EMA를 넘으면 짧게됩니다. 이러한 방식으로 EMA 크로스오버는 트렌드의 전환점을 캡처하는 데 사용됩니다.

이 전략은 또한 반복 신호를 피하기 위해 마지막 크로스오버의 시간을 기록하기 위해 변수 lastCrossTime를 사용합니다. 유효한 크로스오버마다 먼저 모든 현재 포지션을 닫고, 크로스오버 방향으로 새로운 포지션을 열고 있습니다. 포지션을 열면 이윤을 취하고 손실을 멈추는 것이 종료됩니다.

장점

  1. 전략 논리는 간단하고 명확하고 이해하기 쉽고 실행하기 쉽습니다.

  2. 트렌드 반전 지점을 식별하기 위해 EMA 크로스오버를 사용하는 것은 일반적으로 사용되는 효과적인 기술 지표 전략입니다.

  3. 다른 기간의 EMA를 채택하면 단기 움직임에 대한 감수성을 향상시키고 큰 추세를 잡을 수 있습니다.

  4. 이윤을 취하고 손실을 멈추는 것은 각 거래의 위험과 보상을 제어하는 데 도움이됩니다.

  5. lastCrossTime 변수는 중복 신호를 필터링하고 불필요한 거래를 피합니다.

위험성

  1. EMA 크로스오버는 잘못된 신호를 생성할 수 있고 약간의 윙사 위험도 있습니다.

  2. 고정 TP와 SL는 변화하는 시장 조건에 적응하지 못할 수 있습니다. 동적 수준을 사용해야합니다.

  3. EMA 크로스오버에만 의존하는 시스템은 다양한 시장에서 손실을 입을 수 있습니다.

  4. 스프레드와 같은 거래 비용은 실제 성과에 영향을 미치지는 않습니다.

  5. 이 전략은 시장의 범위보다는 트렌딩에서 더 잘 작동합니다.

개선은 TP/SL를 최적화, 필터를 추가, 다른 지표를 결합 등으로 이루어질 수 있습니다. 엄격한 위험 통제 및 큰 단일 거래 손실을 피하는 것이 라이브 거래에 필수적입니다.

강화

  1. 더 나은 조합을 찾기 위해 EMA 기간을 테스트하고 최적화하십시오.

  2. KDJ, MACD 등과 같은 다른 지표를 추가하여 신호 품질을 향상시키고 윙사 (wipssaws) 를 피합니다.

  3. 동적 인 수익을 취하고 트렌드를 따라 후속 스톱과 같은 손실을 중지하십시오.

  4. 신호를 확인하기 위해 거래량을 고려하십시오.

  5. 신호를 강화하기 위해 브레이크와 같은 가격 행동 패턴을 포함합니다.

  6. 스프레드와 같은 거래 비용을 계산하고 그에 따라 TP/SL 수준을 최적화합니다.

결론

이 전략은 EMA 크로스오버를 사용하여 트렌드 반전을 간단하고 직설적으로 식별합니다. TP/SL는 위험과 보상을 제어하는 데 사용됩니다. 구현하기가 쉽습니다. 그러나 EMA 크로스오버에는 윙사 위험이 있습니다. 추가 최적화는 매개 변수를 조정하고 필터를 추가하고 견고성을 향상시키기 위해 다른 지표를 결합하여 수행 할 수 있습니다. 범위 시장보다 트렌딩에서 더 잘 수행합니다. 엄격한 리스크 관리 및 최적의 TP/SL 사이징은 라이브 거래에 중요합니다. 전반적으로 기본 트렌드 추적 시스템으로 기능하며 알고리즘 거래 교육의 좋은 출발점입니다.


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('XXXquang', overlay=true)

// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)

takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)

ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)

var float lastCrossTime = na

if ta.crossover(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Buy Order', strategy.long, qty=lotSize)
    strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

if ta.crossunder(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Sell Order', strategy.short, qty=lotSize)
    strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)


더 많은