다차원 골드 프라이데이 비정상 전략 분석 시스템

MA RSI ROC SL TP MACD EMA RISK PNL ATR
생성 날짜: 2024-12-12 16:32:12 마지막으로 수정됨: 2024-12-12 16:32:12
복사: 0 클릭수: 402
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다차원 골드 프라이데이 비정상 전략 분석 시스템

개요

이 전략은 시장의 이상 현상에 기반한 거래 시스템으로, 주로 목요일 밤 마감부터 금요일 마감까지의 시장 행동 특성을 활용하여 거래한다. 이 전략은 고정된 입점과 출구 시간을 채택하여, 재검토를 통해 이 시장 모형의 유효성을 검증한다. 이 전략은 10%의 자금을 사용하여 단일 거래를 하고, 슬라이드 포인트와 수수료 요소를 고려하여 재검토 결과의 진실성을 보장한다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.

  1. 입점 조건: 목요일 종점에 입점하는 경우, 이 시기는 역사 데이터 분석에 따라 선택된다.
  2. 출구 조건: 금일 종결시 지분을 청산하고 지분을 보유하는 기간은 고정한다.
  3. 자금 관리: 매 거래마다 10%의 계좌 자금이 사용되며, 이러한 보수적인 포지션 관리는 위험을 통제하는 데 도움이 된다.
  4. 거래 실행: 종식 가격에서 주문을 실행하면 하루 동안의 급격한 변동으로 인한 영향을 피할 수 있습니다.

전략적 이점

  1. 간단하고 명확한 거래 규칙, 복잡한 지표 조합이 없으며 이해하기 쉽고 실행이 가능합니다.
  2. 위험 통제: 고정된 지분 보유 시간 및 자금 관리 프로그램은 위험을 더 쉽게 평가하고 제어 할 수 있습니다.
  3. 자동화 수준: 전략 논리는 간단하고, 자동화 거래를 구현하기 위한 프로그래밍에 적합하다.
  4. 유연성: 다른 시장 환경에 따라 매개 변수를 조정할 수 있고, 적응력이 좋다.

전략적 위험

  1. 시간 의존성: 전략은 특정 시간 창에 크게 의존하며, 거래하지 않은 시간에 중요한 뉴스에 영향을 받을 수 있다.
  2. 시장 환경의 변화: 역사적인 통계 법칙은 미래에 유효하지 않을 수 있으며, 전략의 성과를 지속적으로 모니터링 할 필요가 있습니다.
  3. 실행 위험: 폐회 시점에 유동성이 부족하여 슬라이드 포인트가 증가할 수 있습니다. 다음의 방법으로 위험을 관리하는 것이 좋습니다.
  • 손해 차단장치
  • 동적으로 조정된 지분 시간
  • 필터링 조건을 추가

전략 최적화 방향

  1. 변동률 지표를 도입: ATR 지표를 추가하여 포지션 크기를 동적으로 조정하여 전략을 더 적응시킬 수 있습니다.
  2. 진입 시점을 최적화: 가격 형태와 기술 지표를 결합하여 진입의 정확성을 향상시킬 수 있다.
  3. 리스크 관리를 개선하고, 동적 손실을 막는 장치를 추가하여, 보호가 이익이 되기도 합니다.
  4. 필터링 조건을 추가하십시오. 불리한 시장 환경에서 거래하는 것을 피하기 위해 트렌드 필터를 추가하는 것을 고려하십시오.

요약하다

이 전략은 시장의 이상 현상에 기반한 고전적인 거래 시스템으로, 엄격한 시간 관리와 보수적인 자금 관리를 통해 잠재적인 수익을 얻는다. 전략의 논리는 간단하지만, 시장 환경의 변화에 따른 위험에 주의를 기울여야 하며, 실물 거래시 더 보수적인 포지션 제어와 더 나은 위험 관리 장치를 채택하는 것이 좋습니다.

전략 소스 코드
/*backtest
start: 2024-11-11 00:00:00
end: 2024-12-10 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © piirsalu

//@version=5
strategy("Gold Friday Anomaly Strategy", 
     default_qty_type=strategy.percent_of_equity,
     slippage = 1, commission_value=0.0005,
     process_orders_on_close = true,
     initial_capital = 50000,
     default_qty_value=500,
     overlay = true)
     

/////////////////////////////////////////////////////////////////////////////////////
//                                 . USER INPUTS .                                 //
/////////////////////////////////////////////////////////////////////////////////////

// Define backtest start and end dates
st_yr_inp = input(defval=2000, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')

// Set start and end timestamps for backtesting
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp, 00, 00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp, 00, 00)

/////////////////////////////////////////////////////////////////////////////////////
//                              . STRATEGY LOGIC .                                 //
/////////////////////////////////////////////////////////////////////////////////////

// Check if the current day is Friday
isFriday = (dayofweek == dayofweek.friday)

// Initialize a candle counter
var int barCounter = 0

// Increment the candle counter on each new bar
barCounter := barCounter + 1

// Define trading session time ranges
pre_mkt = time(timeframe.period, '0400-0800:23456')
mkt_hrs = time(timeframe.period, '0800-1600:23456')
eod = time(timeframe.period, '1200-1600:23456')

/////////////////////////////////////////////////////////////////////////////////////
//                          . STRATEGY ENTRY & EXIT .                              //
/////////////////////////////////////////////////////////////////////////////////////

// Enter a long position on the first candle of Friday within the backtest period
if dayofweek == 4 and time >= start and time <= end
    strategy.entry("BuyOnFriday", strategy.long)

// Close the position after holding it for 4 candles
if (barCounter % 1 == 0)
    strategy.close("BuyOnFriday")