Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 修改Fib脚本以遇到会话_Session_Fibonacci_Pine Script - Fatal编程技术网

Session 修改Fib脚本以遇到会话

Session 修改Fib脚本以遇到会话,session,fibonacci,pine-script,Session,Fibonacci,Pine Script,我需要根据会话“1700-1700”调整以下脚本(©TradeChart),我不确定如何以正确的方式输入时间公式。。它设置为每天使用,但这并不能解决我的问题 2第二个需要是调整到两个时段,如果61,8超过15点 第一个问题是最紧迫的 非常感谢您的帮助 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © TradeChar

我需要根据会话“1700-1700”调整以下脚本(©TradeChart),我不确定如何以正确的方式输入时间公式。。它设置为每天使用,但这并不能解决我的问题

2第二个需要是调整到两个时段,如果61,8超过15点

第一个问题是最紧迫的

非常感谢您的帮助

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

//@version=4
study("Fib Retracement", overlay=true, max_bars_back=5000)


Fibs            = input("Plot Fibs based on Lookback", options = ["Plot Fibs based on Lookback", "Plot Fibs based on Price Input"], title = "Fibonacci Plot Type")

FIBS            = Fibs == "Plot Fibs based on Lookback"?1:Fibs == "Plot Fibs based on Price Input"?2:na

Foption         = input(defval = "1. Candles" , title = "Fibonacci Plot Lookback Type", options=["2. Days", "1. Candles"]) 
FP              = input(defval =     100 , title = "Days/Candles to Lookback") 
Reverse         = input(defval =  false , title = "Reverse Fibonacci Levels?")
ExtraFibs       = input(false, "Show 0.886 and 1.113 Fibs")


Note            = input(true, "════ I've created this:

//@version=4
study("Fib Retracement", overlay=true, max_bars_back=5000)

var int     sessionStartHour = input(17,    "Session start hour (UTC)",   input.integer)
var bool    extendLeft       = input(false, "Fib line extend left",       input.bool)
var bool    extendRight      = input(false, "Fib line extend right",      input.bool)
var float   fibBreakLevel    = input(61.80, "Fib break level",            input.float)
var int     fibBreakDistance = input(10,    "Level break distance (ticks)", input.integer)

var float   fibBreakLevelPrice = na
var string  extendType       = extendLeft and extendRight ? extend.both : extendRight ? extend.right :  extendLeft ? extend.left : extend.none
var float   curSessionHi     = na
var float   curSessionLo     = na
var float   prevSessionHi    = na
var float   prevSessionLo    = na
var int     curHour          = na
var int     curBarIndexHi    = na
var int     curBarIndexLo    = na
var int     prevBarIndexHi   = na
var int     prevBarIndexLo   = na
var int     fibLevelCount    = na
var bool    lowFirst         = na
var int     fibStartBar      = na
var         arrFibLevels     = array.new_float()
var         arrFibColors     = array.new_color()
var bool    levelBroken      = na

var l0 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l1 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l2 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l3 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l4 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l5 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l6 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l7 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l8 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var l9 = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)

f_moveLine(_id, _x, _y, _color) =>
    line.set_xy1(_id, _x, _y)
    line.set_xy2(_id, bar_index, _y)
    line.set_color(_id, _color)

fib_setLevels() =>
    array.clear(arrFibLevels)
    array.push(arrFibLevels,  00.00), array.push(arrFibColors, color.green)
    array.push(arrFibLevels,  23.60), array.push(arrFibColors, color.blue)
    array.push(arrFibLevels,  38.20), array.push(arrFibColors, color.blue)
    array.push(arrFibLevels,  50.00), array.push(arrFibColors, color.blue)
    array.push(arrFibLevels,  61.80), array.push(arrFibColors, color.yellow)
    array.push(arrFibLevels,  78.60), array.push(arrFibColors, color.blue)
    array.push(arrFibLevels, 100.00), array.push(arrFibColors, color.red)
    array.size(arrFibLevels)

fib_retrace(_startBar, _levelLo, _levelHi, _lowFirst) => 
    var float level0   = na
    var float level    = na
    var line  ln       = na
    var int   dir      = na
    var color fibColor = na
    var float breakPrice = na
    var float fibLevel = na

    dir := _lowFirst ? 1 : -1
    fibRange = abs(_levelHi - _levelLo)
    level0 := _lowFirst ? _levelLo : _levelHi
    
    for i = 0 to fibLevelCount-1
        ln       := i==0 ? l0 : i==1 ? l1 : i==2 ? l2 : i==3 ? l3 : i==4 ? l4 : i==5 ? l5 : i==6 ? l6 : i==7 ? l7 : i==8 ? l8 : i==9 ? l9 : na
        fibLevel := array.get(arrFibLevels, i)
        level    := level0 + (dir * fibRange * fibLevel/100)
        
        if (fibLevel == fibBreakLevel)
            breakPrice := level
        
        fibColor := array.get(arrFibColors, i)
        f_moveLine(ln, _startBar, level, fibColor)
        
    breakPrice

if barstate.isfirst
    fibLevelCount := fib_setLevels()
    
curHour := hour(time, 'UTC')
newSession = (curHour == sessionStartHour) and change(curHour)

if newSession

    prevSessionHi  := curSessionHi
    prevSessionLo  := curSessionLo
    prevBarIndexHi := curBarIndexHi
    prevBarIndexLo := curBarIndexLo

    lowFirst       := prevBarIndexLo < prevBarIndexHi
    fibStartBar    := lowFirst ? prevBarIndexLo : prevBarIndexHi

    curSessionLo   := na
    curSessionHi   := na
    curBarIndexHi  := na
    curBarIndexLo  := na
    levelBroken    := na

// Draw fibs for prev session
fibBreakLevelPrice := fib_retrace(fibStartBar, prevSessionLo, prevSessionHi, lowFirst)

if lowFirst
    levelBroken := close > (fibBreakLevelPrice + (fibBreakDistance * syminfo.mintick))
else    
    levelBroken := close < (fibBreakLevelPrice - (fibBreakDistance * syminfo.mintick))

curSessionHi  := max(high, nz(curSessionHi))
curSessionLo  := min(low,  nz(curSessionLo, 1.0e23))
curBarIndexHi := change(curSessionHi) ? bar_index : curBarIndexHi
curBarIndexLo := change(curSessionLo) ? bar_index : curBarIndexLo

if levelBroken
    prevSessionHi  := max(prevSessionHi, curSessionHi)
    prevSessionLo  := min(prevSessionLo, curSessionLo)

// Debug section
// plotchar(prevSessionLo, "prevSessionLo", "")
// plotchar(prevSessionHi, "prevSessionHi", "")
// plotchar(prevBarIndexLo, "prevBarIndexLo", "")
// plotchar(prevBarIndexHi, "prevBarIndexHi", "")
// plotchar(curBarIndexLo, "curBarIndexLo", "")
// plotchar(curBarIndexHi, "curBarIndexHi", "")
// plotchar(lowFirst, "lowFirst", "")
// plotchar(bar_index, "bar_index", "")
// plotchar(fibStartBar, "fibStartBar", "")
// plotchar(fibBreakLevelPrice, "fibBreakLevelPrice", "")
// plotchar(levelBroken, "levelBroken", "")

bgcolor(newSession ? color.yellow : na)
//此源代码受Mozilla公共许可证2.0的条款约束,位于https://mozilla.org/MPL/2.0/
//©贸易图表师
//@版本=4
研究(“Fib回撤”,叠加=true,最大钢筋数=5000)
Fibs=input(“基于回溯的绘图Fibs”,选项=[“基于回溯的绘图Fibs”,“基于价格输入的绘图Fibs”],title=“斐波那契绘图类型”)
FIBS=FIBS==“基于回望绘制FIBS”?1:FIBS==“基于价格输入绘制FIBS”?2:na
Foption=input(deffal=“1.Candles”,title=“Fibonacci绘图回溯类型”,选项=[“2.Days”,“1.Candles”])
FP=输入(defval=100,title=“回望的天数/蜡烛”)
反向=输入(deffal=false,title=“反向斐波那契水平?”)
ExtraFibs=输入(假,“显示0.886和1.113个Fibs”)
注=输入(真)════  我创造了这个:

//@version=4
study("Fib retr 4", overlay=true, max_bars_back=5000)
// study("Fib retr 4", overlay=true)

// ======== INPUTS ========
// {
var bool    i_extend_left           = input(false,  "Fib line extend left",     input.bool)
var bool    i_extend_right          = input(false,  "Fib line extend right",    input.bool)
var float   i_fib_break_level       = input(61.80,  "Fib break level",          input.float)
var float   i_fib_break_margin      = input(00.00,  "Fib break margin",         input.float)
// } === END INPUTS ===

// ======== VARIABLES ========
// {
var bool    newSession              = na
var string  extendType              = i_extend_left and i_extend_right ? extend.both : i_extend_right ? extend.right :  i_extend_left ? extend.left : extend.none
var int     sessionsBack            = 0
var int     max_keep_sessions       = 100

var float[] arr_fib_levels          = array.new_float()
var color[] arr_fib_colors          = array.new_color()
var float[] arr_fib_draw_coords     = array.new_float() // (x1, y1, x2, y2)

var line    l0                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l1                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l2                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l3                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l4                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l5                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l6                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l7                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l8                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)
var line    l9                      = line.new(x1=na, y1=na, x2=na, y2=na, extend=extendType)

var float   fibLevelToBreak         = na
var bool    fibLevelBroken          = na

var int[] arrNewSessionBars = array.new_int(na)
var int barsBack = na

// } === END VARIABLES ===

// ========= FUNCTIONS =========
// {
f_move_horizontal_line(_line_id, _bar_start, _level, _bar_stop, _color) =>
// {
    line.set_xy1(_line_id, _bar_start, _level)
    line.set_xy2(_line_id, _bar_stop,  _level)
    line.set_color(_line_id, _color)
// }

// Initializes fibonacci levels and colors.
f_fib_init_levels(_arr_fib_levels, _arr_fib_colors) =>
// {
    array.clear(_arr_fib_levels)
    array.push(_arr_fib_levels,  00.00), array.push(_arr_fib_colors, color.green)
    // array.push(_arr_fib_levels,  23.60), array.push(_arr_fib_colors, color.blue)
    // array.push(_arr_fib_levels,  38.20), array.push(_arr_fib_colors, color.blue)
    // array.push(_arr_fib_levels,  50.00), array.push(_arr_fib_colors, color.blue)
    array.push(_arr_fib_levels,  61.80), array.push(_arr_fib_colors, color.yellow)
    // array.push(_arr_fib_levels,  78.60), array.push(_arr_fib_colors, color.blue)
    array.push(_arr_fib_levels, 100.00), array.push(_arr_fib_colors, color.red)
// }

// Retrieves the direction of the fibonacci retracement for the given coords (point1, point2)
f_fib_get_direction_for_coords(_x1, _y1, _x2, _y2) => (_y1 < _y2) ? -1 : (_y1 > _y2) ? 1 : 0

// Retrieves the zero level of the fibonacci retracement for the given coords (point1, point2)
f_fib_get_level_zero_for_coords(_x1, _y1, _x2, _y2) => _y2

// Retrieves specifications from a fibonacci retracement for the given coords (point1, point2)
f_fib_get_specs_for_coords(_x1, _y1, _x2, _y2) =>
// {
    fib_range       = abs(_y1 - _y2)
    fib_direction   = f_fib_get_direction_for_coords(_x1, _y1, _x2, _y2)
    fib_level_zero  = f_fib_get_level_zero_for_coords(_x1, _y1, _x2, _y2)
    [fib_range, fib_direction, fib_level_zero]
// }

// Draws a fibonacci retracement with given coordinates.
f_fib_draw_coords(_x1, _y1, _x2, _y2, _x_stop) =>
// {
    // Fib is drawn from point1 to point2. Point1 = 100%-level, Point2 = 0%-level.
    var int fib_linecount = array.size(arr_fib_levels)

    if not fib_linecount
        f_fib_init_levels(arr_fib_levels, arr_fib_colors)
        fib_linecount := array.size(arr_fib_levels)

    [fib_range, fib_direction, fib_level_zero] = f_fib_get_specs_for_coords(_x1, _y1, _x2, _y2)
    
    fib_x_start     = min(_x1, _x2)
    fib_x_stop      = max(max(_x1, _x2), nz(_x_stop) ? _x_stop : bar_index)
    
    for i = 0 to fib_linecount-1
        fib_line    = i==0 ? l0 : i==1 ? l1 : i==2 ? l2 : i==3 ? l3 : i==4 ? l4 : i==5 ? l5 : i==6 ? l6 : i==7 ? l7 : i==8 ? l8 : i==9 ? l9 : na
        fib_level   = fib_level_zero + (fib_direction * fib_range * array.get(arr_fib_levels, i) / 100)
        fib_color   = array.get(arr_fib_colors, i)
        f_move_horizontal_line(fib_line, fib_x_start, fib_level, fib_x_stop, fib_color)
