← К каталогу
Исходный код · ID 3817

2:1 strategy with signals

2 to 1 strategy with signals.pine

Похожие материалы по тегам

fresh algo signals & overlays v25_6334471093901859175.pineTradingView · 4 общих теговfresh algo v24 tradingview indicator_5918156155804195406.pineTradingView · 4 общих теговday trading.mq4MQL4 / MetaTrader 4 · 4 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 3 общих теговpro +.pineTradingView · 3 общих теговofada_gold_trader_v230.mq5MQL5 / MetaTrader 5 · 3 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Мультифункциональный индикатор-оверлей для TradingView, объединяющий несколько аналитических модулей в одном скрипте. Определяет точки разворота (пивоты) и маркирует более высокие/более низкие экстремумы (HH, LH, HL, LL). Строит каналы тренда на основе усреднённого значения и полос ATR, а также отображает уровни Фибоначчи для завершённых сессий. Генерирует сигналы на покупку и продажу с использованием супертренда, скользящих средних и дополнительных фильтров. Включает систему управления рисками с уровнями стоп-лосс, тейк-профита и трейлинг-стоп-лосс, а также визуализацию зон консолидации, ордер-блоков и уровней поддержки/сопротивления.

Настройки программы

НастройкаОписание
srcH Источник для пивот-хай — Источник данных для расчёта пивотных максимумов (по умолчанию High).
leftLenH Левая длина пивот-хай — Количество баров слева для подтверждения пивотного максимума.
rightLenH Правая длина пивот-хай — Количество баров справа для подтверждения пивотного максимума.
colorH Цвет пивот-хай — Цвет маркеров пивотных максимумов.
srcL Источник для пивот-ло — Источник данных для расчёта пивотных минимумов (по умолчанию Low).
leftLenL Левая длина пивот-ло — Количество баров слева для подтверждения пивотного минимума.
rightLenL Правая длина пивот-ло — Количество баров справа для подтверждения пивотного минимума.
colorL Цвет пивот-ло — Цвет маркеров пивотных минимумов.
showhh Показать HH LH HL LL — Включает отображение маркеров более высоких и более низких экстремумов на графике.
maxBarsBack Максимум баров для отображения — Ограничение количества баров, на которых отображаются пивоты (0 — все бары).
showLabelsPriceScaleInput Показать подписи на шкале цены — Отображает подписи маркеров на шкале цены графика.
sess1Hour Час начала сессии — Час начала торговой сессии для отрисовки горизонтальных линий.
sess1Minute Минута начала сессии — Минута начала торговой сессии.
extendHours Продолжительность горизонтальных линий — Сколько часов продолжать горизонтальные линии сессии.
color_up Цвет роста — Цвет для отображения бычьих элементов и свечей роста.
color_dn Цвет падения — Цвет для отображения медвежьих элементов и свечей падения.
horaSeleccionada Час анализа — Час (в 24-часовом формате) свечи, для которой рассчитываются уровни деления.
minutoSeleccionado Минута анализа — Минута свечи, для которой рассчитываются уровни деления.
diferenciaUTC Смещение UTC — Разница во времени с UTC в часах для определения локального времени свечи.
colorTercio1 Цвет первой трети — Цвет заливки верхней трети свечи.
colorTercio2 Цвет второй трети — Цвет заливки средней трети свечи.
colorTercio3 Цвет третьей трети — Цвет заливки нижней трети свечи.
showTrendLevels Показать уровни тренда — Включает отображение канала трендовых уровней (поддержка, сопротивление, средняя).
mult2 Множитель — Множитель для расчёта полос канала тренда на основе ATR.
slope Наклон — Параметр наклона для расчёта среднего тренда.
colUp Цвет верхней линии — Цвет линий верхней поддержки в канале тренда.
colMa Цвет средней линии — Цвет средней линии канала тренда.
colDn Цвет нижней линии — Цвет линий нижнего сопротивления в канале тренда.
time_zone_offset Смещение часового пояса — Смещение UTC для пересчёта времени сессий в локальный часовой пояс.
session_start_hour Час начала сессии Фиб — Час начала сессии для расчёта уровней Фибоначчи.
session_start_minute Минута начала сессии Фиб — Минута начала сессии для расчёта уровней Фибоначчи.
session_end_hour Час окончания сессии Фиб — Час окончания сессии для расчёта уровней Фибоначчи.
session_end_minute Минута окончания сессии Фиб — Минута окончания сессии для расчёта уровней Фибоначчи.
fib_line_width Толщина линий Фиб — Толщина линий уровней Фибоначчи.
line_offset Смещение подписей Фиб — Расстояние подписей уровней Фибоначчи от линии.
background_color Цвет фона сессии — Цвет фона для выделения активной торговой сессии.
themeMode Цветовая тема — Выбор цветовой темы интерфейса: тёмная, светлая или пользовательская.
customLongColor Цвет быстрой SMA и сигнала покупки — Пользовательский цвет для быстрой скользящей средней и сигналов на покупку.
customShortColor Цвет медленной SMA и сигнала продажи — Пользовательский цвет для медленной скользящей средней и сигналов на продажу.
customTableText Цвет текста таблицы — Цвет текста в информационной таблице.
customTableBg Цвет фона таблицы — Цвет фона ячеек информационной таблицы.
customTableHeader Цвет заголовка таблицы — Цвет фона заголовка информационной таблицы.
enableDashboard Включить панель — Включает или отключает отображение информационной панели на графике.
locationDashboard Расположение панели — Позиция информационной панели на графике.
sizeDashboard Размер панели — Размер информационной панели.
colorBackground Фон панели — Цвет фона информационной панели.
colorFrame Рамка панели — Цвет рамки информационной панели.
colorBorder Граница панели — Цвет границы информационной панели.
showSignals Показать сигналы — Включает отображение сигналов покупки и продажи на графике.
strategy Режим стратегии — Выбор режима расчёта сигналов: обычный или трендовый скальпер.
sensitivity Чувствительность — Параметр чувствительности для определения смены направления тренда.
consSignalsFilter Фильтр сигналов консолидации — Фильтрует сигналы, показывая только те, которые совпадают с зонами консолидации.
StrongSignalsOnly Только сильные сигналы — Отображает только сигналы, подтверждённые дополнительными условиями.
candleColors Цвет свечей — Включает окрашивание свечей в соответствии с направлением сигнала.
momentumCandles Свечи импульса — Включает выделение свечей с импульсным движением.
highVolSignals Только сигналы с высоким объёмом — Фильтрует сигналы, показывая только те, которые сопровождаются высоким объёмом.
enableTrailingSL Включить трейлинг-стоп — Включает отслеживание трейлинг-стоп-лосса по цене.
usePercSL Процентный трейлинг-стоп — Использует процентное значение для расчёта трейлинг-стоп-лосса.
percTrailingSL Процент трейлинг-стопа — Процент от цены для расчёта трейлинг-стоп-лосса.
enableSwings Включить свинг-маркеры — Отображает подписи свинг-хай и свинг-ло на графике.
periodSwings Период свинг-анализа — Период для определения свинг-хай и свинг-ло.
enableTpSlAreas Включить зоны TP/SL — Отображает горизонтальные линии и подписи уровней стоп-лосс и тейк-профита.
useTP1 Использовать TP1 — Включает отображение первого уровня тейк-профита.
multTP1 Множитель TP1 — Множитель расстояния для первого уровня тейк-профита.
useTP2 Использовать TP2 — Включает отображение второго уровня тейк-профита.
multTP2 Множитель TP2 — Множитель расстояния для второго уровня тейк-профита.
useTP3 Использовать TP3 — Включает отображение третьего уровня тейк-профита.
multTP3 Множитель TP3 — Множитель расстояния для третьего уровня тейк-профита.
tslLabels Подписи трейлинг-стопа — Включает отображение подписей трейлинг-стоп-лосса на графике.
showTrendCloud Показать облачко тренда — Включает отображение облачка тренда на основе супертренда.
periodTrendCloud Период облачка тренда — Выбор периода расчёта облачка тренда: краткосрочный, долгосрочный или новый.
signalsTrendCloud Только трендовые сигналы — Фильтрует сигналы, показывая только те, которые совпадают с направлением тренда.
fastTrendCloud Быстрое облачко тренда — Использует ускоренное расчётное облако тренда.
fastTrendCloudLen Длина быстрого облачка — Длина периода для быстрого расчёта облачка тренда.
enableAutoTrend Включить автоматические трендовые линии — Отрисовывает автоматические трендовые линии по каналу.
srcTrendChannel Источник канала тренда — Источник данных для расчёта трендового канала.
lenTrendChannel Длина канала тренда — Длина цикла для расчёта трендового канала.
enableSR Включить поддержку и сопротивление — Отображает уровни поддержки и сопротивления на основе пивотов.
lineSrStyle Стиль линий поддержки/сопротивления — Стиль линий уровней поддержки и сопротивления.
lineSrWidth Толщина линий поддержки/сопротивления — Толщина линий уровней поддержки и сопротивления.
showCons Показать зоны консолидации — Включает отображение зон консолидации на графике.
lbPeriod Период отката — Количество баров для определения максимумов и минимумов при поиске консолидации.
lenCons Минимальная длина консолидации — Минимальное количество баров для подтверждения зоны консолидации.
paintCons Заливка зоны консолидации — Заливает область консолидации на графике цветом.
colorZone Цвет зоны консолидации — Цвет заливки зоны консолидации.
box_ob Показать ордер-блоки — Включает отображение ордер-блоков (зон поглощения) на графике.
box_hide_gray Скрыть серые блоки — Скрывает серые (протестированные) ордер-блоки.
bos_type Тип триггера MSB — Тип свечи, используемой для определения триггера блока: по высокому/низкому или по открытию/закрытию.
box_sv Показать блоки спроса — Отрисовывает блоки спроса (оранжевые) на графике.
box_test_delay Задержка тестирования блока — Количество баров задержки для подтверждения тестирования блока.
box_fill_delay Задержка заполнения блока — Количество баров задержки для подтверждения заполнения блока.
box_test_sv Затемнять протестированные блоки — Затемняет блоки, которые были протестированы ценой.
box_stop_sv Остановить отрисовку заполненных блоков — Прекращает отображение блоков после их заполнения ценой.
periodInput Длина Гауссова фильтра — Период для расчёта коэффициента Гауссова фильтра.
polesInput Порядок фильтра — Порядок (полюса) Гауссова фильтра, влияющий на сглаживание.
linreglen Длина сглаживания — Длина линейной регрессии для дополнительного сглаживания.
linregoffset Множитель сглаживания — Смещение для сглаживания выходной линии фильтра.
en_table Включить таблицу — Включает отображение таблицы дополнительных таймфреймов.
table_size Размер таблицы — Размер таблицы дополнительных таймфреймов.
t1 Таймфрейм 1 — Первый дополнительный таймфрейм для анализа.
Получить полный код

