이것은 거래 신호를 생성하기 위해 기하급수적인 이동 평균 (EMA) 및 이동 평균 (MA) 크로스오버를 기반으로 한 단기 옵션 거래 전략입니다. 빠른 EMA가 느린 MA를 밑에서 넘을 때 구매 신호를 생성하고 빠른 EMA가 느린 MA를 넘을 때 판매 신호를 생성합니다.
이 전략은 서로 다른 매개 변수와 함께 두 개의 EMA/MA를 사용합니다. 한 개의 빠른 EMA와 한 개의 느린 MA. 빠른 EMA 기간은 50로 설정되고 느린 MA 기간은 100으로 설정됩니다. EMA는 가격 변화에 더 빠르게 반응하고 MA는 더 느리게 반응합니다.
단기 가격 상승이 가속화되면 빠른 EMA는 아래에서 느린 MA에 침투하여 구매 신호를 생성합니다. 이것은 상승 분위기가 증가하는 것을 나타냅니다. 구매 또는 콜 옵션을 구매하는 것을 고려하는 것이 적합합니다.
단기 가격 하락이 가속화 될 때 빠른 EMA는 느린 MA 아래로 돌파하여 판매 신호를 생성합니다. 이것은 하락 분위기가 증가하고 있으며, 판매 또는 판매 옵션을 구매 할 수있는 기회를 나타냅니다.
빠른 EMA/MA와 느린 EMA 사이의 교차점을 파악하여 단기 트렌드와 시장 정서를 결정함으로써, 상대적으로 단기 가격 변동으로부터 이익을 얻기 위해 적절한 시간에 옵션 거래를 실행할 수 있습니다.
이 전략의 주요 장점은 다음과 같습니다.
단기 변동을 파악하기 위한 빠른 반응. 빠른 EMA와 느린 MA 사이의 교차가 단기 상승과 하락 가격 반전을 빠르게 감지합니다.
구현하기 쉽습니다. 단지 복잡한 계산 없이 두 이동 평균의 교차를 모니터링 할 필요가 있습니다.
옵션 또는 주식 거래에 대한 유연한 응용 프로그램. 신호에 따라 길고 짧을 수 있습니다.
명확한 스톱 로스로 제어 가능한 위험. 거래당 손실을 제한하기 위해 미리 설정된 스톱 로스 포인트.
주의해야 할 몇 가지 위험 요소:
잠재적 인 윙사 신호 및 범위 시장은 과도한 거래와 비용 증가로 이어질 수 있습니다. 과도한 거래를 피하기 위해 스톱 손실을 넓힐 수 있습니다.
연속적인 스톱 러스 트리거를 가진 지속적인 시장 하락 추세에 취약합니다. 자본 보존을 위해 장기적인 하락 단계에서 중단 전략을 고려하십시오.
중요한 뉴스 이벤트로 인한 가격 스파이크는 조기에 포지션을 중단하거나 손실을 크게 증가시킬 수 있습니다. 주요 이벤트에 대한 전략을 사용하는 것이 적절하다는 것을 신중하게 평가하십시오.
전략을 강화하는 몇 가지 방법:
변동성에 기반한 동적 스톱 손실. 강제 출구 가능성을 최소화하기 위해 가격 변동 수준에 따라 실시간으로 스톱 손실을 조정합니다.
복수의 시간 프레임 EMA를 통합합니다. 반대 트렌드 거래를 피하기 위해 전체 트렌드를 측정하기 위해 일일 및 주간 EMA를 추가합니다.
RSI 필터. 소음 신호를 필터링하기 위해 과반 구매 및 과반 판매 수준을 식별하기 위해 RSI를 사용합니다.
기계 학습 변동성 예측. 가격 변동성과 위험을 예측하기 위해 LSTM 모델을 사용하여 위치 크기와 스톱 로스를 동적으로 조정합니다.
이 단기 EMA/MA 크로스오버 전략은 빠른 EMA와 느린 MA 크로스오버를 모니터링함으로써 단기 트렌드 변화와 시장 정서를 적시에 거래하기 위해 포착합니다. 구현이 쉽음에도 불구하고 위험은 과도한 윙사와 지속적인 드라우다운을 포함합니다. 스톱 로스 최적화, 여러 시간 프레임, 신호 필터링 및 머신 러닝 예측에 대한 개선은 위험 통제와 수익성 향상에 도움이 될 수 있습니다.
/*backtest start: 2023-01-09 00:00:00 end: 2024-01-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Backtest single EMA cross", overlay=true) qty = input(100000, "Buy quantity") testStartYear = input(2019, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testStartHour = input(0, "Backtest Start Hour") testStartMin = input(0, "Backtest Start Minute") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin) testStopYear = input(2099, "Backtest Stop Year") testStopMonth = input(1, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #00FF00 : na testPeriod() => true ema1 = input(50, title="Select EMA 1") ema2 = input(100, title="Select EMA 2") expo = ema(close, ema1) ma = ema(close, ema2) avg_1 = avg(expo, ma) s2 = cross(expo, ma) ? avg_1 : na //plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0) p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0) p2 = plot(ma, color=color.orange, linewidth=2, transp=0) fill(p1, p2, color=color.white, transp=80) longCondition = crossover(expo, ma) shortCondition = crossunder(expo, ma) exitlongCondition = crossunder(expo, ma) exitshortCondition = crossover(expo, ma) if testPeriod() strategy.entry("Long", strategy.long, when=longCondition) strategy.entry("Short", strategy.short, when=shortCondition) plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = #FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0) plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)