【问题标题】:Pinescript — Find the current day low within time rangePinescript - 在时间范围内找到当天的低点
【发布时间】:2022-07-26 23:02:51
【问题描述】:

我想获取有关在特定时间范围内出现一天最低点的次数的统计数据。我想获得这些数据的唯一方法是编写 Pinescript 策略。

我目前使用entryTime = input.session('0700-0900’) 指定何时应该搜索该值(图片下方的绿色区域一); 和tdayLow = request.security(tickername, 'D', low[0], lookahead=barmerge.lookahead_on) 指定应搜索的什么值。

我打算得到一个看起来像 this 的结果(每天一个或没有条目,因为只能有一个最低点)。不幸的是,它看起来像this(有几个条目,我不知道是怎么拍的,这取决于我所处的时间范围,没有一个是在当天的低点拍的)。

因为我想找到当天的最低点,所以我所处的时间框架不应该改变我得到的结果,这与我目前使用下面的代码获得的结果不同。

//@version=5
strategy("Day Low", overlay=true, margin_long=100, margin_short=100)


// === CURRENT DAY LOW ===
var tickername = ticker.new(syminfo.prefix, syminfo.ticker)
tlow = request.security(tickername, 'D', low[0], lookahead=barmerge.lookahead_on)


// === INPUT DATE RANGE ===
fromMonth  = input.int(defval = 7,       title = "From Month",      minval = 1, maxval = 12)
fromDay    = input.int(defval = 1,       title = "From Day",        minval = 1, maxval = 31)
fromYear   = input.int(defval = 2022,    title = "From Year",       minval = 2019)
thruMonth  = input.int(defval = 1,       title = "Thru Month",      minval = 1, maxval = 12)
thruDay    = input.int(defval = 1,       title = "Thru Day",        minval = 1, maxval = 31)
thruYear   = input.int(defval = 2112,    title = "Thru Year",       minval = 2019)


// === INPUT TIME RANGE ===
entryTime  = input.session('0700-0900',  title = "Entry Time")   // '0700-0900' is anytime to enter
exitTime   = input.session('0800-2000',  title = "Exit Time")    // '0700-2000' is anytime to exit


// === DATE & TIME RANGE FUNCTIONS ===
isDate() =>                                                               
    start  = timestamp(fromYear, fromMonth, fromDay, 00, 00)              
    finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)              
    isDate = time >= start and time <= finish                             

isTime(_position) =>                                                      
    isTime = time(timeframe.period, _position + ':1234567')               

// === LOGIC ===
enterLong  = tlow 
exitLong   = tlow + 20

// === EXECUTION ===
strategy.entry("L", strategy.long, when = isDate() and isTime(entryTime) and enterLong)  
strategy.close("L", when = isDate() and isTime(exitTime) and exitLong)

有人可以帮我获得与第一张图片相似的结果吗?谢谢!

PS :我显然不是想找到一种可以找到当天最低点的策略,而只是根据历史数据来跟踪它的制定时间。

【问题讨论】:

    标签: pine-script tradingview-api pinescript-v5


    【解决方案1】:

    由于您正在编写一个条件(应该是布尔值)

    enterLong  = tlow 
    exitLong   = tlow + 20
    

    默认情况下它会变成真的。您将不得不将它们更改为比较类似

    enterLong  = (low<=tlow)
    exitLong   = (high>=tlow + 20)
    

    最终代码

    //@version=5
    strategy("Day Low", overlay=true, margin_long=100, margin_short=100)
    
    
    // === CURRENT DAY LOW ===
    var tickername = ticker.new(syminfo.prefix, syminfo.ticker)
    tlow = request.security(tickername, 'D', low[0], lookahead=barmerge.lookahead_on)
    plot(tlow)
    
    // === INPUT DATE RANGE ===
    fromMonth  = input.int(defval = 7,       title = "From Month",      minval = 1, maxval = 12)
    fromDay    = input.int(defval = 1,       title = "From Day",        minval = 1, maxval = 31)
    fromYear   = input.int(defval = 2022,    title = "From Year",       minval = 2019)
    thruMonth  = input.int(defval = 1,       title = "Thru Month",      minval = 1, maxval = 12)
    thruDay    = input.int(defval = 1,       title = "Thru Day",        minval = 1, maxval = 31)
    thruYear   = input.int(defval = 2112,    title = "Thru Year",       minval = 2019)
    
    
    // === INPUT TIME RANGE ===
    entryTime  = input.session('0700-0900',  title = "Entry Time")   // '0700-0900' is anytime to enter
    exitTime   = input.session('0800-2000',  title = "Exit Time")    // '0700-2000' is anytime to exit
    
    
    // === DATE & TIME RANGE FUNCTIONS ===
    isDate() =>                                                               
        start  = timestamp(fromYear, fromMonth, fromDay, 00, 00)              
        finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)              
        isDate = time >= start and time <= finish                             
    
    isTime(_position) =>                                                      
        isTime = time(timeframe.period, _position + ':1234567')               
    
    // === LOGIC ===
    enterLong  = (low<=tlow)
    exitLong   = (high>=tlow + 20)
    
    // === EXECUTION ===
    strategy.entry("L", strategy.long, when = isDate() and isTime(entryTime) and enterLong)  
    strategy.close("L", when = isDate() and isTime(exitTime) and exitLong)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多