통합 구역 - 라이브

저자:차오장, 날짜: 2022-05-24 11:43:02
태그:가장 높은가장 낮은

이 스크립트는 실시간으로 통합 구역을 찾습니다.

어떻게 작동하죠?

  • 스크립트는 루프백 기간을 사용하여 가장 높고 낮은 바를 찾습니다.
  • 그 다음 방향 계산
  • 방향과 가장 높은/최저 바 정보를 사용하여 실시간으로 통합 구역을 계산
  • 통합 영역의 길이가 사용자가 정의한 최소 길이가 같거나 크다면 이 영역은 통합 구역으로 표시됩니다.
  • 그러면 통합 구역은 자동으로 확장됩니다.

백테스트

img


/*backtest
start: 2022-04-23 00:00:00
end: 2022-05-22 23:59:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © LonesomeTheBlue

//@version=4
study("Consolidation Zones - Live", overlay = true, max_bars_back = 1100)
prd = input(defval = 10, title="Loopback Period", minval = 2, maxval = 50)
conslen = input(defval = 5, title="Min Consolidation Length", minval = 2, maxval = 20)
paintcons = input(defval = true, title = "Paint Consolidation Area ")
zonecol = input(defval = color.new(color.blue, 70), title = "Zone Color")

float hb_ = highestbars(prd) == 0 ? high : na
float lb_ = lowestbars(prd) == 0 ? low : na
var int dir = 0
float zz = na
float pp = na

dir := iff(hb_ and na(lb_), 1, iff(lb_ and na(hb_), -1, dir))
if hb_ and lb_
    if dir == 1
        zz := hb_
    else
        zz := lb_
else
    zz := iff(hb_, hb_, iff(lb_, lb_, na))

for x = 0 to 1000
    if na(close) or dir != dir[x]
        break
    if zz[x]
        if na(pp)
            pp := zz[x]
        else
            if dir[x] == 1 and zz[x] > pp
                pp := zz[x]
            if dir[x] == -1 and zz[x] < pp
                pp := zz[x]

var int conscnt = 0
var float condhigh = na
var float condlow = na
float H_ = highest(conslen)
float L_ = lowest(conslen)
var line upline = na
var line dnline = na
bool breakoutup = false
bool breakoutdown = false

if change(pp)
    if conscnt > conslen
        if pp > condhigh
            breakoutup := true
        if pp < condlow
            breakoutdown := true
    if conscnt > 0 and pp <= condhigh and pp >= condlow
        conscnt := conscnt + 1
    else
        conscnt := 0
else
    conscnt := conscnt + 1

if conscnt >= conslen
    if conscnt == conslen
        condhigh := H_
        condlow  := L_
    else
        // line.delete(upline)
        // line.delete(dnline)
        condhigh := max(condhigh, high)
        condlow := min(condlow, low)
    
    // upline := line.new(bar_index, condhigh, bar_index - conscnt, condhigh, color = color.red, style = line.style_dashed)
    // dnline := line.new(bar_index, condlow , bar_index - conscnt, condlow, color = color.lime, style = line.style_dashed)

fill(plot(condhigh, color = na, style = plot.style_stepline),
   plot(condlow, color = na, style = plot.style_stepline),
   color = paintcons and conscnt > conslen ? zonecol : color.new(color.white, 100))

alertcondition(breakoutup, title='Breakout Up', message='Breakout Up')
alertcondition(breakoutdown, title='Breakout Down', message='Breakout Down')

if breakoutup
    strategy.entry("Enter Long", strategy.long)
else if breakoutdown
    strategy.entry("Enter Short", strategy.short)

관련

더 많은