이 전략은 3분 간격으로 미국 달러 지수 (ES) 에 대한 짧은 포지션 전문가 조언자 전략이다. 이는 특정 형질 조건과 결합된 일련의 지수 이동 평균을 계산하여 거래 신호를 생성한다.
이 전략의 핵심 지표는 T3 평균이다. T3 평균은 먼저 일련의 지수 이동 평균xe1~xe6을 계산하고, 시간 간격으로 사용자에 대해 설정된 T3 변수를 계산한다. 그리고는 특정 가중계 계수의 집합을 통해 이러한 지수 이동 평균의 가중 평균을 계산하여 최종 T3 평균으로 만든다.
종결 가격이 T3 평균보다 낮으면 구매 신호가 발생하고, 종결 가격이 T3 평균보다 높으면 판매 신호가 발생한다. 또한, 전략은 특정 K 선 형태를 입시 신호의 보조 조건으로 판단한다. 형태 조건과 T3 평균 신호가 동시에 나타나는 경우에만 거래 지시가 발령된다.
이 전략의 가장 큰 장점은 여러 가지 필터링과 변수 최적화이다. 한편으로는, 가격 지표와 그래픽 지표와 결합하여 여러 가지 필터링을 수행하여 많은 노이즈 거래를 줄일 수 있다. 다른 한편으로는, 핵심 변수 T3와 형태 판단 규칙이 최적화되어 다양한 시장에 대한 입점 정밀도를 조정할 수 있다.
또한, 단순 이동 평균과 같은 지표에 비해, T3 지표의 중첩 평면은 시장 소음을 효과적으로 필터링하여 트렌드 전환점을 식별할 수 있습니다. 3 분 주기는 일일 거래에 적합하며, 단기 기회를 빠르게 잡을 수 있습니다.
이 전략의 주요 위험은 변수 최적화가 부적절하고 포지션 보유 시간이 너무 길다는 것입니다. T3 변수가 너무 크면 전략의 지표 변화가 지연됩니다. 너무 작으면 잡음 거래의 확률이 증가합니다. 또한, 3 분 주기 운영은 적시에 중단되지 않으면 손실 위험이 높습니다.
위험을 제어하기 위해서는 먼저 다양한 품종에 대한 반복 테스트를 통해 최적의 범위를 결정해야 한다. 둘째, 손실을 막는 전략을 엄격하게 시행하고, 적시에 손실을 막고, 일회성 손실을 일정 비율 내에서 통제해야 한다.
이 전략은 다음과 같은 몇 가지 최적화 방향을 가지고 있습니다.
T3 변수를 최적화하여 다른 거래 품종의 변수 최적의 범위를 찾습니다.
그래픽 지표 판단 논리를 최적화하고 형태 인식 정확도를 향상시킵니다.
미지수 상쇄를 늘리고, 상쇄를 추적하는 등 상쇄 최적화 방법
수익률 또는 최대 인출에 기반한 자금 관리 모듈을 추가합니다.
기계 학습 모델 판단을 추가하는 보조 입문 모듈
이 몇 가지 방향의 최적화를 통해 전략의 안정성과 수익성을 점진적으로 향상시킬 수 있습니다.
이 전략은 단선 일일 거래 전략으로서 지표 최적화 공간이 크고, 여러 개의 필터링과 빠른 출장 등의 장점을 가지고 있다. 파라미터 최적화, 스톱 로즈 최적화, 자금 관리 등의 일련의 최적화 수단을 통해 이를 조정하여 고주파 거래에 적합한 효과적인 전략으로 사용할 수 있다.
/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("ES 3m Short Only (Triple RED)", overlay=true)
// Alert Message '{{strategy.order.alert_message}}'
//3min
T3 = input(150)//to 600
xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)
b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average
//NinjaTrader Settings.
acct = "Sim101"
ticker = "ES 12-23"
qty = 1
takeProfitTicks = 4
stopLossTicks = 16
tickSize = 0.25
takeProfitShort = close - takeProfitTicks * tickSize
stopLossShort = close + stopLossTicks * tickSize
OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'
IsUp = close > open
IsDown = close < open
PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1]
if (PatternPlot and sellSignal3)
strategy.entry('Short', strategy.short, alert_message=OCOMarketShort)
strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll)
//plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)