브레이크아웃 풀백 오프닝 전략


생성 날짜: 2024-02-22 15:41:53 마지막으로 수정됨: 2024-02-22 15:41:53
복사: 0 클릭수: 599
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

브레이크아웃 풀백 오프닝 전략

개요

이 전략의 주요 아이디어는 특정 K선 형태가 나타나면 더 많은 입장을 취하는 것입니다. 즉, 아래로 날아가는 음이 나타나면 (colorbar) 그리고 다음 K선 낮은 점 회귀가있는 경우 다음 K선 열 때 더 많은 입장을 취합니다.

전략 원칙

이 전략의 판단의 구체적인 조건은: 전 K 라인이 전 두 K 라인에 비해 최저점이 낮고 최고점이 높기 때문에, 즉 아래로 날아가는 공기가 나타났으며, 현재 K 라인의 최저점은 전 K 라인의 최저점보다 낮거나 같기 때문에, 즉 회전이 일어났다. 이 두 조건을 동시에 충족시키면, 다음 K 라인이 열릴 때 더 많은 출전한다.

더한 후 중지 손실을 회수 하위점 즉 전 K 선의 최저 가격으로 설정하고, 또한 중지 을 개시 가격의 2% 이상으로 설정합니다. 가격이 중지 또는 중지 가격에 닿을 때 평정 을 설정합니다.

우위 분석

이 전략의 가장 큰 장점은 단기간에 발생할 가능성이 높은 반발 기회를 잡는 데 있다. 아래로 공중으로 뛰어내리는 K선이 나타나서 회전이 발생하면, 이것은 공중 헤드의 힘이 그 수준에서 소진될 수 있음을 나타내는 매우 강력한 기술 형태이며, 반발이 일어날 가능성이 높다. 따라서 이것은 짧은 선에 상대적으로 적합한 전략이다.

위험 분석

이 전략의 주요 위험은 회귀가 끝난 후 가격이 계속 하락할 가능성이 있습니다. 왜냐하면 우리는 회귀 하위점 근처에서 많은 일을하고 있기 때문에, 적시에 중단되지 않으면 큰 손실이 발생할 수 있습니다. 또한, 회귀 폭이 작고, 중단점이 비교적 가까이 설정되어 있다면, 설정 될 수 있습니다. 따라서이 전략은 짧은 라인 작업에 더 적합하며, 가격 행태를 주의 깊게 관찰하고, 적시에 중단해야합니다.

최적화 방향

다른 지표와 결합하여 진출 시기를 결정하는 것을 고려할 수 있습니다. 예를 들어 MACD가 발생했을 때 다시 진출 할 수 있습니다. 또는 typical price가 지원 위치에 있는지 여부를 계산 할 수 있습니다. 이것은 몇 가지 가짜 신호를 필터링하여 전략의 안정성을 향상시킬 수 있습니다. 또한, 다른 품종, 다른 시간 주기에서 전략의 성능을 연구하여 최적의 파라미터 조합을 찾을 수 있습니다. 또한 기계 학습과 같은 방법을 통해 파라미터를 자동으로 최적화 할 수 있습니다.

요약하다

이 전략은 전체적으로 전형적인 단선 돌파 회귀를 하는 다중 전략이다. 이 전략은 공중에서 뛰어내리고 회귀가 일어나는 강력한 형태가 제공하는 반발 기회를 포착한다. 그러나 동시에 적시에 손실을 막지 못하고 큰 손실을 초래할 위험에 직면해 있다. 따라서 시장을 자주 모니터링하는 단선 운영에 적합하다. 다른 지표 필터링과 신호 매개 변수 최적화와 함께 전략의 효과를 높일 수 있다.

전략 소스 코드
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  Created by Leon Ross
//study(title="OutsideDownOpenLower", shorttitle="ODOL", overlay=true)
strategy(title = "Outside", shorttitle = "OB", overlay = true )
  

//Window of time
//start     = timestamp(2018, 01, 01, 00, 00)  // backtest start window
//finish    = timestamp(2018, 12, 31, 23, 59)        // backtest finish window
//window()  => time >= start and time <= finish ? true : false // create function "within window of time"  

//Conditions
outsideBar = low < low[1] and high > high[1] and close < open
allConditions = outsideBar
  
//Stop and Take Profit as percentages
//inpTakeProfit   = input(2, title='Take Profit %', type=float)/100
//takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit)
//useTakeProfit   = inpTakeProfit  > 0 ?  takeProfitValue : na
//inpStopLoss     = input(1, title='Stop Loss %', type=float)/100
//stopLossValue = strategy.position_avg_price * (1 - inpStopLoss)
//useStopLoss     = inpStopLoss    > 0 ?  stopLossValue   : na
//entry = strategy.position_avg_price



//Stop as last bars low and profit as percentage
entry = strategy.position_avg_price
inpTakeProfit   = input(2.0, title='Take Profit %', type=float)/100
takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit)
useTakeProfit   = inpTakeProfit  > 0 ?  takeProfitValue : na
inpStopLoss     = valuewhen(allConditions, low, 0)
stopLossValue = inpStopLoss
useStopLoss     = inpStopLoss    > 0 ?  stopLossValue   : na
    



//Plots
bgcolor(allConditions ==1 ? aqua : na, transp=70)
plot(entry, color=blue, style=linebr, linewidth=2)
plot(useStopLoss, color=red, style=linebr, linewidth=2)
plot(useTakeProfit, color=green, style=linebr, linewidth=2)


//Entires
strategy.entry(id = "Long", long = true, when = allConditions) // use function or simple condition to decide when to get in

//Exits
//if (barssince(allConditions) == 2)
    //strategy.close("Long")
//else
strategy.exit("Exit Long", from_entry = "Long", stop = useStopLoss)