
동적 공정한 가치 격차 일일 거래 전략은 시장 구조 이론에 기반한 정량 거래 시스템으로, 가격의 공정한 가치 격차를 식별하고 거래하는 데 중점을 두고 있다. 이 전략은 가격 행동의 수요 불균형을 감지하기 위해 세 개의 선형 형식을 사용하며, 가격 재검토 시 이러한 영역에 입시 거래를 한다. 이 전략은 고정된 리스크 수익 비율을 사용하여 위험 관리를 하고 있으며, 매일 특정 시간 동안 강제 평형 포지션을 설정하여 하룻밤 위험을 피한다.
공정한 가치 격차 거래 전략의 핵심 원칙은 가격이 빠르게 움직일 때 남기는 “무거래되지 않은 지역” 또는 “공백”에 기반합니다. 이러한 지역은 공급과 수요의 심각한 불균형을 나타냅니다. 일반적으로 미래에 “충분”되거나 “재검사”됩니다. 구체적으로, 전략은 다음과 같이 작동합니다.
구멍 탐지 메커니즘전략: 세 개의 선 패턴을 사용하여 두 가지 유형의 FVG를 식별합니다.
로그를 입력합니다이 전략은 FVG가 형성될 때 즉시 출장하지 않고, 가격의 응답을 기다리는 것입니다.
위험 관리:
24일 평점전략: 매일 오후 3시 15분 (인도 표준시) 에 모든 지분을 자동으로 청산하고 모든 FVG 배열을 제거하여 다음 거래 날을 준비하십시오.
중첩 거래이 전략은 최대 5번의 피라미딩 거래를 허용하며, 이는 한 방향으로 여러 포지션을 보유하여 강세를 보이는 시장에서 수익을 증대시키는 것을 의미합니다.
이 방법은 시장 구조의 불연속성과 가격 행동 이론을 활용하여 가격의 예측 가능한 행동을 포착하려고합니다.
코드에 대한 심층적인 분석 결과, 이 전략은 다음과 같은 장점을 보여준다:
객관적인 거래 기준전략: FVG와 입시점을 식별하기 위해 명확하게 정의된 수학적 조건을 사용하여 주관적인 판단을 제거하고 거래의 규율과 일관성을 향상시킵니다.
시장 구조에 기반한 거래공정 가치 격차를 거래함으로써, 전략은 가격 행동에 뒤쳐지는 전통적인 지표의 신호에 의존하는 대신 시장의 진정한 수요 공급 불균형 지역에 집중합니다.
위험 제어 장치:
복합 수익 잠재력[최대 5개의 포지션]을 허용함으로써, 전략은 강력한 트렌드 시장에서 수익을 크게 증가시킬 수 있으며, 동시에 각 포지션의 위험을 스톱로스로 제어할 수 있다.
적응력전략은 고정된 가격 수준에 의존하지 않고, 현재 시장 조건의 핵심 영역을 동적으로 식별하여 다양한 시장 환경과 도구에 적응 할 수 있습니다.
프로그래밍 효율성: 코드는 FVG 정보를 배열로 저장하고 여러 잠재적 거래 기회를 효과적으로 관리하여 시스템이 여러 가격 수준을 추적하고 응답 할 수 있도록합니다.
시각적 도움말전략: FVG 영역을 그래프에서 직관적으로 표시합니다 (녹색은 낙관적 FVG, 빨간색은 낙관적 FVG), 거래자가 시스템의 의사 결정 과정을 이해하는 데 도움이됩니다.
이 전략은 강력한 이론적 근거와 여러 장점을 가지고 있지만 몇 가지 위험 요소가 있습니다.
가짜 침입 위험: 회수 시장에서, 가격이 FVG 경계를 여러 번 건드리지 않고 지속적인 트렌드를 형성하지 않을 수 있으며, 이로 인해 여러 번의 손실이 발생합니다. 해결책은 추가 시장 환경 필터 또는 트렌드 확인 지표를 추가하는 것이 포함될 수 있습니다.
상쇄 거래 위험: 최대 5개의 동방향 포지션을 허용하면 잘못된 방향으로 과도한 노출이 발생할 수 있으며, 특히 트렌드가 급격히 변할 때. 모든 포지션의 최대 위험은 계정의 특정 비율을 초과하지 않는 것과 같은 전체적인 위험 제한을 적용하는 것이 좋습니다.
고정된 리스크/수익률의 한계: 고정된 1:2 리스크 수익 비율을 사용하는 것은 모든 시장 조건에 적합하지 않을 수 있습니다. 낮은 변동성이있는 시장에서 이러한 목표는 달성하기가 어려울 수 있습니다. 높은 변동성이있는 시장에서 수익성있는 거래를 조기 종료 할 수 있습니다. 시장 변동성에 따라 수익을 창출하는 목표를 고려하십시오.
시장 환경의 필터링 부족: 전략은 전체적인 트렌드 또는 변동 상태를 고려하지 않고 모든 시장 조건에서 신호를 생성한다. 강한 트렌드 환경에서 거래 역동성 FVG는 연속적인 손실을 초래할 수 있다. 트렌드 필터를 추가하면 성능이 크게 향상 될 수 있다.
거래량 확인 부족: 전략은 거래량 확인을 고려하지 않고 가격 행동을 기반으로만 이루어지며, 이는 낮은 거래량 영역에서 가짜 신호를 유발할 수 있다. 거래량 분석을 통합하면 신호 품질을 향상시킬 수 있다.
고정 시간 탈퇴의 잠재적인 문제: 일일 특정 시간에 탈퇴하는 것은 유리한 위치에서 조기 탈퇴하거나 불리한 위치에서 더 나은 탈퇴 기회를 놓치게 할 수 있다. 가격 행위에 기반한 탈퇴 조건을 고려한다.
역사적인 재검토 가설에 의존합니다.전략적 가정: 미래 FVG의 행동은 과거에 관찰된 패턴과 비슷할 것이다. 시장의 역동성은 변화할 수 있고, 이러한 패턴의 유효성을 약화시킬 수 있다. 매개 변수를 주기적으로 다시 최적화하고 가설을 검증하는 것은 매우 중요하다.
코드의 심층적인 분석을 바탕으로 다음과 같은 몇 가지 가능한 최적화 방향이 있습니다.
시장 구조 필터:
변동성 조정:
거래량 확인:
포지션 크기에 적응:
다중 시간 프레임 분석:
스마트 중첩 거래:
기계 학습 강화:
통계적 재측정 프레임워크:
동적 공정 가치 격차 일일 거래 전략은 시장에서 수요와 공급의 불균형 지역을 식별하고 거래하는 체계화된 방법을 제공합니다. 세 개의 가닥 FVG 모형과 명확한 회수 입시 규칙을 활용하여이 전략은 이론적으로 건전하고 실제적으로 실행 가능합니다. 사전 정의된 중지 손실, 고정 위험 수익률 및 일일 평정 포지션 메커니즘을 포함한 강력한 위험 관리 프레임 워크는 거래 규율에 대한 견고한 토대를 제공합니다.
이 전략의 주요 장점은 그것의 객관성과 시장 구조에 기반한 접근 방식이 다른 시장 환경에서 관련성을 유지할 수 있다는 것입니다. 그러나, 전략의 효과는 제안된 최적화 방향을 실행함으로써, 특히 시장 환경 필터를 추가하고, 변동성에 기반한 조정과 거래량을 확인함으로써, 크게 향상될 수 있습니다.
주목할 점은, 아무리 완벽한 거래 전략도 성공을 보장 할 수 없다는 것입니다. 성공적인 거래는 건전한 전략뿐만 아니라 엄격한 실행 규율, 적절한 자금 관리 및 시장에 대한 깊은 이해를 필요로합니다. 동적 공정 가치 격차 전략은 거래자가 자신의 위험 용량과 시장 관점에 따라 추가적으로 사용자 정의 및 최적화를 할 수있는 좋은 출발점을 제공합니다.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Intraday FVG", overlay=true, pyramiding=5, max_bars_back=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent)
// 2. FVG Detection (Three-Candle Pattern)
var bullFVGHigh = array.new_float()
var bullFVGLow = array.new_float()
var bullFVGIndex = array.new_int()
var bearFVGHigh = array.new_float()
var bearFVGLow = array.new_float()
var bearFVGIndex = array.new_int()
detectFVG() =>
// Bullish FVG: Current low > prior high AND next high < current low
bullCondition = low > high[2] and close[1] > high[2]
// Bearish FVG: Current high < prior low AND next low > current high
bearCondition = high < low[2] and close[1] < low[2]
if bullCondition
// log.info("bull condition met: {0} {0} {0}", high[2], close[1], low)
array.push(bullFVGHigh, low)
array.push(bullFVGLow, low[2])
array.push(bullFVGIndex, bar_index)
if bearCondition
// log.info("bear condition met: {0} {0} {0}", low[2], close[1], high)
array.push(bearFVGHigh, high[2])
array.push(bearFVGLow, high)
array.push(bearFVGIndex, bar_index)
detectFVG()
// 3. Retest Execution Logic
checkRetests(arrayHigh, arrayLow, barIndex, direction) =>
// log.info("{0} : {1}", bar_index, time)
i = array.size(arrayHigh) - 1
while i >= 0
// log.info("barIndex : {0}" , array.get(barIndex, i))
// log.info("bar_index : {0}" , bar_index)
if array.get(barIndex, i) < bar_index
fvgHigh = array.get(arrayHigh, i)
fvgLow = array.get(arrayLow, i)
// log.info("visting : {0} : {1} : {2} : {3} ", array.get(barIndex, i), bar_index, fvgHigh, fvgLow)
if direction == "long" and low <= fvgHigh
// log.info("entering long")
sl = array.get(arrayLow, i) // Previous candle's low
entry = close
tp = entry + (entry - sl)*2
strategy.entry("L"+str.tostring(array.get(barIndex, i)), strategy.long)
strategy.exit("XL"+str.tostring(array.get(barIndex, i)), "L"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
if direction == "short" and high >= fvgLow
// log.info("entering short")
sl = array.get(arrayHigh, i) // Previous candle's low
entry = close
tp = entry - (sl - entry)*2
strategy.entry("S"+str.tostring(array.get(barIndex, i)), strategy.short)
strategy.exit("XS"+str.tostring(array.get(barIndex, i)), "S"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
i := i - 1
checkRetests(bullFVGHigh, bullFVGLow, bullFVGIndex, "long")
checkRetests(bearFVGHigh, bearFVGLow, bearFVGIndex,"short")
// 5. Daily Exit at 3:15 PM IST
exitTime = hour == 15 and minute >= 15
if exitTime
strategy.close_all()
array.clear(bullFVGHigh)
array.clear(bullFVGLow)
array.clear(bearFVGHigh)
array.clear(bearFVGLow)
array.clear(bullFVGIndex)
array.clear(bearFVGIndex)