Поиск по коду файла

indicator(title = '2:1 strategy with signals', overlay = true, max_labels_count=500, max_lines_count=200, max_boxes_count=200)

srcParams = 'Pivot Source | Left Length | Right Length'
srcH = input.source(high, title = 'High', inline = 'Pivot High', group = srcParams)
leftLenH = input.int(title = '', defval = 4, minval = 0, inline = 'Pivot High', group = srcParams)
rightLenH = input.int(title = '', defval = 2, minval = 0, inline = 'Pivot High', group = srcParams)
colorH = input.color(title = '', defval = color.new(color.teal, 50), inline = 'Pivot High', group = srcParams)

srcL = input.source(low, title = 'Low', inline = 'Pivot Low', group = srcParams)
leftLenL = input.int(title = '', defval = 4, minval = 0, inline = 'Pivot Low', group = srcParams)
rightLenL = input.int(title = '', defval = 2, minval = 0, inline = 'Pivot Low', group = srcParams)
colorL = input.color(title = '', defval = color.new(color.red, 50), inline = 'Pivot Low', group = srcParams)

markDisplay = 'Pivots Markers'
tip2 = "Higher High\nLower High\nHigher Low\nLower Low"
showhh = input.bool(false, 'Show HH LH HL LL', inline = '1', group = markDisplay, tooltip = tip2)

settings = 'Others'
maxBarsBack = input.int(0, 'Maximum Bars to Display (0 = All)', minval = 0, group = settings)

