最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

pine script - PineScript - Choosing Pivot Highs and Lows - Stack Overflow

programmeradmin3浏览0评论

i am currently struggling storing correct pivot highs and lows into variables. in the example screenshot i am showing pivot highs and lows with length 3. i want to store the latest pivot low into variable i.e. P1. now i want to look back on the chart and store the next pivot low which is lower than P1 into a variable P2, but i have no clue how to code that.

here is the example screenshot: example Screenshot Gold 1H Chart

Thanks in advance.

Edit: Here is my code so far:

//@version=4
study("Arrays Test, only Float Values", title = "Arrays Test, only Float Values", overlay=true)

PivotLevel = input(3)

pivotHigh = pivothigh(PivotLevel, PivotLevel)
pivotLow = pivotlow(PivotLevel, PivotLevel)

Array_Size = 10

var H_Array = array.new_float(Array_Size, na)
var L_Array = array.new_float(Array_Size, na)

if not na(pivotHigh)
    array.push(H_Array, pivotHigh)
    array.shift(H_Array)
    
if not na(pivotLow)
    array.push(L_Array, pivotLow)
    array.shift(L_Array)

CurrentPivotHigh = array.get(H_Array, Array_Size - 1)
CurrentPivotLow = array.get(L_Array, Array_Size - 1)

// Find the previous higher pivot high
var float lastPivotHigh = na
for i = 0 to Array_Size - 1
    float pivot = array.get(H_Array, i)
    if not na(pivot) and (na(lastPivotHigh) or pivot > CurrentPivotHigh)
        lastPivotHigh := pivot

// Find the previous lower pivot low
var float lastPivotLow = na
for i = 0 to Array_Size - 1
    float pivot = array.get(L_Array, i)
    if not na(pivot) and (na(lastPivotLow) or pivot < CurrentPivotLow)
        lastPivotLow := pivot

// For debugging, plot a label with arrays as string
if barstate.islast
    label.new(
         bar_index, 0, 
         "Array H: " + tostring(H_Array) + 
         "\nArray L: " + tostring(L_Array) + 
         "\nCurrent Pivot High: " + tostring(CurrentPivotHigh) + 
         "   Current Pivot Low: " + tostring(CurrentPivotLow) + 
         "\nPrevious Higher Pivot High: " + tostring(lastPivotHigh) + 
         "   Previous Lower Pivot Low: " + tostring(lastPivotLow), 
         color=color.blue, textcolor=color.black, style=label.style_label_down)

it stores the last 10 pivot Highs and lows into arrays and draws a label to see the current High/Low and the previous higher pivot high/lower pivot low. these would be the y coordinates for drawing a trendline. now i need the corresponding x coordinates from the arrays, but right now i can not get these values.

do i need to store these values in separate arrays(int instead of float), or can i get the corresponding bar_index from the existing array?

i am currently struggling storing correct pivot highs and lows into variables. in the example screenshot i am showing pivot highs and lows with length 3. i want to store the latest pivot low into variable i.e. P1. now i want to look back on the chart and store the next pivot low which is lower than P1 into a variable P2, but i have no clue how to code that.

here is the example screenshot: example Screenshot Gold 1H Chart

Thanks in advance.

Edit: Here is my code so far:

//@version=4
study("Arrays Test, only Float Values", title = "Arrays Test, only Float Values", overlay=true)

PivotLevel = input(3)

pivotHigh = pivothigh(PivotLevel, PivotLevel)
pivotLow = pivotlow(PivotLevel, PivotLevel)

Array_Size = 10

var H_Array = array.new_float(Array_Size, na)
var L_Array = array.new_float(Array_Size, na)

if not na(pivotHigh)
    array.push(H_Array, pivotHigh)
    array.shift(H_Array)
    
if not na(pivotLow)
    array.push(L_Array, pivotLow)
    array.shift(L_Array)

CurrentPivotHigh = array.get(H_Array, Array_Size - 1)
CurrentPivotLow = array.get(L_Array, Array_Size - 1)

// Find the previous higher pivot high
var float lastPivotHigh = na
for i = 0 to Array_Size - 1
    float pivot = array.get(H_Array, i)
    if not na(pivot) and (na(lastPivotHigh) or pivot > CurrentPivotHigh)
        lastPivotHigh := pivot

// Find the previous lower pivot low
var float lastPivotLow = na
for i = 0 to Array_Size - 1
    float pivot = array.get(L_Array, i)
    if not na(pivot) and (na(lastPivotLow) or pivot < CurrentPivotLow)
        lastPivotLow := pivot

// For debugging, plot a label with arrays as string
if barstate.islast
    label.new(
         bar_index, 0, 
         "Array H: " + tostring(H_Array) + 
         "\nArray L: " + tostring(L_Array) + 
         "\nCurrent Pivot High: " + tostring(CurrentPivotHigh) + 
         "   Current Pivot Low: " + tostring(CurrentPivotLow) + 
         "\nPrevious Higher Pivot High: " + tostring(lastPivotHigh) + 
         "   Previous Lower Pivot Low: " + tostring(lastPivotLow), 
         color=color.blue, textcolor=color.black, style=label.style_label_down)

it stores the last 10 pivot Highs and lows into arrays and draws a label to see the current High/Low and the previous higher pivot high/lower pivot low. these would be the y coordinates for drawing a trendline. now i need the corresponding x coordinates from the arrays, but right now i can not get these values.

do i need to store these values in separate arrays(int instead of float), or can i get the corresponding bar_index from the existing array?

Share Improve this question edited Mar 23 at 10:43 DoctorGremlin asked Mar 21 at 19:21 DoctorGremlinDoctorGremlin 13 bronze badges 1
  • Could you please share your code so that we can better understand the issue. – Gu5tavo71 Commented Mar 22 at 20:52
Add a comment  | 

1 Answer 1

Reset to default 0

So, i have solved it with the following code:

//@version=4
study("Arrays Test, Float and Int Values", title = "Arrays Test, Float and Int Values")

PivotLevel = input(3)

pivotHigh = pivothigh(PivotLevel, PivotLevel)
pivotLow = pivotlow(PivotLevel, PivotLevel)

Array_Size = 10

var H_Array = array.new_float(Array_Size, na)
var L_Array = array.new_float(Array_Size, na)
var H_Index_Array = array.new_int(Array_Size, na)
var L_Index_Array = array.new_int(Array_Size, na)

if not na(pivotHigh)
    array.push(H_Array, pivotHigh)
    array.push(H_Index_Array, bar_index - PivotLevel)
    array.shift(H_Array)
    array.shift(H_Index_Array)
    
if not na(pivotLow)
    array.push(L_Array, pivotLow)
    array.push(L_Index_Array, bar_index - PivotLevel)
    array.shift(L_Array)
    array.shift(L_Index_Array)

CurrentPivotHigh = array.get(H_Array, Array_Size - 1)
CurrentPivotHighIndex = array.get(H_Index_Array, Array_Size - 1)
CurrentPivotLow = array.get(L_Array, Array_Size - 1)
CurrentPivotLowIndex = array.get(L_Index_Array, Array_Size - 1)

// Find the previous higher pivot high
var float lastPivotHigh = na
var int lastPivotHighIndex = na
for i = 0 to Array_Size - 1
    float pivot = array.get(H_Array, i)
    int pivotIndex = array.get(H_Index_Array, i)
    if not na(pivot) and (na(lastPivotHigh) or pivot > CurrentPivotHigh)
        lastPivotHigh := pivot
        lastPivotHighIndex :=pivotIndex


// Find the previous lower pivot low
var float lastPivotLow = na
var int lastPivotLowIndex = na
for i = 0 to Array_Size - 1
    float pivot = array.get(L_Array, i)
    int pivotIndex = array.get(L_Index_Array, i)
    if not na(pivot) and (na(lastPivotLow) or pivot < CurrentPivotLow)
        lastPivotLow := pivot
        lastPivotLowIndex := pivotIndex

// For debugging, plot a label with arrays as string
if barstate.islast
    label.new(
         bar_index, 0, 
         "Array H: " + tostring(H_Array) + 
         "\nArray L: " + tostring(L_Array) + 
         "\nCurrent Pivot High: " + tostring(CurrentPivotHigh) + 
         "   Current Pivot Low: " + tostring(CurrentPivotLow) + 
         "\nCurrent Pivot High Index: " + tostring(CurrentPivotHighIndex) + 
         "   Current Pivot Low Index: " + tostring(CurrentPivotLowIndex) + 
         "\nPrevious Higher Pivot High: " + tostring(lastPivotHigh) + 
         "   Previous Lower Pivot Low: " + tostring(lastPivotLow) + 
         "\nPrevious Higher Pivot High Index: " + tostring(lastPivotHighIndex) +
         "   Previous Lower Pivot Low Index: " + tostring(lastPivotLowIndex),          
         color=color.blue, textcolor=color.black, style=label.style_label_down)
发布评论

评论列表(0)

  1. 暂无评论