Calcs происходят, как и ожидалось. Что не так, есть наша f_print()
функция. Извиняюсь за это. Версия, которую вы выбрали, не обновляет sh текст. Этот код имеет более новую версию f_print()
, которая делает это.
Обратите внимание, что для проверки значений бар за баром, как вы хотели бы здесь, наш трюк plotchar()
более полезен, если у вас также есть ваши данные Окно открыто для проверки значения, так как вы можете проверить значение каждого бара при наведении курсора мыши на бар. Смотрите наш ответ здесь для нашего макроса AHK, который генерирует оператор из имени переменной, если у вас есть настройка Windows и вы заинтересованы.
//@version=4
study("Keep data across bars (var)", overlay=true)
// Variables
var bool canGoShort = true
var bool canGoLong = true
var int myTest = 5
// Functions
f_print(_txt) => var _lbl = label.new(bar_index, highest(10)[1], _txt, xloc.bar_index, yloc.price, #00000000, label.style_none, color.gray, size.large, text.align_left), label.set_xy(_lbl, bar_index, highest(10)[1]), label.set_text(_lbl, _txt)
// MAIN
if canGoShort
myTest := myTest + 1
if canGoLong
myTest := myTest + 1
f_print("myTest=" + tostring(myTest, "0.0"))
plotchar(myTest, "myTest", "", location.top)
Опять извинения за беспокойство. Мы обновили все экземпляры f_print()
в нашем FAQ. Обратите внимание, что мы используем эту версию в основном для отладки, потому что она хранится в одной строке. Это код AHK, который мы используем для генерации f_print()
с Ctrl + Shift + p для отладки:
^+P:: SendInput f_print(_txt) => var _lbl = label.new(bar_index, highest(10)[1], _txt, xloc.bar_index, yloc.price, {#}00000000, label.style_none, color.gray, size.large, text.align_left), label.set_xy(_lbl, bar_index, highest(10)[1]), label.set_text(_lbl, _txt)`nf_print(){Left}
In Сценарии, которые будут опубликованы, мы используем эту версию, которая является более гибкой и более эффективной, но не может быть сжата в одну строку из-за операторов if
:
// ————— Print a label at end of chart.
f_print(_txt, _y, _color, _offsetLabels) =>
var label _lbl = na
_t = int(time + (time - time[1]) * _offsetLabels)
if barstate.islast
if na(_lbl)
// Only create label once.
_lbl := label.new(_t, _y, _txt, xloc.bar_time, yloc.price, #00000000, label.style_none, color.gray, size.large)
// Fudge return type of `if` block so compiler doesn't complain (thx midtownsk8rguy for the trick).
int(na)
else
// Rather than delete and recreate the label on every realtime bar update, update the label's information; it's more efficient.
label.set_xy(_lbl, _t, _y)
label.set_text(_lbl, _txt)
label.set_textcolor(_lbl, _color)
int(na)