Ошибка стратегии Pinescript при попытке продать - PullRequest
0 голосов
/ 09 января 2020

Как вы можете видеть на моем снимке моего кода ниже, у меня есть сигнал покупки и продажи. Я пытаюсь добавить это к моему графику для бэк-теста, и он делает мою первоначальную покупку, но затем она никогда не будет продаваться. Я не уверен, почему, потому что у меня похожий скрипт, который делает то же самое, но он продает взад и вперед очень хорошо, когда тестирует обратно. Я проверил свой сигнал на продажу на покупку, чтобы увидеть, появится ли линия на графике, когда это должно быть, и это так, мой код для этого работает нормально. Что-то не так с спинкой. Спасибо за любую помощь, спасибо.

buy = (crossover(z100,c100) and z100>f100 and trend>reg or crossover(z100,f100) and z100>c100 and trend>reg) ? 50 : 7.5
plot(buy, title="buy", color=color.blue)
sell = (crossunder(z100,c100) and z100<f100 or crossunder(z100,f100) and z100<c100) ? 50 : 7.5
plot(sell, title="sell", color=color.red)
shares = 10000/close
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 24, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 25, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"
strategy.entry("buy", shares, when = window() and buy)  // buy long when "within window of time" AND crossover
strategy.close("sell", when = window() and sell) 

1 Ответ

2 голосов
/ 09 января 2020

Кандидат на проблемы в вашем коде (при условии v4):

1) Согласно справочному руководству (https://www.tradingview.com/pine-script-reference/v4), вам нужно сообщить strategy.close тот же идентификатор открытая сделка, которую вы пытаетесь закрыть, «покупка», в данном случае, следующим образом:

strategy.close("buy", when = window() and sell)

2) Если вышеприведенное не устраняет проблему, попробуйте оценить выражение для when условие перед вызовом strategy.entry an strategy.close, присвоением результата переменной и затем ссылкой на эту переменную в параметре when.

...