양방향 역전 전략


생성 날짜: 2023-11-02 16:47:08 마지막으로 수정됨: 2023-11-02 16:47:08
복사: 0 클릭수: 680
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

양방향 역전 전략

개요

양방향 반전 전략은 전날 거래 범위에 따라 그날의 스톱로스 구매 주문을 설정하는 간단한 비트코인 거래 전략이다. 이 전략의 핵심 아이디어는, 당일 개시 가격이 전날 종료 가격보다 상승하면, 최고점 근처에 스톱로스 구매를 설정하고, 당일 개시 가격이 전날 종료 가격보다 떨어지면, 최저점 근처에 스톱로스 구매를 설정하는 것이다.

전략 원칙

이 전략은 먼저 전날의 거래 범위를 계산합니다. 즉, 최상위 가격에서 최저 가격을 다. 그리고 그날의 개장 후, 가격이 전날의 종료 가격보다 상승했는지 여부를 판단합니다. 상승하면, 손실된 구매 가격으로 개장 가격과 전날의 거래 범위를 0.6 배로 설정합니다. 떨어지면, 손실된 구매 가격으로 개장 가격과 전날의 거래 범위를 1.8 배로 설정합니다. 전략은 중지 손실을 유발한 후 더 많은 위치를 취하고, 그날의 종료 전에 평정합니다.

특히, 이 전략은 두 가지 입시 규칙을 포함하고 있습니다.

  1. 만약 그날의 상장 가격이 전날의 상장 가격보다 높고, 재검토 시간 창 내에서 만료된다면, 상장 가격과 전날의 범위의 0.6배의 스톱로스를 구매한다.

  2. 만약 그날의 상장 가격이 전날의 상장 가격보다 낮다면 (longCond2가 충족되면) 재검토 시간 창 내에서, 상장 가격과 전날의 범위의 1.8배의 스톱로스를 구매한다 (strategy.long2).

이 전략은 위의 두 개의 스톱을 터치한 후에 더 많은 포지션을 열고, 그 날 종료 전에 strategy.close_all () 을 통해 평소 포지션을 한다.

우위 분석

양방향 역전 전략에는 다음과 같은 장점이 있습니다.

  1. 반전상황을 포착하고, 방향적 편견이 없다. 이 전략은 가격 상승과 하락을 동시에 고려하여, 다른 방향의 돌파 반전상황을 포착할 수 있다.

  2. 리스크가 통제 가능하며, 스톱로스 보호가 있다. 전략은 스톱로스 가격을 미리 설정하여, 단일 거래의 최대 손실을 효과적으로 제어할 수 있다.

  3. 매일 청산, 야간 위험을 피한다. 전략은 당일 종결 전에 청산, 야간 지분을 보유하지 않고, 야간 큰 변동의 위험을 줄일 수 있다.

  4. 거래 빈도가 높기 때문에 단선 거래에 적합하다. 하루에 1 거래일만 보유하면 높은 거래 빈도를 보장할 수 있다.

  5. 전략적 아이디어는 간단하고 명확하며, 이해하기 쉽고 실행이 가능합니다.

위험 분석

그러나 이 역방향 전략에는 몇 가지 위험도 있습니다.

  1. 막상거리를 잘못 선택하면 막상거리가 뚫리게 될 수 있다. 막상거리를 너무 작게 설정하면 극단적으로 직접 뚫려서 손실이 발생할 수 있다.

  2. 거래 빈도가 너무 높으면 거래 수수료 부담이 발생할 수 있다. 매일 입장을 매기는 높은 빈도 거래는 더 많은 수수료를 누릴 수 있다.

  3. 큰 진동 추세에 따라 손해가 쉽게 멈출 수 있다. 진동상태의 중단 손해가 비교적 쉽게 촉발되어, 이로 인해 손해가 발생한다.

  4. 이 전략은 역전시장에 더 적합하며, 트렌드 돌파 이후의 트렌드 수익을 지속적으로 잡을 수 없습니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 스톱 라인 거리를 최적화한다. 다양한 스톱 위치를 테스트하여 최적의 스톱 라인 지점을 찾을 수 있다. 또한 시장의 변동 정도에 따라 스톱 라인 거리를 동적으로 조정할 수 있다.

  2. 트렌드 필터를 추가한다. 입점하기 전에 더 큰 수준의 트렌드 방향을 판단하여 역동적인 거래를 피한다.

  3. 포지션 개시 규칙을 최적화한다. 포지션 개시의 정확성을 높이기 위해 파격 전에 분기 그래픽 형상 판단을 추가하거나, 양력 논리 판단을 증가시키는 것을 고려할 수 있다.

  4. 포지션 최적화를 추가한다. 이동 스톱을 추가하거나 트렌드 추적 EXIT을 추가하여 지속적인 수익을 창출하는 것을 테스트할 수 있다.

  5. 다른 거래 품종을 테스트하십시오. 이 전략은 변동성이 높은 품종에 더 적합 할 수 있으며, 다른 품종의 데이터를 테스트하여 가장 적합한 품종을 찾을 수 있습니다.

  6. 기계 학습 기술과 결합 스톱 손실 거리, 포지션 개설 규칙 등의 매개 변수를 최적화하기 위해 기계 학습을 사용할 수 있습니다.

요약하다

양방향 역전 전략은 전체적으로 매우 간결하고 실용적인 단선 전략이다. 그것은 가격 역전 상승과 하락의 상황에 동시에 적합하며 역전 기회를 효과적으로 포착할 수 있다. 그러나 이 전략에는 또한 몇 가지 위험이 있으며, 위험을 줄이고 전략의 안정성을 높이기 위해 중지 거리, 포지션 개설 규칙 등에 대한 최적화가 필요합니다.

전략 소스 코드
/*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 ===