변동 역전 거래 전략은 콜 및 푸트 옵션의 비율을 계산하여 거래 신호를 생성합니다. 콜 푸트 비율로도 알려져 있습니다. 비율이 역전되면 수익을 창출하기 위해 간단한 돈 관리 규칙과 결합한 거래를 유발합니다. NDX 및 SPX의 30 분 기간에 적합합니다. 오스실레이션은 올바른 역전 지점을 반영하도록 정렬해야합니다. 탄탄한 백테스팅 결과는 최적의 역전 지점을 나타냅니다.
이 전략의 핵심 메트릭은 콜/푸트 비율의 이동 평균과 표준 편차이다. 먼저 콜/푸트 비율의 20일 이동 평균을 계산하고, 그 다음 비율의 30일 표준 편차를 계산한다. 비율이 이동 평균과 1.5 표준 편차를 넘을 때 긴 신호가 트리거된다. 비율이 이동 평균 마이너스 1.5 표준 편차를 넘을 때 짧은 신호가 트리거된다.
장기간 거래 후, 비율이 이동 평균 이상으로 회복되면 짧은 포지션을 종료합니다. 스톱 손실은 입시 가격보다 1% 낮습니다. 영업 수익은 입시 가격에서 스톱 손실 거리의 3 배로 설정됩니다.
이 전략의 가장 큰 장점은 시장이 지나치게 비관적이거나 상승세를 보이는 시점의 정서 반전점을 포착하여 콜 / 푸트 비율의 이상으로 인해 발생합니다. 그러한 이상에 대한 거래는 지역 반전으로부터 이익을 얻을 수 있습니다. 돈 관리 규칙은 개별 거래의 위험과 보상을 효과적으로 제한합니다.
주요 위험은 잘못된 매개 변수 조정에서 발생합니다. 과도하게 빈번한 신호는 중요한 반전을 캡처하지 못합니다. 반전 신호는 또한 잘못된 파업으로 인해 손실이 발생할 수 있습니다. 매개 변수는 더 신뢰할 수있는 신호를 위해 최적화되어야합니다.
반전 신호를 확인하고 거짓 브레이크오웃을 피하기 위해 필터를 추가하는 것을 고려하십시오. 예를 들어, 볼륨이 증폭 될 때 신호만 고려하십시오. 트렌드 필터는 또한 역 트렌드 거래를 피할 수 있습니다. 최적 매개 변수는 다른 시장과 시간 프레임에 따라 다를 수 있습니다. 더 많은 요소를 통합하면 전략이 더 견고해질 것입니다.
이 전략은 기본적인 돈 관리 규칙과 함께 통화 / 입출금 비율을 사용하여 시장 반전 지점을 포착하는 것을 목표로합니다. 지역 반전에서 이익을 얻을 수 있지만 잘못된 파업 위험에 직면합니다. 매개 변수를 최적화하고 필터를 추가하고 더 많은 요소를 통합하면 안정성과 수익성을 향상시킬 수 있습니다. 전반적으로 시장 정서에 따라 거래 반전 방향을 제공합니다. 실제 응용을 위해 추가 테스트 및 최적화가 필요합니다.
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 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/ // © I11L //@version=5 strategy("I11L Long Put/Call Ratio Inversion", overlay=false, pyramiding=1, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash) SL = input.float(0.01,step=0.01) CRV = input.float(3) TP = SL * CRV len = input.int(30,"Lookback period in Days",step=10) ratio_sma_lookback_len = input.int(20,step=10) mult = input.float(1.5,"Standard Deviation Multiple") ratio_sma = ta.sma(request.security("USI:PCC","D",close),ratio_sma_lookback_len) median = ta.sma(ratio_sma,len) standartDeviation = ta.stdev(ratio_sma,len) upperDeviation = median + mult*standartDeviation lowerDeviation = median - mult*standartDeviation isBuy = ta.crossunder(ratio_sma, upperDeviation)// and close < buyZone isCloseShort = (ratio_sma > median and strategy.position_size < 0) isSL = (strategy.position_avg_price * (1.0 - SL) > low and strategy.position_size > 0) or (strategy.position_avg_price * (1.0 + SL) < high and strategy.position_size < 0) isSell = ta.crossover(ratio_sma,lowerDeviation) isTP = strategy.position_avg_price * (1 + TP) < high if(isBuy) strategy.entry("Long", strategy.long) if(isCloseShort) strategy.exit("Close Short",limit=close) if(isSL) strategy.exit("SL",limit=close) if(isTP) strategy.exit("TP",limit=close) plot(ratio_sma,color=color.white) plot(median,color=color.gray) plot(upperDeviation,color=color.rgb(0,255,0,0)) plot(lowerDeviation,color=color.rgb(255,0,0,0)) bgcolor(isBuy?color.rgb(0,255,0,90):na) bgcolor(isSell?color.rgb(255,0,0,90):na)