Я все еще новичок в 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)
Здесь мы генерируем комментарий к ордеру со днем, месяцем и годом текущего бара.Или, по крайней мере, вот как это должно работать.
Для первой сделки в «Тестере стратегий» он показывает правильно:
Затем для сделок намного позже в ходе тестирования на истории, TradingView по-прежнему использует старый, кэшированный комментарий ордера:
Подводя итог : странное поведение, которое вы испытали, связано с ограничением TradingView с функцией tostring()
и комментариями к ордеру.