string GROUP_PLS                     = 'Labels'
bool showLabelsPriceScaleInput          = input.bool(false, 'Show Labels on Price Scale.', tooltip="", group=GROUP_PLS)

labelDisplay = showLabelsPriceScaleInput ? display.all : display.pane // , editable = false, display=labelDisplay)

ph = ta.pivothigh(srcH, leftLenH, rightLenH)
pl = ta.pivotlow(srcL, leftLenL, rightLenL)

ph_value = srcH[rightLenH]
pl_value = srcL[rightLenL]

valuewhen_1 = ta.valuewhen(not na(ph), ph_value, 1)
valuewhen_2 = ta.valuewhen(not na(ph), ph_value, 0)
higherhigh = na(ph) ? na : valuewhen_1 < valuewhen_2 ? ph : na
lowerhigh = na(ph) ? na : valuewhen_1 > valuewhen_2 ? ph : na

valuewhen_3 = ta.valuewhen(not na(pl), pl_value, 1)
valuewhen_4 = ta.valuewhen(not na(pl), pl_value, 0)
higherlow = na(pl) ? na : valuewhen_3 < valuewhen_4 ? pl : na
lowerlow = na(pl) ? na : valuewhen_3 > valuewhen_4 ? pl : na

isInDisplayRange() => maxBarsBack == 0 or (bar_index > (last_bar_index - maxBarsBack))

plotshape(showhh and isInDisplayRange() ? higherhigh : na, title = 'HH', style = shape.triangledown, location = location.abovebar, color = colorH, text = 'HH', textcolor = colorH, offset = -rightLenH,display=labelDisplay)
plotshape(showhh and isInDisplayRange() ? higherlow : na, title = 'HL', style = shape.triangleup, location = location.belowbar, color = colorL, text = 'HL', textcolor = colorL, offset = -rightLenH,display=labelDisplay)
plotshape(showhh and isInDisplayRange() ? lowerhigh : na, title = 'LH', style = shape.triangledown, location = location.abovebar, color = colorH, text = 'LH', textcolor = colorH, offset = -rightLenL,display=labelDisplay)
plotshape(showhh and isInDisplayRange() ? lowerlow : na, title = 'LL', style = shape.triangleup, location = location.belowbar, color = colorL, text = 'LL', textcolor = colorL, offset = -rightLenL,display=labelDisplay)

import Llopezf/Time/1
var grp3 = '***************Show Market Open*************** '
sess1Hour = input.int(1, title='open in hour ', minval=0, maxval=23, inline='0', group=grp3)
sess1Minute = input.int(0, title=' and minute', minval=0, maxval=60, inline='0', group=grp3)

inSession1 = hour == sess1Hour and minute == sess1Minute and second == 0

var grp4 = '*************** Other Settings ***************'
extendHours = input.int(22, title='Extend Horizontal lines( hours)?', minval=1, maxval=22, group=grp4)

color_up = input.color(color.green, title='', inline="1", group=grp4)
color_dn = input.color(color.red, title='', inline="1", group=grp4)

var float open_d=na
var float new_h=na
var float new_l=na
var box candle=na
var line sh_up=na
var line sh_dn=na
var color ca_color=na

_extend = extendHours * 3600000

if inSession1 and not inSession1[1] 
    open_d:=open
    new_h:=open
    new_l:=open

if low < new_l
    new_l := low
    new_l
if high > new_h
    new_h := high
    new_h

if close !=close[1]
    ca_color:=close>open_d? color_up:color_dn
    box.delete(candle[1])
    candle:=box.new( bar_index+20,open_d ,bar_index+26,close,bgcolor=ca_color,border_color =na)
    if close>open_d //Drew upper shadow
        line.delete(sh_up[1])
        line.delete(sh_dn[1])
        sh_up:= line.new(bar_index+23,close,bar_index+23,new_h,width = 2,color = ca_color)
        sh_dn:= line.new(bar_index+23,open_d,bar_index+23,new_l,width = 2,color = ca_color)

    else
        line.delete(sh_up[1])
        line.delete(sh_dn[1])
        sh_up:= line.new(bar_index+23,open_d,bar_index+23,new_h,width = 2,color = ca_color)
        sh_dn:= line.new(bar_index+23,close,bar_index+23,new_l,width = 2,color = ca_color)

horaSeleccionada = input(8, "Hour (24h)")
minutoSeleccionado = input(45, "Minute")

diferenciaUTC = input.int(-8, "UTC offset (hours)", minval=-12, maxval=14)

colorTercio1 = input.color(color.rgb(218, 185, 51, 80), "First section color")
colorTercio2 = input.color(color.rgb(33, 149, 243, 80), "Second section color")
colorTercio3 = input.color(color.rgb(255, 82, 82, 80), "Third section color")

horaActual = hour(time) + diferenciaUTC
if horaActual < 0
    horaActual := horaActual + 24
if horaActual >= 24
    horaActual := horaActual - 24

minutoActual = minute(time)

esVelaSeleccionada = (horaActual == horaSeleccionada and minutoActual == minutoSeleccionado)

var float highVela = na
var float lowVela = na
var float tercio = na

if esVelaSeleccionada
    highVela := high
    lowVela := low
    tercio := (highVela - lowVela) / 3

if esVelaSeleccionada and not na(tercio)
    box.new(left=int(bar_index - 1), right=int(bar_index + 2), top=highVela, bottom=highVela - tercio, border_width=0, bgcolor=colorTercio1)
    box.new(left=int(bar_index - 1), right=int(bar_index + 2), top=highVela - tercio, bottom=highVela - 2 * tercio, border_width=0, bgcolor=colorTercio2)
    box.new(left=int(bar_index - 1), right=int(bar_index + 2), top=highVela - 2 * tercio, bottom=lowVela, border_width=0, bgcolor=colorTercio3)

showTrendLevels = input(true, "Show Trend Levels", group='Channel')
mult2 = input.float(15, 'Factor', minval=0, group='Channel')
slope = input.float(50, title='Slope', minval=0, group='Channel') * mult2

colUp = input.color(#089981, '          ', inline='color', group='Colors')
colMa = input.color(#787b86, '          ', inline='color', group='Colors')
colDn = input.color(#f23645, '          ', inline='color', group='Colors')

color colUp1 = color.new(colUp, 50)
color colUp2 = color.new(colUp, 0)
color avgCss = color.new(colMa, 0)
color colDn1 = color.new(colDn, 0)
color colDn2 = color.new(colDn, 50)

var float pc_avg = close
var int os = 1
var float hold_atr = 0.

atr = nz(ta.atr(200)) * mult2
pc_avg := math.abs(close - pc_avg) > atr ? close : pc_avg + os * hold_atr / slope
hold_atr := pc_avg == close ? atr / 2 : hold_atr
os := pc_avg > pc_avg[1] ? 1 : pc_avg < pc_avg[1] ? -1 : os

pc_R2 = showTrendLevels ? pc_avg + hold_atr : na
pc_R1 = showTrendLevels ? pc_avg + hold_atr / 2 : na
pc_S1 = showTrendLevels ? pc_avg - hold_atr / 2 : na
pc_S2 = showTrendLevels ? pc_avg - hold_atr : na
pc_avg_plot = showTrendLevels ? pc_avg : na

plot(pc_R2, 'Upper Resistance', color=colDn1,display=labelDisplay)
plot(pc_R1, 'Lower Resistance', color=colDn2,display=labelDisplay)
plot(pc_avg_plot, 'Average', color=avgCss,display=labelDisplay)
plot(pc_S1, 'Upper Support', color=colUp1,display=labelDisplay)
plot(pc_S2, 'Lower Support', color=colUp2,display=labelDisplay)       

int time_zone_offset = input.int(-5, 'Time Zone Offset (UTC+/-)', minval = -12, maxval = 14, tooltip = 'Enter the UTC offset for your timezone. For example, UTC-4 would be -4, UTC+5 would be 5')

int session_start_hour = input.int(19, 'Session Start Time', minval = 0, maxval = 23, tooltip = 'Hour in your selected timezone')
int session_start_minute = input.int(0, 'Session Start Minute', minval = 0, maxval = 59)
int session_end_hour = input.int(22, 'Session End Time', minval = 0, maxval = 23, tooltip = 'Hour in your selected timezone')
int session_end_minute = input.int(3, 'Session End Minute', minval = 0, maxval = 59)
int fib_line_width = input.int(1, 'Fibonacci Line Width', minval = 1, maxval = 5)
int line_offset = input.int(10, 'Distance of label from the fib', minval = 1, maxval = 500)

color background_color = input(color.new(#b39ddb, 100))

var array<float> fib_levels = array.new_float()
var array<string> fib_labels_text = array.new_string()
var array<color> fib_colors = array.new_color()

resetFibLevelsAndLabels() =>
    array.clear(fib_levels)
    array.clear(fib_labels_text)
    array.clear(fib_colors)

    array.push(fib_levels, 5.0)
    array.push(fib_labels_text, 'extreme')
    array.push(fib_colors, #E91E63) // Pink

    array.push(fib_levels, 4.5)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #E91E63) // Pink

    array.push(fib_levels, 4.0)
    array.push(fib_labels_text, 'smr')
    array.push(fib_colors, color.black) // Black

    array.push(fib_levels, 3.5)
    array.push(fib_labels_text, 'x')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, 3.272)
    array.push(fib_labels_text, 'micro smr')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, 3.0)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, 2.5)
    array.push(fib_labels_text, 'lv')
    array.push(fib_colors, color.gray) // Gray

    array.push(fib_levels, 2.0)
    array.push(fib_labels_text, 'sb')
    array.push(fib_colors, color.black) // Black

    array.push(fib_levels, 1.5)
    array.push(fib_labels_text, 'retracement')
    array.push(fib_colors, #00BCD4) // Cyan

    array.push(fib_levels, 1.1111)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #FFCDD2) // Light Pink

    array.push(fib_levels, 1.0)
    array.push(fib_labels_text, '')
    array.push(fib_colors, color.silver) // Light Gray

    array.push(fib_levels, 0.62)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, 0.5)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #00BCD4) // Cyan

    array.push(fib_levels, 0.0)
    array.push(fib_labels_text, '')
    array.push(fib_colors, color.gray) // Gray with pattern

    array.push(fib_levels, -0.1111)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #FFCDD2) // Light Pink

    array.push(fib_levels, -0.5)
    array.push(fib_labels_text, 'retracement')
    array.push(fib_colors, #00BCD4) // Cyan

    array.push(fib_levels, -1.0)
    array.push(fib_labels_text, 'sb')
    array.push(fib_colors, color.black) // Black

    array.push(fib_levels, -2.0)
    array.push(fib_labels_text, 'micro smr')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, -2.272)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, -2.5)
    array.push(fib_labels_text, 'x')
    array.push(fib_colors, #FF9800) // Orange

    array.push(fib_levels, -3.0)
    array.push(fib_labels_text, 'smr')
    array.push(fib_colors, color.black) // Black

    array.push(fib_levels, -3.5)
    array.push(fib_labels_text, '')
    array.push(fib_colors, #E91E63) // Pink

    array.push(fib_levels, -4.0)
    array.push(fib_labels_text, 'extreme')
    array.push(fib_colors, #E91E63) // Pink

isSession(int current_hour, int current_minute, int startHour, int startMinute, int endHour, int endMinute) =>
    float current_time = current_hour + current_minute / 60.0
    float start_time = startHour + startMinute / 60.0
    float end_time = endHour + endMinute / 60.0

    start_time < end_time ? (current_time >= start_time and current_time < end_time) : (current_time >= start_time or current_time < end_time)

int current_hour_custom_tz = (hour(time) + time_zone_offset) % 24

current_hour_custom_tz := current_hour_custom_tz < 0 ? current_hour_custom_tz + 24 : current_hour_custom_tz
int current_minute = minute(time)
bool in_session = isSession(current_hour_custom_tz, current_minute, session_start_hour, session_start_minute, session_end_hour, session_end_minute)

bgcolor(in_session ? background_color : na)

var float session_high = na
var float session_low = na
var int session_bars = 0
var bool session_processed = false
var int last_session_end_bar = 0
var float last_session_high = na
var float last_session_low = na
var int last_session_bars = 0

var array<line> fib_lines = array.new_line()
var array<label> fib_labels = array.new_label()

createLabel(price, labelText, labelColor) =>
    label.new(bar_index - int(last_session_bars / 2) + line_offset, price, text = labelText, style = label.style_label_center, color = color.new(color.white, 100), size = size.small, textcolor = labelColor)

clearAllLinesAndLabels() =>
    while array.size(fib_lines) > 0
        line.delete(array.pop(fib_lines))
    while array.size(fib_labels) > 0
        label.delete(array.pop(fib_labels))

if barstate.isnew
    if in_session

        session_high := na(session_high) ? high : math.max(high, session_high)
        session_low := na(session_low) ? low : math.min(low, session_low)
        session_bars := session_bars + 1
        session_processed := false
    else if not in_session and not session_processed and not na(session_high) and not na(session_low) and session_bars > 0

        last_session_high := session_high
        last_session_low := session_low
        last_session_bars := session_bars
        last_session_end_bar := bar_index - 1

        clearAllLinesAndLabels()

        resetFibLevelsAndLabels()

        float session_range = last_session_high - last_session_low
        float session_midpoint = (last_session_high + last_session_low) / 2

        int session_start_index = last_session_end_bar - last_session_bars + 1

        for i = 0 to array.size(fib_levels) - 1
            float level = array.get(fib_levels, i)
            float fibPrice = session_midpoint + (level - 0.5) * session_range
            color levelColor = array.get(fib_colors, i)

            line fibLine = line.new(session_start_index, fibPrice, last_session_end_bar, fibPrice, 
                                   width = fib_line_width, color = levelColor)

            label fibLabel = createLabel(fibPrice, array.get(fib_labels_text, i), levelColor)

            array.push(fib_lines, fibLine)
            array.push(fib_labels, fibLabel)

        session_high := na
        session_low := na
        session_bars := 0
        session_processed := true

var g_visuals = '🎨 Visual Settings'
themeMode = input.string('Light', 'Color Theme', options = ['Dark', 'Light', 'Custom'], 
     tooltip = 'Select color theme for better visibility in different chart modes', group = g_visuals, display = display.none)

var color darkLongColor = #2962FF  // Strong blue
var color darkShortColor = #FF6D00  // Orange
var color darkTableText = #ffffff
var color darkTableBg = #1e222d    // Darker background
var color darkTableHeader = #2a2e39 // Slightly lighter than background

var color lightLongColor = #0064fe  // DARK_BLUE from FibExtender
var color lightShortColor = #10cab8 // TURQUOISE from FibExtender
var color lightTableText = #000000
var color lightTableBg = #f0f3fa    // Light background
var color lightTableHeader = #e1e5ef // Slightly darker than background

var g_custom = '🎨 Custom Colors'
showCustomColors = themeMode == 'Custom'

customLongColor = input.color(darkLongColor, 'Fast SMA & Long Signal', 
     tooltip='Color Settings for Strategy Elements:\n' + 
         '• Fast SMA & Long Signal: Color for the faster moving average and long position indicators\n' + 
         '• Slow SMA & Exit: Color for the slower moving average and exit signals', 
     inline = 'custom1', group = g_custom, display = display.none)
customShortColor = input.color(darkShortColor, 'Slow SMA & Exit', 
     inline = 'custom1', group = g_custom, display = display.none)

customTableText = input.color(darkTableText, 'Table Text', 
     tooltip='Table Color Settings:\n' + 
         '• Table Text: Color for all text elements in the table\n' + 
         '• Table Background: Main background color for the table cells', 
     inline = 'custom2', group = g_custom, display = display.none)
customTableBg = input.color(darkTableBg, 'Table Background', 
     inline = 'custom2', group = g_custom, display = display.none)

customTableHeader = input.color(darkTableHeader, 'Header Background', 
     tooltip='Color for table header and footer sections', 
     group = g_custom, display = display.none)

getThemeColors() =>
    color longColor = switch themeMode
        'Dark' => darkLongColor
        'Light' => lightLongColor
        => customLongColor

    color shortColor = switch themeMode
        'Dark' => darkShortColor
        'Light' => lightShortColor
        => customShortColor

    color tableText = switch themeMode
        'Dark' => darkTableText
        'Light' => lightTableText
        => customTableText

    color tableBg = switch themeMode
        'Dark' => darkTableBg
        'Light' => lightTableBg
        => customTableBg

    color tableHeader = switch themeMode
        'Dark' => darkTableHeader
        'Light' => lightTableHeader
        => customTableHeader

    [longColor, shortColor, tableText, tableBg, tableHeader]

[themeColorLong, themeColorShort, themeTextColor, themeBgColor, themeHeaderColor] = getThemeColors()

enableDashboard   = input(true, "Enable Dashboard", group="DASHBOARD SETTINGS")
locationDashboard = input.string("Bottom right", "Location", ["Top right", "Top left", "Middle right", "Middle left", "Bottom right", "Bottom left"], group="DASHBOARD SETTINGS")
sizeDashboard     = input.string("Tiny", "Size", ["Tiny", "Small", "Normal"], group="DASHBOARD SETTINGS")
colorBackground   = input(#ffffff, "Bg color", group="DASHBOARD SETTINGS")
colorFrame        = input(#000000, "Frame color", group="DASHBOARD SETTINGS")
colorBorder       = input(#ffffff, "Border color", group="DASHBOARD SETTINGS")
showSignals       = input(true, "Show signals", group="BUY AND SELL SIGNALS SETTINGS")
strategy          = input.string("Normal", "Strategy", ["Normal"], group="BUY AND SELL SIGNALS SETTINGS")
sensitivity       = input.float(5, "Sensitivity", 0.1, step=0.1, group="BUY AND SELL SIGNALS SETTINGS")
consSignalsFilter = input(false, "Consolidation signals filter", group="BUY AND SELL SIGNALS SETTINGS")
StrongSignalsOnly  = input(false, "Strong signals only", group="BUY AND SELL SIGNALS SETTINGS")
candleColors      = input(false, "Candle colors", group="BUY AND SELL SIGNALS SETTINGS")
momentumCandles   = input(false, "Momentum candles", group="BUY AND SELL SIGNALS SETTINGS")
highVolSignals    = input(false, "High volume signals only", group="BUY AND SELL SIGNALS SETTINGS")
enableTrailingSL  = input(false, "Enable trailing stop-loss", group="RISK MANAGEMENT SETTINGS")
usePercSL         = input(false, "% Trailing sl", inline="2", group="RISK MANAGEMENT SETTINGS")
percTrailingSL    = input.float(1, "", 0, step=0.1, inline="2", group="RISK MANAGEMENT SETTINGS")
enableSwings      = input(false, "Enable Swing High's & Swing's Low's", inline="3", group="RISK MANAGEMENT SETTINGS")
periodSwings      = input.int(10, "", 2, inline="3", group="RISK MANAGEMENT SETTINGS")
enableTpSlAreas   = input(true, "Enable take profit/stop-loss areas", group="RISK MANAGEMENT SETTINGS")
useTP1            = input(true, "", inline="4", group="RISK MANAGEMENT SETTINGS")
multTP1           = input.float(1, "TP 1", 0, inline="4", group="RISK MANAGEMENT SETTINGS")
useTP2            = input(true, "", inline="5", group="RISK MANAGEMENT SETTINGS")
multTP2           = input.float(2, "TP 2", 0, inline="5", group="RISK MANAGEMENT SETTINGS")
useTP3            = input(true, "", inline="6", group="RISK MANAGEMENT SETTINGS")
multTP3           = input.float(3, "TP 3", 0, inline="6", group="RISK MANAGEMENT SETTINGS")
tpLabels          = true //input(true, "Take profit labels", group="RISK MANAGEMENT SETTINGS")
tslLabels         = input(false, "Enable Trailing Stoploss", group="RISK MANAGEMENT SETTINGS")
showTrendCloud    = input(true, "Show Trend cloud", group="TREND CLOUD SETTINGS")
periodTrendCloud  = input.string("New", "Trend cloud period", ["Short term", "Long term", "New"], group="TREND CLOUD SETTINGS")
signalsTrendCloud = input(false, "Trend only signals", group="TREND CLOUD SETTINGS")
fastTrendCloud    = input(false, "Fast trend cloud", group="TREND CLOUD SETTINGS")
fastTrendCloudLen = input.int(55, "Fast trend cloud", 2, group="TREND CLOUD SETTINGS")
enableAutoTrend   = input(false, "Enable Auto Trendlines", group="AUTO TRENDLINES SETTINGS")
srcTrendChannel   = input(close, "Trend channel source", group="AUTO TRENDLINES SETTINGS")
lenTrendChannel   = input.int(200, "Trend channel loopback", 2, group="AUTO TRENDLINES SETTINGS")
enableSR          = input(false, "Enable support and resistance", group="AUTO SUPPORT AND RESISTANCE SETTINGS")
lineSrStyle       = input.string("Dashed", "Line Style", ["Solid", "Dotted", "Dashed"], group="AUTO SUPPORT AND RESISTANCE SETTINGS")
lineSrWidth       = input.int(2, "Line Width", 1, 4, group="AUTO SUPPORT AND RESISTANCE SETTINGS")
showCons          = input(false, "Consolidation Zones", group="CONSOLIDATION ZONES")
lbPeriod          = input.int(10, "Loopback Period", 2, 50, group="CONSOLIDATION ZONES")
lenCons           = input.int(5, "Min Consolidation Length", 2, 20, group="CONSOLIDATION ZONES")
paintCons         = input(true, "Paint Consolidation Area", group="CONSOLIDATION ZONES")
colorZone         = input(color.new(color.blue, 70), "Zone Color", group="CONSOLIDATION ZONES")
box_ob            = input.bool(false, "Toggle Order Block", group="ORDER BLOCK")
box_hide_gray     = input.bool(false, "Hide gray boxes", group="ORDER BLOCK")
bos_type          = input.string("High and Low", "MSB trigger", ["High and Low", "Close and Open"], group="ORDER BLOCK")
box_sv            = input.bool(true, "Plot demand boxes", group="ORDER BLOCK")
box_test_delay    = input.int(3, "Delay to count test of demand box", 1, group="ORDER BLOCK")
box_fill_delay    = input.int(3, "Delay to count fill of demand box", 1, group="ORDER BLOCK")
box_test_sv       = input.bool(true, "Dim tested demand boxes", group="ORDER BLOCK")
box_stop_sv       = input.bool(true, "Stop plotting filled demand boxes", group="ORDER BLOCK")

f_chartTfInMinutes() =>
    float _resInMinutes = timeframe.multiplier * (
      timeframe.isseconds ? 1. / 60             :
      timeframe.isminutes ? 1.                  :
      timeframe.isdaily   ? 60. * 24            :
      timeframe.isweekly  ? 60. * 24 * 7        :
      timeframe.ismonthly ? 60. * 24 * 30.4375  : na)
atr(len) =>
	tr = ta.tr
    atr = 0.0
    atr := nz(atr[1] + (tr - atr[1]) / len, tr)
supertrend(src, factor, len) =>
	atr = ta.atr(len)
	upperBand = src + factor * atr
	lowerBand = src - factor * atr
	prevLowerBand = nz(lowerBand[1])
	prevUpperBand = nz(upperBand[1])
	lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
	upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
	int direction = na
	float superTrend = na
	prevSuperTrend = superTrend[1]
	if prevSuperTrend == prevUpperBand
		direction := close > upperBand ? 1 : -1
	else
		direction := close < lowerBand ? -1 : 1
	superTrend := direction == 1 ? lowerBand : direction == -1 ? upperBand : na
dchannel(len)=>
    hh = ta.highest(len)
    ll = ta.lowest (len)
    trend = 0
    trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1])
trendScalper(show, len1, len2, len3, colorBull, colorBear, colorBarBull, colorBarBear) =>
    avgOC = math.avg(open, close)
    ha_o = 0.0, ha_o := na(ha_o[1]) ? avgOC : (ha_o[1] + ohlc4[1]) / 2
    ema1 = ta.ema(ha_o, len1), ema2 = ta.ema(ha_o, len2), ema3 = ta.ema(ha_o, len3)
    ris1 = ema1 > ema1[1], ris2 = ema2 > ema2[1], ris3 = ema3 > ema3[1]
    fal1 = ema1 < ema1[1], fal2 = ema2 < ema2[1], fal3 = ema3 < ema3[1]
    colorEma1 = ris1 ? colorBull : fal1 ? colorBear : na, colorEma2 = ris2 ? colorBull : fal2 ? colorBear : na, colorEma3 = ris3 ? colorBull : fal3 ? colorBear : na
    fillEma1 = avgOC > ema1 ? colorBull : avgOC < ema1 ? colorBear : na, fillEma2 = ema1 > ema2 ? colorBull : ema1 < ema2 ? colorBear : na, fillEma3 = ema2 > ema3 ? colorBull : ema2 < ema3 ? colorBear : na
    colorBar = close < ema1 and close < ema2 ? colorBarBear : colorBarBull
    [avgOC, show ? ema1 : na, show ? ema2 : na, show ? ema3 : na, color.new(colorEma1, 55), color.new(colorEma2, 45), color.new(colorEma3, 35), color.new(fillEma1, 85), color.new(fillEma2, 80), color.new(fillEma3, 75), colorBar]
candlesMom() =>
	[_, _, macd] = ta.macd(close, 12, 26, 9)
	(macd > 0 and macd > macd[1]) or (macd < 0 and macd < macd[1])
trailingSL(buy, sell, factor, len, usePerc, perc) =>
	atr = atr(len)
	upperBand = high + (usePerc ? high * (perc / 100) : factor * atr)
	lowerBand = low  - (usePerc ? low  * (perc / 100) : factor * atr)
	prevLowerBand = nz(lowerBand[1])
	prevUpperBand = nz(upperBand[1])
	lowerBand := lowerBand > prevLowerBand or buy  ? lowerBand : prevLowerBand
	upperBand := upperBand < prevUpperBand or sell ? upperBand : prevUpperBand
	int direction = na
	float stop = na
	prevSuperTrend = stop[1]
	if prevSuperTrend == prevUpperBand
		direction := buy ? 1 : -1
	else
		direction := sell ? -1 : 1
	stop := direction == 1 ? lowerBand : direction == -1 ? upperBand : na
add_to_zz(zz, val, bi) =>
    array.unshift(zz, bi)
    array.unshift(zz, val)
    if array.size(zz) > 12
        array.pop(zz)
update_zz(zz, val, bi, dir) =>
    if array.size(zz) == 0
        add_to_zz(zz, val, bi)
    else
        if dir == 1 and val > array.get(zz, 0) or dir == -1 and val < array.get(zz, 0)
            array.set(zz, 0, val)
            array.set(zz, 1, bi)
        0
float ph1 = ta.pivothigh(high, 10, 10)
float pl1 = ta.pivotlow (low , 10, 10)
LSRstyle = lineSrStyle == "Dashed" ? line.style_dashed : lineSrStyle == "Solid" ? line.style_solid : line.style_dotted
prdhighest = ta.highest(300)
prdlowest  = ta.lowest (300)
cwidth = (prdhighest - prdlowest) * 10 / 100
var pivotvals = array.new_float(0)
if ph1 or pl1
    array.unshift(pivotvals, ph1 ? ph1 : pl1)
    if array.size(pivotvals) > 20
        array.pop(pivotvals)
get_sr_vals(ind) =>
    float lo = array.get(pivotvals, ind)
    float hi = lo
    int numpp = 0
    for y = 0 to array.size(pivotvals) - 1 by 1
        float cpp = array.get(pivotvals, y)
        float wdth = cpp <= lo ? hi - cpp : cpp - lo
        if wdth <= cwidth
            lo := cpp <= lo ? cpp : lo
            hi := cpp > lo ? cpp : hi
            numpp += 1
            numpp
    [hi, lo, numpp]
var sr_up_level = array.new_float(0)
var sr_dn_level = array.new_float(0)
sr_strength = array.new_float(0)
find_loc(strength) =>
    ret = array.size(sr_strength)
    for i = ret > 0 ? array.size(sr_strength) - 1 : na to 0 by 1
        if strength <= array.get(sr_strength, i)
            break
        ret := i
        ret
    ret
check_sr(hi, lo, strength) =>
    ret = true
    for i = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
        if array.get(sr_up_level, i) >= lo and array.get(sr_up_level, i) <= hi or array.get(sr_dn_level, i) >= lo and array.get(sr_dn_level, i) <= hi
            if strength >= array.get(sr_strength, i)
                array.remove(sr_strength, i)
                array.remove(sr_up_level, i)
                array.remove(sr_dn_level, i)
                ret
            else
                ret := false
                ret
            break
    ret

rsi  = ta.rsi(close, 14)
vosc = ta.obv - ta.ema(ta.obv, 20)
bs   = ta.ema(nz(math.abs((open - close) / (high - low) * 100)), 3)
ema  = ta.ema(close, 200)
emaBull = close > ema
equal_tf(res) => str.tonumber(res) == f_chartTfInMinutes()
higher_tf(res) => str.tonumber(res) > f_chartTfInMinutes()
too_small_tf(res) => (timeframe.isweekly and res=="1") or (timeframe.ismonthly and str.tonumber(res) < 10)
securityNoRep(sym, res, src) =>
    bool bull = na
    bull := equal_tf(res) ? src : bull
    bull := higher_tf(res) ? request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_on) : bull
    bull_array = request.security_lower_tf(syminfo.tickerid, higher_tf(res) ? str.tostring(f_chartTfInMinutes()) : too_small_tf(res) ? (timeframe.isweekly ? "3" : "10") : res, src)
    if array.size(bull_array) > 1 and not equal_tf(res) and not higher_tf(res)
        bull := array.pop(bull_array)
    array.clear(bull_array)
    bull
TF1Bull   = securityNoRep(syminfo.tickerid, "1"   , emaBull)
TF3Bull   = securityNoRep(syminfo.tickerid, "3"   , emaBull)
TF5Bull   = securityNoRep(syminfo.tickerid, "5"   , emaBull)
TF10Bull  = securityNoRep(syminfo.tickerid, "10"  , emaBull)
TF15Bull  = securityNoRep(syminfo.tickerid, "15"  , emaBull)
TF30Bull  = securityNoRep(syminfo.tickerid, "30"  , emaBull)
TF60Bull  = securityNoRep(syminfo.tickerid, "60"  , emaBull)
TF120Bull = securityNoRep(syminfo.tickerid, "120" , emaBull)
TF240Bull = securityNoRep(syminfo.tickerid, "240" , emaBull)
TF720Bull = securityNoRep(syminfo.tickerid, "720" , emaBull)
TFDBull   = securityNoRep(syminfo.tickerid, "1440", emaBull)
ema150 = ta.ema(close, 150)
ema250 = ta.ema(close, 250)
hma55  = ta.hma(close, 55 )
[_, _, macd] = ta.macd(close, 12, 26, 9)
supertrend = supertrend(ohlc4, sensitivity, 10)
maintrend  = dchannel(30)
confBull   = (ta.crossover (close, supertrend) or (ta.crossover (close, supertrend)[1] and maintrend[1] < 0)) and macd > 0 and macd > macd[1] and ema150 > ema250 and hma55 > hma55[2] and maintrend > 0
confBear   = (ta.crossunder(close, supertrend) or (ta.crossunder(close, supertrend)[1] and maintrend[1] > 0)) and macd < 0 and macd < macd[1] and ema150 < ema250 and hma55 < hma55[2] and maintrend < 0
trendcloud = supertrend(ohlc4, periodTrendCloud == "Long term" ? 7 : 4, 10)
hma = fastTrendCloud ? ta.hma(close, fastTrendCloudLen) : na
none = close > 0
[_, _, adx] = ta.dmi(14, 14)
consFilter = adx > 20
StrongFilter = ta.ema(close, 200)
volFilter = (ta.ema(volume, 25) - ta.ema(volume, 26)) / ta.ema(volume, 26) > 0
trendFilter = trendcloud
bull = (strategy == "Normal" ? ta.crossover (close, supertrend) : confBull and not confBull[1]) and strategy != "Trend scalper" and (StrongSignalsOnly ? close > StrongFilter : none) and (consSignalsFilter ? consFilter : none) and (highVolSignals ? volFilter : none) and (signalsTrendCloud ? (periodTrendCloud == "New" ? ema150 > ema250 : close > trendFilter) : none)
bear = (strategy == "Normal" ? ta.crossunder(close, supertrend) : confBear and not confBear[1]) and strategy != "Trend scalper" and (StrongSignalsOnly ? close < StrongFilter : none) and (consSignalsFilter ? consFilter : none) and (highVolSignals ? volFilter : none) and (signalsTrendCloud ? (periodTrendCloud == "New" ? ema150 < ema250 : close < trendFilter) : none)
countBull = ta.barssince(bull)
countBear = ta.barssince(bear)
trigger = nz(countBull, bar_index) < nz(countBear, bar_index) ? 1 : 0
[avgOC, ema5, ema9, ema21, colorEma5, colorEma9, colorEma21, fillEma5, fillEma9, fillEma21, colorBar] = trendScalper(strategy == "Trend scalper" ? true : false, 5, 9, 21, color.green, color.red, #00DD00, #DD0000)
trailingStop = trailingSL(bull, bear, 2.2, 14, usePercSL, percTrailingSL)
float _ph    = ta.highestbars(high, periodSwings) == 0 ? high : na
float _pl    = ta.lowestbars (low,  periodSwings) == 0 ? low  : na
var   _dir   = 0, dir_ = _pl and na(_ph) ? -1 : _dir, _dir := _ph and na(_pl) ? 1 : dir_, dirChg = ta.change(_dir)
var   zz     = array.new_float(0), zzOld = array.copy(zz)
float zzLive = _ph or _pl ? (dirChg ? add_to_zz(zz, _dir == 1 ? _ph : _pl, bar_index) : update_zz(zz, _dir == 1 ? _ph : _pl, bar_index, _dir)) : na
a = ta.wma(srcTrendChannel, lenTrendChannel), b_ = ta.sma(srcTrendChannel, lenTrendChannel)
A = 4 * b_ - 3 * a, B = 3 * a - 2 * b_
m = (A - B) / (lenTrendChannel - 1)
d = 0., for i = 0 to lenTrendChannel - 1 by 1
    l = B + m * i
    d += math.pow(srcTrendChannel[i] - l, 2)
rmse = math.sqrt(d / (lenTrendChannel - 1)) * 2
float     hb_     = ta.highestbars(lbPeriod) == 0 ? high : na
float     lb_     = ta.lowestbars (lbPeriod) == 0 ? low  : na
var int   dir     = 0
float     zz_     = na
float     pp      = na
var int   consCnt = 0
var float condHi  = na
var float condLo  = na
float     H_      = ta.highest(lenCons)
float     L_      = ta.lowest (lenCons)
var line  lineUp  = na
var line  lineDn  = na
bool      breakUp = false
bool      breakDn = false
var float[] pvh1_price     = array.new_float(1000, na)
var int[]   pvh1_time      = array.new_int  (1000, na)
var float[] pvl1_price     = array.new_float(1000, na)
var int[]   pvl1_time      = array.new_int  (1000, na)
var float[] pvh2_price     = array.new_float(1000, na)
var int[]   pvh2_time      = array.new_int  (1000, na)
var float[] pvl2_price     = array.new_float(1000, na)
var int[]   pvl2_time      = array.new_int  (1000, na)
var float   htcmrll_price  = na
var int     htcmrll_time   = na
var float   ltcmrhh_price  = na
var int     ltcmrhh_time   = na
var box[]   long_boxes     = array.new_box()
var box[]   short_boxes    = array.new_box()
var float   temp_pv_0      = na
var float   temp_pv_1      = na
var float   temp_pv_2      = na
bool        pvh            = high < high[1] and high[1] > high[2]
bool        pvl            = low  > low [1] and low [1] < low [2]
int         pv1_time       = bar_index[1]
float       pv1_high       = high[1]
float       pv1_low        = low [1]
float       trigger_high   = bos_type == "High and Low" ? high : math.max(open, close)
float       trigger_low    = bos_type == "High and Low" ? low  : math.min(open, close)

var buyBars  = array.new_box(365, na)
for i = 0 to 364
    box.delete(array.get(buyBars, i))
var sellBars = array.new_box(365, na)
for i = 0 to 364
    box.delete(array.get(sellBars, i))

green    = #00DD00, green50  = color.new(gre

Показано первые 50% кода (символов: 53878)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
5 387,80₽ ≈ $65.86