PineCoders

MTF Selection Framework - PineCoders FAQ

4169 просмотров
197
Our MTF Selection Framework allows Pine coders to add multi-timeframe capabilities to their script with the following features:

► Timeframe selection
The higher timeframe can be selected using 3 different ways:
• By steps (60 min., 1D, 3D, 1W, 1M, 1Y).
• As a multiple of the current chart's resolution, which can be fractional, so 3.5 will work.
• Fixed.

► Non-repainting or Repainting mode can be selected.

► Smoothing of the HTF line
Can be turned on/off and a smoothing factor allows the user to select the degree of smoothing he requires.

The framework is used here to create a higher timeframe version of a simple RSI line, but it can be used to access HTF information for almost any signal.


Functions used


f_resInMinutes()
Converts the current timeframe.multiplier plus the TF into minutes of type float.
• In Pine, the timeframe.multiplier is an integer representing the resolution, but a value of 1 can mean one day or one minute. This function converts that information in a standard fractional float minutes format that can then be used by the other functions in the framework.
• If the chart's current resolution is 15 seconds, the function will return 0.25. If the chart's resolution is one day, it will return 1440.

f_tfResInMinutes(_resolution)
Returns resolution of _resolution period in minutes.
• This function does the same as f_resInMinutes(), but on the target resolution supplied as a parameter in the timeframe.period string format.

f_resNextStep(_res)
Given a current resolution in fractional float minutes, returns its corresponding stepped HTF in the timeframe.period string format.
• This allows the implementation of the step HTF selection mode.

f_multipleOfRes(_res, _mult)
Given a current resolution in fractional float minutes and a fractional multiplier, returns a multiple of the resolution as a string in "timeframe.period" format usable with "security()".
• A multiple like 3.5 is allowed.
• Note that with seconds resolutions, the result returned is constrained by the discrete seconds resolutions available on TV.

f_htfLabel(_txt, _y, _color)
Used to display a label showing either:
• A warning when the chart's resolution is not lower than the HTF.
• The HTF resolution currently used.
The y position used to position the label will require adaptation to the signal you are using. For use in "overlay = true" mode, a technique that works well is commented out in the code.

Информация о релизе: Updated comments and label function.
Информация о релизе: Fixed alignment in code.
Информация о релизе: Changed variable name in label function.
Информация о релизе: Optimized f_tfResInMinutes(_resolution). Thanks to MichelT!
Информация о релизе: Typo. Thx scarf!
Информация о релизе: .
• Added steps to the shorter TFs in f_resNextStep(). The steps are now: 15 min., 60 min., 4H, 1D, 3D, 1W, 1M, 1Y.
• Also added a compact version of the functions at the end of the script, which uses only 7 lines.
Информация о релизе: .
Added one function:
f_resFromMinutes(_minutes)
Given a resolution in fractional float minutes, returns it as a string in "timeframe.period" format usable with "security()".
Информация о релизе: Added 2 functions:
f_theoreticalDilationOf(_res)
f_avgDilationOf(_res)
They return the theoretical and the average number of chart bars (the dilation) in the higher resolution. The average number will vary because of non-trading period or irregularities in datasets.
Удалить из избранных скриптов Добавить в избранные скрипты
Tools and ideas for all Pine coders: http://www.pinecoders.com
Our Pine FAQ & Code: http://www.pinecoders.com/faq_and_code/
Pine news broadcasts: https://t.me/PineCodersSquawkBox or https://twitter.com/PineCoders

Комментарии

awesome, thanks LucF!
+2 Ответить
Always amazed by your work! Thanks so much for sharing!
+1 Ответить
Nice work man! How I can plotcandle from higher order timeframe. For example I have 4 bars on 15m timeframe and I would like to plotcandle from 1h timeframe but from full hour to full hour eg. 9:00 to 10:00 not 9:15 to 10:15 because security function returns timeframe "60" not for full hours.
Ответить
PineCoders Kapucha
@Kapucha, If you want to plot candle-like drawings that extend across bars you'll need to use a technique like @RicardoSantos is using here: and the numbers of candles you'll be able to draw will be limited. The only other option, afawk, would be to `plotcandle()` the same candle on all intrabars.
Ответить
LucF, A quick question as I am struggeling with the smoothing factor. Right now you have somekind a an automatic smooth factor defined in line 123 (vHtfSmoothLen = max(2, rsiLength / vHtfSmooothFact))
But would it be possible to use the timeframe multiplier for this? Something like f_multipleOfRes(vResInMinutes, vHtfType2) / timeframe.period ???

Right now the smoothing isn't that great
Ответить
@GeVe, You can make the smoothing factor whatever you want. Keeping it of the "simple int" type will make it usable as a length with `ema()`, so will avoid having to use a special averaging function able to work with a "series" period. If your objective is to adapt smoothing to the mode 2 type of selection using a multiple of the current TF, you could try just using that multiple as is, like so:
 vHtfSmoothLen = int(max(2, vHtfType2))
If you wanted to make the smoothing length independent of the MTF selection mode and just use the ratio of the HTF/TF, regardless of how the HTF was calculated, then you could use something like:
vHtfSmoothLen = int(max(2, f_tfResInMinutes(vHtf)/vResInMinutes))
Sma(src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0)
rHtf := vHtfOn and vHtfSmooth ? Sma(Sma(Sma(rHtf, vHtfSmoothLen), vHtfSmoothLen), vHtfSmoothLen) : rHtf
This uses alexgrover's `Sma()` function which accepts a series value for its period. It's lifted from here:
Ответить
GeVe PineCoders
@PineCoders, This was exactly what I was looking for Luc. It's magic. Thanks a lot for your crispy explanation
Ответить
Looks nice! Is it possible to plot warning text if the user selects a TF lower than the chart TF?
Ответить
PineCoders coininvestor
@coininvestor, Yes. Look at lines 117-118.
+1 Ответить
Домой Скринер акций Скринер форекс Скринер криптовалют Экономический календарь О проекте Особенности Цены Приведи друга Правила поведения Справочный центр Решения для сайтов и брокеров Виджеты Графики TradingView для сайтов Легкая версия графиков Блог и новости Твиттер
Профиль Настройка профиля Счёт и оплата Ваши друзья Монеты Мои запросы в поддержку Справочный центр Опубликовано идей Подписчики Подписки Личные сообщения Чат Выйти