양방향 반전 전략

저자:차오장, 날짜: 2023-11-02 16:47:08
태그:

img

전반적인 설명

쌍방향 역전 전략은 전날의 거래 범위에 따라 스톱 로스 구매 주문을 설정하는 간단한 비트코인 거래 전략이다. 이 전략의 핵심 아이디어는 현재 하루의 개장 가격이 전날의 폐쇄 가격보다 높으면 높은 가격 근처에 스톱 로스 구매를 설정하고, 개장 가격이 전날의 폐쇄 가격보다 낮으면 낮은 가격 근처에 스톱 로스 구매를 설정하는 것입니다.

전략 논리

전략은 먼저 전날의 거래 범위를 계산합니다. 이는 가장 높은 가격 빼고 가장 낮은 가격입니다. 현재 하루의 오픈 후, 가격이 전날의 종료 가격보다 높거나 낮는지 판단합니다. 높다면, 스톱 로스 구매 가격은 오픈 가격과 전날의 범위의 0.6배로 설정됩니다. 낮다면, 스톱 로스 구매 가격은 오픈 가격과 전날의 범위의 1.8배로 설정됩니다. 전략은 스톱 로스가 트리거되면 긴 포지션을 열고, 현재 하루 종료 전에 포지션을 닫습니다.

특히 전략은 두 가지 입시 규칙을 포함합니다.

  1. 현재 하루의 개장 가격이 전날의 종료 가격보다 높다면 (longCond1 만족), 그리고 백테스트 시간 창 (window() 만족하면, 개장 가격과 전날의 범위의 0.6배 (strategy.long1) 로 스톱 로스 구매를 설정합니다.

  2. 만약 현재 하루의 개장 가격이 전날의 종료 가격보다 낮다면 (longCond2가 만족), 그리고 백테스트 윈도우 내에서, 개장 가격과 전날의 범위의 1.8배 (strategy.long2) 로 스톱 로스 구매를 설정합니다.

이 전략은 위 스톱 손실 중 하나를 유발할 때 긴 포지션을 열고, strategy.close_all(를 사용하여 하루 종료 전에 포지션을 닫습니다.

이점 분석

양방향 반전 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 방향 편향 없이 반전 움직임을 포착합니다. 전략은 양쪽 방향으로 반전 브레이크를 포착하여 상향과 하향을 모두 고려합니다.

  2. 스톱 로스로 제어 가능한 위험. 미리 결정된 스톱 로스는 거래당 최대 손실을 효과적으로 제한합니다.

  3. 매일 모든 포지션을 폐쇄함으로써 하루 하루의 위험을 피합니다. 매일 하루가 끝나기 전에 폐쇄하면 하루 하루의 큰 가격 변동의 위험을 제거합니다.

  4. 단기 거래의 거래 빈도가 높습니다. 하루 동안만 포지션을 보유하면 거래 빈도가 높습니다.

  5. 단순하고 명확한 논리, 이해하기 쉽고 실행하기 쉽습니다.

위험 분석

그러나 이 전략에는 몇 가지 위험 요소도 있습니다.

  1. 부적절한 스톱 로스 거리는 스톱 로스가 타격되는 결과를 초래할 수 있습니다. 스톱 로스가 너무 긴 경우 극단적인 시장 조건에서 조기에 중단 될 수 있습니다.

  2. 높은 거래 빈도는 상당한 거래 비용을 초래할 수 있습니다. 매일 포지션을 열고 닫는 것은 상당한 수수료를 축적 할 수 있습니다.

  3. 불안한 시장에서 중단되는 경향이 있습니다. 스톱 손실은 윙사 조건에서 더 자주 발생합니다.

  4. 트렌드 움직임을 견딜 수 없습니다. 전략은 트렌드 계속에서 이익을 캡처 할 수 없습니다, 반전에 더 적합합니다.

더 나은 기회

전략이 향상될 수 있는 몇 가지 방법:

  1. 스톱 로스 거리를 최적화 합니다. 최적 스톱 로스 포인트를 찾기 위해 다른 스톱 레벨을 테스트합니다. 또한 시장 변동성에 따라 동적 스톱을 고려하십시오.

  2. 트렌드 필터를 추가합니다. 트렌드 트렌드를 방지하기 위해 진입하기 전에 더 큰 시간 프레임 트렌드를 확인하십시오.

  3. 입력 규칙을 개선하고, 입력 정밀도를 높이기 위해 볼륨이나 모멘텀 지표를 추가하는 것을 고려하십시오.

  4. 포지션 관리를 도입합니다. 수익성있는 트렌드를 타기 위해 후속 스톱 또는 트렌드 다음 출구를 테스트합니다.

  5. 다른 제품을 테스트합니다. 전략은 더 높은 변동성 제품에서 더 잘 작동 할 수 있습니다.

  6. 기계 학습 기술을 활용하고 ML 알고리즘을 사용하여 정지 및 입력과 같은 매개 변수를 최적화합니다.

결론

전반적으로 양방향 반전 전략은 매우 간단하고 실용적인 단기 전략 개념이다. 상향 및 하향 움직임 모두에서 반전 기회를 효과적으로 포착할 수 있다. 그러나, 중지 손실 거리와 엔트리 규칙과 같은 위험은 위험을 줄이고 견고성을 향상시키기 위해 최적화되어야 한다. 주요 정제와 함께 전략은 매우 유용한 단기 거래 도구가 될 수 있다.


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Simple strat", shorttitle="Simple Strat", overlay=true)

// X001TK R1 strategy
//
// 
// This strategy combines the special approach in previous daily range trading
//
// This strategy goes long on stop buy order which is calculated as previous day range
// multiplied by special number.
//
// This pure strategy does not have any
// stop loss or take profit money management logic.
//
// Exit rule is simple. We close the position on market close or next day open
//
// 
// 
//
// Input
length = input(10, minval=1)
stopLossPercent=input(1.1,"Stop Loss Percent")
profitPercent=input(9,"Profit Percent")


// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2029, title = "To Year", minval = 2017)
ses_cls = input(defval=true, title="End of Session Close Out?")


// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"


// === STRATEGY ===
// conditions
longCond1 = close>close[1]
longCond2 = close<close[1]


strategy.entry("long1", strategy.long, when=longCond1==true and window()==true, stop=close+(high - low)*0.6)
strategy.entry("long2", strategy.long, when=longCond2==true and window()==true, stop=close+(high - low)*1.8)
strategy.close_all(when=ses_cls)

// === /STRATEGY ===

더 많은