Order Block

only_fibonacci · study · 91 行 · 点赞 3,428 · TradingView 原页

本页源码来自 TradingView 公开发布的开源脚本,版权归原作者所有, 请遵循其原始许可(Pine 脚本常见 CC BY-NC-SA / MPL-2.0 / MIT)。 本项目仅用于研究检索与许可范围内的移植。

Pine Script

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © only_fibonacci
 
//@version=5
indicator("Order Block", overlay = true)
 
// Pivot precision
precision = input.int(defval = 5, title = "Precision")
last_how_ob = input.int(defval = 2, title = "How Many Last OB?", minval = 2)
color_of_ob_bullish = input.color(defval = color.rgb(46,204,113,80), title = "Color of OB Bull", group = "BULL")
color_of_ob_bearish = input.color(defval = color.rgb(231, 76, 60,80), title = "Color of OB Bear", group = "BEAR")
show_bull_ob = input.bool(defval = false, title = "SHOW BULL", group = "BULL")
show_bear_ob = input.bool(defval = false, title = "SHOW BEAR", group = "BEAR")
 
 
isBody = input.bool(defval =true, title = "Is Body?", group = "TOOL")
extendRight = input.bool(false,title = "Extend Right", group = "TOOL")
 
 
h = isBody ? math.max(open,close) : high
l = isBody ? math.min(open,close) : low 
 
 
// Conditions for top and bottom
top    = ta.pivothigh(precision,precision)
bottom = ta.pivotlow(precision,precision)
 
 
// arrays
tops = array.new_float()
bottoms = array.new_float()
 
// get Funcstions
getTop(i)=>
    _index = ta.valuewhen(top,bar_index,i) - precision
    _top = high[bar_index - _index]
    array.push(tops,_top)
 
getBottom(i)=>
    _index = ta.valuewhen(bottom,bar_index,i) - precision
    _bottom = low[bar_index - _index]
    array.push(bottoms,_bottom)
 
 
 
getTop(2)
getTop(1)
getTop(0)
 
getBottom(2)
getBottom(1)
getBottom(0)
 
 
 
 
is_bull_ob = array.get(tops,0) > array.get(tops,1) and  array.get(tops,1) > array.get(tops,2) and ta.crossover(high,array.last(tops))
is_bear_ob = array.get(bottoms,0) < array.get(bottoms,1) and  array.get(bottoms,1) < array.get(bottoms,2) and ta.crossunder(low,array.last(bottoms))
 
 
 
 
 
index_bull_ob = ta.valuewhen(is_bull_ob,bar_index,0)
index_bear_ob = ta.valuewhen(is_bear_ob,bar_index,0)
 
redBar = open[1] > close[1] and high[1] < high
greenBar = open[1] < close[1] and low[1] > low
 
redBarIndex = ta.valuewhen(redBar,bar_index,0)
greenBarIndex = ta.valuewhen(greenBar,bar_index,0)
 
 
a_allLines = line.all
if array.size(a_allLines) > last_how_ob
    for i = 0 to array.size(a_allLines) - last_how_ob
        line.delete(array.get(a_allLines, i))
 
 
a_allBoxes = box.all
if array.size(a_allBoxes) > last_how_ob
	for i = 0 to array.size(a_allBoxes) - last_how_ob - 1
		box.delete(array.get(a_allBoxes, i))
 
 
if is_bull_ob and show_bull_ob
    box.new(redBarIndex -1,h[bar_index - redBarIndex +1 ],last_bar_index,l[bar_index - redBarIndex +1], bgcolor = color_of_ob_bullish, border_color = color_of_ob_bullish, extend = extendRight ? extend.right : extend.none)
 
 
if is_bear_ob and show_bear_ob
    box.new(greenBarIndex -1,h[bar_index - greenBarIndex +1 ],last_bar_index,l[bar_index - greenBarIndex +1],  bgcolor = color_of_ob_bearish, border_color = color_of_ob_bearish, extend = extendRight ? extend.right : extend.none)

← 返回列表