TIMEFRAME (PS)
TIMEFRAME en ProScreener establece el marco temporal utilizado por todas las líneas de código siguientes, lo que permite escaneos que combinan condiciones diarias, semanales e intraday.
Sintaxis
TIMEFRAME(time_period)Parámetros
| Nombre | Tipo | Descripción |
|---|---|---|
time_period | palabra clave | El marco temporal aplicado a las líneas siguientes, por ejemplo 15 minutes, 1 hour, daily, weekly, o monthly. |
Cómo funciona
Un ProScreener normalmente evalúa todas las expresiones en el marco temporal seleccionado en los ajustes del screener. Un TIMEFRAME la llamada cambia ese contexto, por lo que las constantes de precio y las llamadas a indicadores de las líneas siguientes se calculan en el nuevo marco temporal. El cambio sigue en vigor hasta otra TIMEFRAME aparece la llamada, lo que permite que un único screener combine condiciones de varios marcos temporales.
El patrón estándar calcula las condiciones de cada marco temporal en variables booleanas y después combina esas variables en el bloque final SCREENER llamada. Las variables conservan los valores que se les asignaron, con independencia de qué marco temporal estuviera activo en el momento de la asignación, por lo que un indicador de cruce semanal se puede combinar libremente con uno de sobreventa diario.
La palabra clave se escribe igual que la instrucción multi-timeframe usada en estrategias automáticas, pero son dos funciones distintas. La variante de estrategia, tratada en TIMEFRAME (PB/PO), controla cómo un sistema en ejecución muestrea los datos y admite el UPDATEONCLOSE y DEFAULT modificadores. La variante de ProScreener es más simple: solo redirige el contexto de datos de las líneas de código siguientes. El código no puede copiarse entre los dos entornos sin revisión.
Ejemplos
Ejemplo 1, Cruce del MACD semanal con Stochastic diario en sobreventa (ProScreener)
// Compute MACD on the weekly timeframe
TIMEFRAME(weekly)
weeklyMACD = MACD[12,26,9](Close)
bullishCrossover = weeklyMACD crosses over weeklyMACD[1]
// Compute the Stochastic on the daily timeframe
TIMEFRAME(daily)
dailySto = Stochastic[14,3](Close)
oversold = dailySto < 30
// Combine both timeframes in the screener condition
SCREENER[bullishCrossover AND oversold]Se evalúan dos indicadores en marcos temporales distintos y se combinan en una sola condición. Este es el ejemplo canónico de la referencia oficial.
Ejemplo 2, Filtro de tendencia semanal con un pullback diario (ProScreener)
// Weekly uptrend qualifier
TIMEFRAME(weekly)
weeklyTrend = close > Average[30](close)
// Daily pullback that holds above the 20-bar average
TIMEFRAME(daily)
dailyMA = Average[20](close)
pullback = low <= dailyMA AND close > dailyMA
SCREENER[weeklyTrend AND pullback](close AS "Close")Solo se devuelven los instrumentos en tendencia alcista semanal que han caído hasta su media diaria de 20 bars y han cerrado de nuevo por encima de ella.
Ejemplo 3, Pico de volumen intraday dentro de una tendencia alcista diaria (ProScreener)
// Volume spike on the 15-minute timeframe
TIMEFRAME(15 minutes)
volSpike = Volume > 3 * Average[20](Volume)
// Daily trend qualifier
TIMEFRAME(daily)
uptrend = close > Average[50](close)
SCREENER[volSpike AND uptrend](close AS "Last price")Un estallido de actividad a corto plazo solo se informa cuando el marco temporal superior confirma una tendencia alcista, una forma habitual de reducir el ruido en los escaneos intraday.
Errores y trampas habituales
- El cambio persiste. Cada línea después de un
TIMEFRAMEllamada se ejecuta en ese marco temporal hasta la siguiente llamada. Una condición escrita debajo de un bloque semanal sin volver atrás se calcula silenciosamente con datos semanales, una causa frecuente de screens que devuelven muy pocos resultados o resultados erróneos. - No es intercambiable con la variante de estrategia.
UPDATEONCLOSEyDEFAULTpertenecen aTIMEFRAME (PB/PO)y no se aceptan en ProScreener. Pegar código de estrategia en un screener no compila o se comporta de forma distinta. - Historial limitado en marcos temporales pequeños. ProScreener mantiene una cantidad limitada de historial por marco temporal. Las ventanas de histórico profundas como
Average[200]en un marco temporal de minutos puede superar los datos disponibles e impedir que la condición se evalúe como se espera. - Calcular antes de combinar. Guarda el resultado de cada marco temporal en una variable y combina las variables al final en el
SCREENERllamada. Referenciar un indicador directamente en la condición del screener usa el marco temporal que estuviera activo en último lugar, lo cual es fácil de equivocar.
Instrucciones relacionadas
TIMEFRAME (PB/PO), la variante de ProBacktest y ProOrder de esta instrucción.SCREENER, define la condición de filtro y la columna de resultado de un screener.EQUITYFRAME, cambia un screener a los datos de otro activo.MACD, indicador de convergencia y divergencia de medias móviles.Stochastic, el oscilador estocástico %K.Average, media móvil sobre un periodo elegido.EstimatedVolume, volumen final proyectado del bar actual en ProScreener.RSI, oscilador del índice de fuerza relativa.