簡體   English   中英

1sec圖表上的tradingview pinescript 15min數據不能在安全function中使用可變變量作為參數

[英]tradingview pinescript 15min data on 1sec chart cannot use mutable variable in security function as an argument

我需要在 1 秒圖表上使用這個指標,並從 15 分鍾圖表中獲取數據。 我嘗試使用安全 function,但這給了我這個錯誤:不能使用可變變量作為安全函數的參數”

//@version=4

////////
// Fetch Ingredients 
// [
Depth       = input(7, "Depth", input.integer, minval=1, step=1)
Deviation   = input(5, "Deviation", input.integer, minval=1, step=1)
Backstep    = input(2, "Backstep", input.integer, minval=2, step=1)
line_thick  = input(2, "Line Thickness", input.integer, minval=1, maxval=4)
upcolor     = input(color.lime, "Bull Color")
dncolor     = input(color.red, "Bear Color")
repaint     = input(true, "Repaint Levels")
// ]


//////// 
// Bake
// [
var last_h = 1, last_h := last_h + 1
var last_l = 1, last_l := last_l + 1
var lw = 1, var hg = 1
lw := lw + 1, hg := hg + 1
p_lw = -lowestbars(Depth), p_hg = -highestbars(Depth)
lowing = lw == p_lw or low - low[p_lw] > Deviation*syminfo.mintick
highing = hg == p_hg or high[p_hg] - high > Deviation*syminfo.mintick
lh = barssince(not highing[1]), ll = barssince(not lowing[1])
down = barssince(not (lh > ll)) >= Backstep, lower = low[lw] > low[p_lw], higher = high[hg] < high[p_hg]
if lw != p_lw and (not down[1] or lower)
    lw := p_lw < hg ? p_lw : 0
if hg != p_hg and (down[1] or higher)
    hg := p_hg < lw ? p_hg : 0

line zz = na
label point = na
x1 = down ? lw : hg
y1 = down ? low[lw] : high[hg]

if down == down[1]
    if repaint
        label.delete(point[1])
        line.delete(zz[1])
    down
if down != down[1]
    if down
        last_h := hg
    else
        last_l := lw
    if not repaint
        nx = down?last_h:last_l
        zz := line.new(bar_index-nx, down ? high[nx] : low[nx], bar_index-(down?last_l:last_h), down ? low[last_l] : high[last_h], width=line_thick, color=down?upcolor:dncolor)
        point := label.new(bar_index-nx, down ? high[nx] : low[nx], down ? (high[nx] > high[last_h[1]]?"HH":"LH") : (low[nx] < low[last_l[1]] ? "LL" : "HL"), style=down?label.style_label_down:label.style_label_up, size=size.tiny, color=down?dncolor:upcolor, textcolor=color.black, tooltip = down ? (high[nx] > high[last_h[1]]?"Higher High":"Lower High") : (low[nx] < low[last_l[1]] ? "Lower Low" : "Higher Low"))
    down
if repaint
    zz := line.new(bar_index-(down?last_h:last_l), down ? high[last_h] : low[last_l], bar_index-x1, y1, width=line_thick, color=down?dncolor:upcolor)
    point := label.new(bar_index-x1, y1, down ? (low[x1] < low[last_l] ? "LL" : "HL") : (high[x1] > high[last_h]?"HH":"LH"), style=down?label.style_label_up:label.style_label_down, size=size.tiny, color=down?upcolor:dncolor, textcolor=color.black, tooltip = down ? (low[x1] < low[last_l] ? "Lower Low" : "Higher Low") : (high[x1] > high[last_h]?"Higher High":"Lower High"))
// ]

我真正需要的只是指標中的這個邏輯

low[x1] > low[last_l]

我不能簡單地將深度從 7 更改為 6300 來獲得我想要的結果,因為要處理的蠟燭太多了。 所以我嘗試使用安全 function,但無法使其正常工作。

我將非常感謝您的幫助。

您在這里有兩個問題:

  1. last_l變量是可變的(使用:=重新分配),因此需要將其計算封裝在 function 中,然后可以使用security()調用該變量。
  2. 這是最重要的問題。 您正在計算柱線偏移量,但 HTF 的柱線偏移量無法在圖表的時間范圍內轉換。 在 1S 時,15 分鍾時 10 條的偏移量是什么意思? 無法判斷,因為在圖表分辨率下 15 分鍾 TF 的 1S 膨脹中會有不同數量的柱。

像 MTF Ichimokus 或 pivot 腳本這樣的腳本總是會遇到問題 #2。 沒有完美的方法來解決這個難題。此 MTF pivot 腳本顯示了如何回顧圖表的過去條形以查找 HTF 中標識的 pivot 值的最接近值。 這是一種妥協,可能不適用於所有情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM