돌파구 콜백 장기 전략

저자:차오장, 날짜: 2024-02-22 15:41:53
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 특정 촛불 패턴이 나타난 후 긴 포지션을 개척하는 것입니다. 즉, 하향 격차 (colorbar) 이후 열리는 다음 바에서 긴 포지션을 개척하고 그 다음 바의 낮은 수준으로 철회하는 것입니다.

전략 논리

이 전략의 구체적인 조건은: 이전 바는 이전 두 바에 비해 낮은 하락과 높은 하락을 가지고 있으며, 하락 격차를 나타냅니다. 현재 바의 하락은 이전 바의 하락보다 작거나 같으며, 인기를 얻었다는 신호입니다. 두 가지 조건이 충족되면 다음 바가 열렸을 때 긴 지위가 열립니다.

롱 포지션을 열면, 스톱 로스는 이전 바의 최저치인 풀백 로우로 설정되고, 영업이익은 엔트리 가격보다 2% 이상으로 설정됩니다. 영업이익 또는 스톱 로스가 닿을 때, 포지션은 종료됩니다.

이점 분석

이 전략의 가장 큰 장점은 특정 촛불 패턴 후에 높은 확률 리바운드 기회를 포착하는 것입니다. 풀백이 따르는 하향 격차는 이 수준에서 판매 압력이 고갈되었을 수 있으며 높은 확률 리바운드가 발생할 가능성이 있음을 나타내는 매우 강력한 기술적 패턴을 나타냅니다. 따라서이 전략은 단기 거래에 더 적합합니다.

위험 분석

주요 위험은 인하가 끝난 후에도 계속 떨어지는 것입니다. 인하의 최하위 주위에서 긴 포지션을 취하고 있기 때문에 적시에 손실을 줄일 수 없다면 상당한 손실이 발생할 수 있습니다. 또한 인하 범위가 작다면 너무 단단하게 설정된 스톱 손실이 중단 될 수 있습니다. 따라서이 전략은 단기 거래에 더 바람직하며 시장 주의와 신속한 스톱 손실을 필요로합니다.

최적화 방향

다른 기술적 지표는 신호 정확성과 전략 안정성을 향상시키기 위해 MACD 금십자사에 진입하거나 진입하기 전에 전형적인 가격이 지원 수준인지 확인하는 것과 같이 통합 될 수 있습니다. 또한 최적의 매개 변수 세트를 찾기 위해 다른 제품과 시간 프레임에 걸쳐 앞으로 나아가는 최적화를 수행 할 수 있습니다. 기계 학습 기술은 자동 매개 변수 조정에도 활용 될 수 있습니다.

요약

요약하자면, 이것은 전형적인 단기 브레이크아웃 풀백 장기 전략이다. 풀백을 따르는 하향 격차의 강한 패턴 이후 리바운드 기회를 포착한다. 그러나 적시에 손실을 줄이지 않으면 엄청난 손실의 위험을 감수하기도 한다. 유리한 결과를 위해 빈번한 시장 모니터링이 필요하다. 더 많은 지표와 매개 변수 최적화를 통해 신호 필터링을 통해 추가 개선이 가능하다.


/*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)







더 많은