Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Session criteria is ignored

I want to use the Session Criteria for limiting the Strategy in her active time.

As I know it should be working with the Session function, but something with my logic is not right.

i_Handelszeit   = input.session(title="Haupthandelszeit", defval = "0700-2000")

// Check filter(s)
isInSession(_sess) => not na(time(timeframe.period, i_Handelszeit))
f_dateFilter = time >= i_startTime and time <= i_endTime  and isInSession(i_Handelszeit)

// Check buy/sell conditions
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter 


----------------------------------
Here the full code ... not my proberty. 

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")

i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input.time(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input.time(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
i_Handelszeit   = input.session(title="Haupthandelszeit", defval = "0700-2000")


// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
isInSession(_sess) => not na(time(timeframe.period, i_Handelszeit))
f_dateFilter = time >= i_startTime and time <= i_endTime  and isInSession(i_Handelszeit)



// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter 
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

This code is working but is not limiting the strategy.
enter image description here
In the Image you can see that the Strategy is still working between 20 o’clock and 7 o’clock in the morning.
It is ignored.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

It works fine. However, it will work based on your exchange’s timezone and not your local timezone.

I added a bgcolor() to see what’s happening.

enter image description here

If you want to use a custom timezone, you can use the third argument of time() which is timezone.

time(timeframe, session, timezone) → series int

timezone (series string) Timezone of the session argument. Can only
be used when a session is specified. Optional. The default is
syminfo.timezone. Can be specified in GMT notation (e.g. "GMT-5") or
as an IANA time zone database name (e.g. "America/New_York").

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading