Session 修改Fib脚本以遇到会话
我需要根据会话“1700-1700”调整以下脚本(©TradeChart),我不确定如何以正确的方式输入时间公式。。它设置为每天使用,但这并不能解决我的问题 2第二个需要是调整到两个时段,如果61,8超过15点 第一个问题是最紧迫的 非常感谢您的帮助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
// 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,诅咒