[R-SIG-Finance] R quantstrat - filter consecutive entries
Andreas Henneck
hennecke@@ndre@@ @end|ng |rom web@de
Fri May 29 09:45:06 CEST 2020
Hi Jasen et al,
thanks for the quick response and invite. I'll be glad to do post
questions on github.
sigThreshold, cross = TRUE responds as programmed and the same as I
would expect sigCrossover to work, when passing one parameter as a
constant. Just wording for the long side: Two consecutive entry signals
occur, i.e. stoch crosses the 0.25 threshold from below on a second
lower low, while the BB crossing has not switched to "short" yet. It is
more a question of the strategy not detecting a lower low well and thus
filtering a bad order to begin with. So the ways I am looking to explore
are:
- objective for quantstrat programing: filter consecutive entries
after an order has already been placed and filled. How can quantstrat
solve this?
- objective for strategy: improve the filter to be more responsive to
detect the change of direction. The literature suggests MAs for filters.
Any tips on specific I should explore?
Thanks and kind regards,
Andreas
Am 28.05.2020 um 18:36 schrieb Jasen Mackie:
> Hi Andreas
>
> Thanks for the question. In future, feel free to ask a question by
> creating an issue on the project repo -
> https://github.com/braverock/quantstrat/issues.
>
> You are looking for the ?sigCrossover function.
>
> The project README
> <https://github.com/braverock/quantstrat/blob/master/README.md> on
> GitHub can also help with more learning materials and as usual look
> into the demo folder for concrete examples.
>
> Good luck.
>
> Regards
> Jasen
>
> On Thu, 28 May 2020 at 12:18, Andreas Henneck <hennecke.andreas using web.de
> <mailto:hennecke.andreas using web.de>> wrote:
>
> Dear all, being new to this list, kindly allow me to introduce
> myself: I
> am an engineer by education, marketer of automation products by
> profession and R fan of a few years. i am currently learning to
> program
> technical trading rules for backtesting. The purpose is to stablize
> investments and learn to trade. As neither a search through the last
> three years of e-mail from this list nor a search through
> stackexchange
> et al revealed an answer I would like to dare a post. I hope I am not
> being to basic with my request.
>
> This first self-written strategy on EOD data is looking to follow
> trends
> utilizing Bollinger Bands for indicating direction and Stochastik
> fastD
> to detect entry points and exits with overbought and oversold
> positions.
> My first version codes long only trades. The rules work all fine, the
> problem is this:
>
> Stochastic crosses a 0.25 threshold from below more than once,
> i.e. in a
> slight downward trend thus triggering multiple consecutive entry
> orders,
> before any exits or stops have triggered. This essentially increases
> position size.
>
> The essential question: What is the solution to entering a trade more
> than once?
>
> Looking forward to your responses and insight. Any additional tips for
> quantstrat thinking or coding are appreciated. Below find some
> hopefully
> illustrating code snippets.
>
> Kind regards,
> Andreas
>
> ##Not run <- not sure that I am using this properly here.
>
> # Create indicators
>
> BBTMDir = function(HLC, n = 10, sd = 1, nFastK = 5, nFastD = 2) {
>
> bb_dir <- # rules not essential to the problem, values look
> something
> like: round(runif(5))
>
> # Stochastic overbought and oversold indicator. Symmetry for
> simplicity:
>
> sto_sig <- sigThreshold(label = "StochSig", data = sto, column =
> "fastD",
> threshold = 0.25, relationship = "gt",
> cross
> = TRUE) * 1 +
> sigThreshold(label = "StochSig", data = sto, column = "fastD",
> threshold = 0.75, relationship = "lt", cross =
> TRUE) * -1
> merge(bb_dir, sto_sig) # return the two columns
>
> # ... standard boiler plate quantstrat setup ...
>
> s <- add.indicator( s, 'BBTMDir', label='BBTM',
> arguments=list( HLC = quote(HLC(mktdata))) )
>
> # Entry and exit rules based on bb_dir => BBDIR.BBTM as filter and
> StochSig.BBTM like this:
>
> s <- add.signal( s, 'sigFormula', label='StochEntryLong',
> arguments = list(cross = TRUE, formula = "BBDir.BBTM
> == 1 & StochSig.BBTM == 1"))
> s <- add.signal( s, 'sigFormula', label='StochExitLong',
> arguments = list(cross = TRUE, formula = "BBDir.BBTM
> == 1 & StochSig.BBTM == -1"))
>
> # as I am still learning and testing this, there are only these two
> simple rules for now:
>
> s <- add.rule(
> s, name='ruleSignal', type='enter', label='ChgDirLong',
> arguments = list(
> sigcol="StochEntryLong", sigval=TRUE, orderqty=orderQ,
> TxnFees=.txnfees,
> ordertype='market', orderside='long', orderset = "ocolong"
> )
> )
>
> s <- add.rule(
> s, name='ruleSignal', type='exit', label='ExitChgDir',
> arguments = list(
> sigcol="StochExitLong", sigval=TRUE, replace = TRUE,
> orderqty="all",
> ordertype='market', orderside='long', orderset = "ocolong"
> )
> )
>
> # ...
>
> applyStrategy( ...
>
> _______________________________________________
> R-SIG-Finance using r-project.org <mailto:R-SIG-Finance using r-project.org>
> mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R
> questions should go.
>
[[alternative HTML version deleted]]
More information about the R-SIG-Finance
mailing list