Почему `close` и` open` не соответствуют цене на графике? - PullRequest
0 голосов
/ 18 мая 2018

FOREX, 1H Chart, // version = 3 pinescript

Я все еще новичок в Pinescript, но я заметил, что использование close или open возвращает данные, которые не являютсятекущая цена закрытия или открытия.Даже использование close[1] возвращает сумму, совершенно отличную от закрытия предыдущей свечи.

Почему это так?Я неправильно интерпретирую эти данные?

В проведенном мной исследовании я наткнулся на эту статью: https://www.tradingcode.net/tradingview/operators/history-referencing-operator/:

Технически, оператор ссылки на историю не 't возвращает одно значение, но возвращает серию значений с определенным смещением, даже если мы обычно думаем, что оператор обращения к истории обращается к n-му элементу.

Это означает, что, например, close[5] возвращает не одну цену закрытия, а серию цен закрытия , которые равны цене закрытия 5 баров назад.

Это смелое утверждение выше - «Серия цен закрытия» ;Означает ли это, что close[5] само по себе не является ценой закрытия 5-й свечи?

enter image description here

Если это так, то как мне будет отображатьтекущая цена закрытия для этой свечи с чем-то вроде:

strategy.entry("SHORT", strategy.short, comment=tostring(close[1]) )

1 Ответ

0 голосов
/ 11 июня 2018

Я все еще новичок в Pinescript, но заметил, что использование закрытия или открытия возвращает данные, которые не являются текущей ценой закрытия или открытия.Даже использование close[1] возвращает сумму, совершенно отличную от закрытия предыдущей свечи.

(...)

strategy.entry("SHORT", strategy.short, comment=tostring(close[1]) )

Это, к сожалению,ограничение TradingView.Когда вы используете функцию tostring() для аргумента comment (как в вашем фрагменте кода), TradingView генерирует только эту строку для первого бара, на котором происходит тестирование на истории.

Но этот текст остается неизменным для всего бэк-теста, что объясняет, почему вы видите цены, появляющиеся в «Тестере стратегий», которые сильно отличаются от того, что вы ожидаете, исходя из вашего понимания close[1] и тому подобного.

Мы можем легко проверить это сами с помощью следующего кода:

//@version=3
strategy(overlay=true, title="Example strategy")

longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))

if (longCondition)
    strategy.entry("My Long Entry Id", long=strategy.long, 
         comment=tostring(dayofmonth) + "-" + 
         tostring(month) + "-" + tostring(year))

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

Здесь мы генерируем комментарий к ордеру со днем, месяцем и годом текущего бара.Или, по крайней мере, вот как это должно работать.

Для первой сделки в «Тестере стратегий» он показывает правильно:

enter image description here

Затем для сделок намного позже в ходе тестирования на истории, TradingView по-прежнему использует старый, кэшированный комментарий ордера:

enter image description here

Подводя итог : странное поведение, которое вы испытали, связано с ограничением TradingView с функцией tostring() и комментариями к ордеру.

...