// }

// Retrieves the value of the requested fib level for the given coords (point1, point2)
f_fib_get_level_value_for_coords(_requested_fib_level, _x1, _y1, _x2, _y2) =>
// {
    [fib_range, fib_direction, fib_level_zero] = f_fib_get_specs_for_coords(_x1, _y1, _x2, _y2)
    fib_level = fib_level_zero + (fib_direction * fib_range * _requested_fib_level/100)
// }

// f_getHiLoCoords(_sessionsBack) =>
f_getHiLoCoords(_len) =>
    lo      = lowest(_len)
    hi      = highest(_len)
    bar_lo  = bar_index + lowestbars(_len)
    bar_hi  = bar_index + highestbars(_len)
    if bar_lo < bar_hi
        [bar_lo, lo, bar_hi, hi]
    else
        [bar_hi, hi, bar_lo, lo]

f_setFibDrawCoords(_barsBack) =>
    [x1, y1, x2, y2] = f_getHiLoCoords(_barsBack)
    array.clear(arr_fib_draw_coords)
    array.push(arr_fib_draw_coords, x1), array.push(arr_fib_draw_coords, y1)
    array.push(arr_fib_draw_coords, x2), array.push(arr_fib_draw_coords, y2)

f_getFibDrawCoords() =>
    x1 = int(array.get(arr_fib_draw_coords, 0)), y1 = array.get(arr_fib_draw_coords, 1)
    x2 = int(array.get(arr_fib_draw_coords, 2)), y2 = array.get(arr_fib_draw_coords, 3)
    [x1, y1, x2, y2]

f_fib_draw(_x_stop) =>
    [x1, y1, x2, y2] = f_getFibDrawCoords()
    f_fib_draw_coords(x1, y1, x2, y2, _x_stop)
    
f_fib_get_level_value(_level) =>
    [x1, y1, x2, y2] = f_getFibDrawCoords()
    f_fib_get_level_value_for_coords(_level, x1, y1, x2, y2)

f_get_bars_back(_sessionsBack) =>
    arrSize = array.size(arrNewSessionBars)
    result = bar_index - (arrSize > 0 ? array.get(arrNewSessionBars, min(_sessionsBack, arrSize ? arrSize-1 : 0)) : bar_index) + 1 // number of bars to look back for high/low
// } ==== END FUNCTIONS ====


// ======== MAIN ========
// {
newSession  := change(time("D"))

if newSession
    array.unshift(arrNewSessionBars, bar_index) // Most recent addition always at index 0
    if array.size(arrNewSessionBars) > max_keep_sessions
        array.pop(arrNewSessionBars) // remove last element
    sessionsBack := 0

f_setFibDrawCoords(f_get_bars_back(sessionsBack))

fibLevelToBreak := f_fib_get_level_value(i_fib_break_level)
fibLevelBroken  := cross(close, fibLevelToBreak - i_fib_break_margin) or cross(close, fibLevelToBreak + i_fib_break_margin)

if fibLevelBroken
    sessionsBack := sessionsBack + 1
    
f_fib_draw(bar_index)

// } === END MAIN ===

// ======== DEBUG ========
// {
// plotchar(bar_index, "bar_index", "")
// plotchar(myFibLevel64, "myFibLevel64", "")
// plotchar(myFibLevelBroken, "myFibLevelBroken", "")
// plotchar(barsBack, "barsBack", "")
// plot(myFibLevel64)
// bgcolor(newSession ? color.white : na, 70)
// } === END DEBUG === 
/@version=4
研究(“Fib回撤”,叠加=true,最大钢筋数=5000)
var int sessionStartHour=input(17,“会话开始时间(UTC)”,input.integer)
var bool extendLeft=input(false,“Fib行向左扩展”,input.bool)
var bool extendRight=input(false,“Fib行向右扩展”,input.bool)
var float FIBREAKLEVEL=输入(61.80,“Fib中断级别”,input.float)
var int fibreakdistance=input(10,“电平中断距离(刻度)”,input.integer)
var浮动价格=不适用
var string extendType=extendLeft和extendRight?extend.两者:extendRight?extend.right:extendLeft?extend.left:extend.none
var float curSessionHi=na
var float CURSENSIONLO=na
var float PREVESSIONHI=na
var float PREVESSIONLO=na
var int curHour=na
var int curBarIndexHi=na
var int curBarIndexLo=na
变量int prevBarIndexHi=na
变量int prevBarIndexLo=na
var int fibLevelCount=na
var bool lowFirst=na
var int fibStartBar=na
var arrFibLevels=array.new_float()
var arrFibColors=array.new_color()
var bool LevelBreaked=na
变量l0=行。新建(x1=na,y1=na,x2=na,y2=na,extend=extendType)
变量l1=line.new(x1=na,y1=na,x2=na,y2=na,extend=extendType)
变量l2=line.new(x1=na,y1=na,x2=na,y2=na,extend=extendType)
变量l3=行。新建(x1=na,y1=na,x2=na,y2=na,extend=extendType)
变量l4=line.new(x1=na,y1=na,x2=na,y2=na,extend=extendType)
变量l5=行。新建(x1=na,y1=na,x2=na,y2=na,extend=extendType)
var l6=line.new(x1=na,y1=na,x2=na,y2=na,extend=extendType)
var l7=行。新建(x1=na,y1=na,x2=na,y2=na,extend=extendType)
var l8=行。新建(x1=na,y1=na,x2=na,y2=na,extend=extendType)
变量l9=行。新建(x1=na,y1=na,x2=na,y2=na,extend=extendType)
f_moveLine(_id,_x,_y,_color)=>
行。设置\u xy1(\u id,\u x,\u y)
行。设置xy2(\u id,bar\u index,\u y)
行。设置颜色(\u id,\u颜色)
fib_setLevels()=>
数组。清除(arrFibLevels)
array.push(arrFibLevels,00.00),array.push(arrFibColors,color.green)
array.push(arrFibLevels,23.60),array.push(arrFibColors,color.blue)
array.push(arrFibLevels,38.20),array.push(arrFibColors,color.blue)
array.push(arrFibLevels,50.00),array.push(arrFibColors,color.blue)
array.push(arrFibLevels,61.80),array.push(arrFibColors,color.yellow)
array.push(arrFibLevels,78.60),array.push(arrFibColors,color.blue)
array.push(arrFibLevels,100.00),array.push(arrFibColors,color.red)
array.size(数组级别)
光纤回程(_startBar,_levelLo,_levelHi,_lowFirst)=>
var浮动级别0=na
var浮动水平=na
变量线ln=na
var int dir=na
var color FIBCLOR=na
var浮动价格=na
var浮动水平=na
dir:=\u lowFirst?1:-1
纤维长度=abs(\u levelHi-\u levelLo)
级别0:=\u lowFirst?\u levelLo:\u levelHi
对于i=0到fibLevelCount-1
ln:i==0?l0:i==1?l1:i==2?l2:i==3?l3:i==4?l4:i==5?l5:i==6?l6:i==7?l7:i==8?l8:i==9?l9:na
fibLevel:=array.get(arrFibLevel,i)
级别:=级别0+(方向*纤维范围*纤维级别/100)
如果(fibLevel==fibBreakLevel)
底价:=水平
fibColor:=array.get(arrFibColors,i)
f_移动线(ln、_起始栏、标高、颜色)
底价
如果barstate.isfirst
fibLevelCount:=fib_setLevels()
curHour:=小时(时间“UTC”)
newSession=(curHour==会话开始时间)和change(curHour)
如果新闻会话
PrevisionHi:=curSessionHi
PrevisionLo:=curSessionLo
prevBarIndexHi:=curBarIndexHi
prevBarIndexLo:=curBarIndexLo
lowFirst:=prevBarIndexLo(fibBreakLevelPrice+(fibBreakDistance*symininfo.mintick))
其他的
LevelBreaked:=关闭<(fibBreakLevelPrice-(fibBreakDistance*symininfo.mintick))
curSessionHi:=最大值(高,新西兰(curSessionHi))
curSessionLo:=最小值(低,新西兰(curSessionLo,1.0e23))
curBarIndexHi:=变更(curSessionHi)?条形图索引:curBarIndexHi
curBarIndexLo:=变更(curSessionLo)?条形图索引:curBarIndexLo
如果水平仪损坏
prevSessionHi:=最大值(prevSessionHi,诅咒