Oddball SampP System por Mark Brown Oddball SampP System por Mark Brown Negociando el impulso de la amplitud del mercado Una de las mejores maneras de seguir la dinámica verdadera de los mercados es supervisar sus ediciones de avance y de disminución. Heres una estrategia que utiliza el impulso de las ediciones avanzadas al tiempo negocia a corto plazo. Mark Brown El SampP tracking stock (SPY) y el contrato de futuros SampP 500 probablemente se encuentran entre los mercados más difíciles de negociar. Las estadísticas mostrarían muy probablemente el contrato de futuros hacia la tapa de un grupo de mercados responsables del agotamiento más rápido de las cuentas que negociaban del cliente. La mayoría de los comerciantes a corto plazo comercializan los mercados SampP 500 utilizando plazos que van desde una sola marca hasta una hora. Al negociar en estos plazos más cortos, es fácil desorientarse y perder la pista de la verdadera dinámica del mercado. Una herramienta que muchos comerciantes usan para rastrear la fortaleza del mercado interno es un indicador de amplitud, como la línea de avance-declive (el total de avance de las acciones de NYSE menos las acciones en declive). Los cambios en el número de asuntos que avanzan o disminuyen pueden ofrecer una visión de la dinámica del mercado no revelada inmediatamente por la acción del precio. Por ejemplo, incluso si el mercado está aumentando, una línea descendente de avance-declive puede indicar que estas ganancias están siendo impulsadas por un número cada vez menor de acciones, en cuyo caso una corrección o reversión puede ser inminente. Si bien los indicadores de amplitud se utilizan comúnmente para medir la fuerza direccional a más largo plazo, el análisis intradía de los problemas de avance o disminución puede utilizarse para desarrollar estrategias de negociación a más corto plazo. Aquí, vamos a ver cómo la medición del impulso de avanzar las acciones de NYSE sobre una base horaria se puede utilizar para negociaciones de tiempo. Amplitud de aire fresco Es bien sabido que el sesgo direccional combinado de las listas de emisiones progresivas, decrecientes e inalteradas de NYSE es útil para determinar la dirección general del índice SampP 500 y futuros SampP. Tradicionalmente, los estudios se han basado en una combinación de las cuestiones que avanzan y disminuyen (como la línea de avance-declive descrita anteriormente), o el avance, la disminución y las cuestiones sin cambios. Sin embargo, la investigación sugiere que usted puede obtener el mismo beneficio (y simplificar su análisis en el proceso) mediante el uso sólo de las estadísticas de avance de los problemas. Y al igual que muchos comerciantes a corto plazo utilizar el impulso de precios en sus decisiones comerciales, el impulso de la amplitud se puede utilizar para activar las operaciones. De hecho, el impulso de las cuestiones de avance proporciona suficiente información para desarrollar una estrategia comercial rentable que le permite pasar por alto los precios reales del mercado. Un simple modelo de negociación basado en este enfoque es el sistema Oddball SampP, que utiliza lecturas horarias de la lista de avances de NYSE. Este modelo de tiempo se basa en la teoría de que a corto plazo los futuros SampP (e incluso el índice SampP real) y la amplitud del mercado pueden desviarse de vez en cuando, pero sin embargo se alinean cuando se hacen grandes movimientos. El propósito original detrás de esta estrategia era utilizar el avance / disminución / números sin cambios para identificar situaciones de alta volatilidad que mostraron la mayor probabilidad de tener un sesgo direccional. Sin embargo, las investigaciones y las pruebas demostraron que era suficiente utilizar los avances por sí solos no sólo como un filtro, sino también como una estrategia comercial independiente. Además, como se mencionó anteriormente, el uso de sólo números de avance de números hace que el enfoque menos complicado. Como un enfoque comercial muy básico, esta estrategia también funciona como un excelente punto de referencia con el que comparar otros sistemas. La estrategia se basa en el cálculo de la tasa de cambio (ROC) del número de emisiones por hora. ROC, que es un indicador de tipo oscilador, es la diferencia (o alternativamente, la relación) entre el precio actual y el precio n períodos en el pasado. Por ejemplo, el ROC de cinco días sería la diferencia entre el precio de hoy y el precio hace cinco días. En un gráfico horario, la ROC de cinco periodos sería la diferencia entre el precio actual y el precio de cinco barras (horas). (Para una discusión más detallada del indicador ROC, vea Indicador Insight: Momentum y tasa de cambio, Active Trader, octubre, página 82). Debido a que hay siete horas en el día de negociación, se utilizó un ROC de siete periodos del número de ediciones avanzadas en esta estrategia. Una forma de construir un sistema basado en osciladores es activar operaciones cuando el indicador cruza por encima y por debajo de la línea cero (la línea mediana que representa momento neutro, cuando el precio actual es el mismo que el precio hace n períodos). Pero una mejor alternativa es utilizar dos niveles de indicador separados, o zonas uno para iniciar operaciones largas y otra para iniciar todas las transacciones cortas. Un buen ajuste inicial es establecer el nivel de compra a 3 por ciento, y el nivel de venta a 1 por ciento. Es decir, usted compra tan pronto como la tasa de cambio de las ediciones avanzadas es un 3 por ciento más alto que hace siete períodos y se vende tan pronto como cae por debajo del 1 por ciento más alto que hace siete períodos. Esto permite que el sistema esté siempre en el mercado, ya sea con una posición larga o corta. Los ajustes de indicadores utilizados aquí se seleccionaron para mantener la estrategia tan sencilla y sencilla como sea posible para las pruebas. Los comerciantes pueden, por supuesto, experimentar con otros ajustes de indicadores para ver si producen mejores resultados. De forma similar, un indicador de tipo oscilador diferente podría ser sustituido por el ROC. La lógica del sistema subyacente y el enfoque comercial seguirían siendo los mismos. En resumen, el sistema SampP extravagante funciona de la siguiente manera: Si la tasa de cambio de las ediciones de avance es mayor que el nivel de gatillo de compra, comprar el mercado. Si la tasa de cambio de las ediciones de avance es menor que el nivel de activación de venta, vender el mercado. Cada hora, en la hora Debido a que este sistema recalcula cada hora en la hora, hasta e incluyendo el cierre de la bolsa a las 4 pm EST, no podrá utilizar la última lectura del día si está operando la SampP 500 acciones de seguimiento (SPY). Sin embargo, si usted está negociando los futuros SampP, todavía será capaz de entrar en un comercio basado en la última lectura debido a que el mercado de futuros continúa operando hasta las 4:15 p. m. EST. Para cualquier mercado, esto también significa que usted tendrá que esperar para la primera lectura en el EST de 10 a. m. al comercio en la mañana. Pero esto es realmente ventajoso, porque como muchos comerciantes profesionales señalan, debe evitar el comercio inmediatamente después de la apertura debido a la volatilidad sin dirección que a menudo se produce antes de que el mercado encuentra su dirección y ritmo para el día. Este tipo de estrategia comercial se ve reforzada por el hecho de que es fácil de supervisar y ejecutar, y se basa en una entrada primaria. El período de una hora fue seleccionado porque está fuera del horizonte de tiempo típico del comerciante a corto plazo, y también porque la consistencia es un factor clave cuando se implementa un modelo mecánico. Es fácil comprobar sus operaciones cada hora en la hora, o programar su computadora portátil, teléfono móvil o computadora de mano para hacerlo por usted. Además, sólo el uso de un punto de datos por hora también mejora la fiabilidad del modelo. Porqué Porque cuando usted ve una carta intraday y observa una mala impresión del precio será muy probablemente el alto o el punto bajo de la barra dada. Al eliminar todos los puntos de datos, pero el cierre, también reduce la posibilidad de errores. Este es un extracto. Para el artículo completo, véase el número de diciembre de 2000 de la revista Active Trader. Estrategia: Sistema Oddball SampP Enfoque: sistemático, stop-and-reverse (siempre en el mercado) Mercado: Índice de seguimiento de acciones (SPY, QQQ) y futuros de índices bursátiles Configuración de indicadores: Crear un indicador de tasa de cambio de los valores horarios de cierre De los avances de la NYSE. Incluya solamente el punto de datos de cierre de la hora natural, empezando a las 10 am y terminando a las 4 p. m. EST. Para calcular el indicador, utilice la siguiente fórmula: Tasa de cambio en emisiones anticipadas (RAI) (AI / AIn -1) 100, AI Número máximo AIn Número de emisiones anticipadas n períodos Entrada: Se emite una señal de compra cada vez que el indicador Es mayor que 3. Se emite una señal de venta cada vez que el indicador es menor que 1. Salir: Stop-and-reverse. Las posiciones se invierten con cada nueva señal de compra y venta, como se ha descrito anteriormente. Control de riesgos / gestión del dinero: No hay ninguna técnica de gestión de dinero empleada, aparte de que el sistema permanece en el mercado 100 por ciento del tiempo, ya sea largo o corto, con un número constante de contratos. RAI - Tasa de cambio en las ediciones de anticipación. Sistema Oddball SampP Ingrese Long / Close Short Fml (RAI - Tasa de cambio en las ediciones anticipadas) gt 50 (OPT) 10 (OPT) Oddball System 8211 Una actualización OddBall es creado por Mark Brown, y apareció en la revista Active Trader. Se trata de un sistema comercial diseñado para la negociación del futuro índice S038P (o la contraparte emini). La generación de señal de Oddball no depende de los datos de precios en sí. En su lugar, se basa en los datos de Advance Issues de NYSE. Originalmente publicamos esta implementación de system8217s en NeoTicker y su rendimiento en 2003. Aquí está una actualización del rendimiento actual de este interesante sistema. El mensaje de patrocinador de la instalación (anuncio gratuito para todos los miembros) 1. S038P o emini S038P Gráfico horario, de 9:30 AM a 4:15 PM ET 2. NYSE Advance emite el gráfico horario 3. Vaya largo cuando la tasa de cambio en los problemas de avance superó el Prescrito de nivel largo 4. Ir corto cuando la tasa de cambio en los problemas de avance superó el nivel corto prescrito Para obtener más información detallada sobre OddBall, aquí está el enlace. La versión NeoTicker de OddBall está disponible aquí. Aquí hay un gráfico del sistema Oddball en acción, rendimiento desde 1999 Una imagen vale un millón de palabras, aquí es la curva de equidad del sistema desde finales de 1998, De la imagen es obvio que el sistema ha estado en una prolongada reducción Período desde finales de 2002. Considere el sistema se publicó en diciembre de 2000, que se desempeñó muy bien durante casi 2 años antes de la ruptura actual. Lo que va mal Vamos a echar un vistazo al rendimiento anual del system8217s, Es obvio que el sistema ha estado cayendo en porcentaje de ganadores desde el año 2002. Es significativamente menor que incluso el año 1999. Desde entonces, si se cruzan las curvas de equidad Arriba, notarías que el lado largo sólo la equidad no va a ninguna parte desde el año 2001. Algunos pueden tratar de argumentar que el año 2000 en adelante es un mercado de tendencia hacia abajo, pero eso no es un argumento realmente confiable porque durante el año 2000-2001, el sistema Está haciendo absolutamente bien en el lado largo. Que en combinación con el bajo valor en porcentaje de los ganadores, es el signo de un sistema perdiendo su ventaja. ¿Hemos tenido la oportunidad de dejar de operar el sistema? Al final del año 2002, si usted comprueba consistentemente la estabilidad de los sistemas que el comercio, que habría puesto este sistema en la lista de vigilancia ya, porque no está haciendo lo que se supone hacer. Para principios de 2003, la caída en los porcentajes de ganadores es tan profunda que nadie debería haber dejado de comercializarla porque sus características ya no coinciden con las que hemos visto en el período de backtesting. Como un ejercicio, puede realizar la comparación mes a mes en las estadísticas de rendimiento, entonces verá lo que quiero decir. Alimentos para los pensamientos Como se oponen a lanzar simplemente este sistema en el cubo de la basura, hay algo útil que podemos reutilizar Tal vez la incorporación de la idea en otros modelos de comercio para mejorar las probabilidades Vamos a dejar que para el artículo siguiente. Regreso a la página principal Septiembre 2000, Sistema Híbrido No. 1 Octubre 2000, Sistema RS No. 1 Noviembre 2000, Sistema de retirada No 1 Enero / Febrero 2001, Sistema Meandro marzo 2001, Diciembre de 2001, Sistema de comercio de pares Febrero de 2002, Sistema de pares de comercio de abril de 2002 III sistema mayo 2002, variación prístina junio 2002, salto experto julio 2002, cambio medio móvil agosto 2002, marcha inversa septiembre 2002, ruptura baja volatilidad octubre 2002, sistema de la ruptura de la volatilidad noviembre 2002, sistema de la acción de Counterpunch diciembre 2002, , Sistema de ruptura de volatilidad a largo plazo Febrero de 2003, Sistema de ruptura dinámica mayo de 2004, Sistema de cruce de corto plazo WMA Mayo de 2004, Otro sistema de extravío (Futures Trading System Lab) Junio 2004, QQQ crash system Junio 2004 Experimentando con salidas Laboratorio) Junio de 2004, Indicador de punto medio del canal Indicador de punto medio Active Trader está trabajando con varias compañías de software para proporcionar código para el sistema de comercio Laboratorios no mostrados aquí. Entradas: LookBack (9), WhereToBuy (0.5) Variables: HighValue (0), LowValue (99999), BuyValue (0) LowValue Menor (Low, LookBack) HighValue Mayor (Alto, LookBack) BuyValue (HighValue - LowValue) 0 Then Begin Buy tomorrow at BuyValue LowValue Stop Si Cerrar lt LowValue1 Then ExitLong en Open Si BarsSinceEntry 9 y OpenPositionProfit lt 0 Entonces ExitLong on Open Octubre 2000, Código TradeStation: Variables: RelStr (0), AvgRelStr (0), CalcRelStr (0) , AvgOBV (0), CalcOBV (0), CalcStr (0) RelStr IFF (AvgPrecio 0, 0, AvgPrice / AvgPrice Datos2) AvgRelStr Promedio (RelStr, 5) CalcRelStr IFF (RelStr 0, 0, RelStr / AvgRelStr) CalcStr CalcRelStr CalcOBV Si CalcStr Cruces por encima de 1,0 y MarketPosition 0 Entonces compra en Cerrar Si CalcStr cruza por debajo de 1 Entonces ExitLong en Cerrar Si Close lt EntryPrice 0,96 Luego ExitLong on Close Noviembre (0, 0, OBV / AvgOBV) 2000, código TradeStation: Condition1 MarketPosition 0 y Close Average (Close, 50) y High High1 y (close1 lt close2 y close2 lt close3) Si Condition1 True Then Comprar mañana en Market ExitLong (quotStopquot) Si PositionProfit 0 Then ExitLong (quotExitquot) mañana en el mercado de enero / febrero de 2001, código de TradeStation: Vars: SumVS (0), AvgVS (0), DiffVS (0), StdVS (0), SetArr (0), SumArr (0) (0), VSHigh (0), RiskReward (0) Para SetArr 0 A 4 Comienzo VSSetArr 4 0 (OpenSetArr - AvgPriceSetArr 1) / AvgPriceSetArr 1 VSSetArr 4 1 (HighSetArr - AvgPriceSetArr 1) / AvgPriceSetArr 1 Para SumArr 0 A 19 Begin Si SumArr 0 Entonces SumVS SumVS VSSumArr Si SumArr 19 Entonces AvgVS SumVS / 20 (PromedioSetArr 1) / AvgPriceSetArr 1 VSSetArr 4 3 (CloseSetArr - AvgPriceSetArr 1) / AvgPriceSetArr 1 Para DiffArr 0 A 19 Comience Si DiffArr 0 Entonces DiffVS DiffVS Square (VSDiffArr - AvgVS) Si DiffArr 19 Entonces StdVS SquareRoot (DiffVS / 20) VSLow AvgPrice (1 (AvgVS - StdVS 2)) VSMid AvgPrice (1 AvgVS) VSHigh AvgPrice (1 (AvgVS StdVS 2)) Si MarketPosition 0 Entonces Comienza a Comprar (quotBuyquot) Mañana en VSLow Limite Si MarketPosition 1 Entonces ExitLong (quotPTquot) Mañana en VSHigh Limit Si MarketPosition 1 Entonces ExitLong (quotTSquot) Mañana en VSLow Stop Si Abierto Mañana gt VSLow Then ExitLong (QuotSLaquot) De entrada (quotBuyquot) En (VSLow - (VSMid-VSLow)) Pare si se abre mañana Lt VSLow Then ExitLong (quotSLbquot) Código: Vars: MaLen (21), Ratio2 (0), Ratio3 (0), MaRatio2 (0), MaRatio3 (0), DiffMaRatio2 (0), DiffMaRatio3 (0), ProdDiff (0), UpperProdDiff (0), LowerProdDiff (0) Ratio2 C / C Datos2 Ratio3 C / C Datos3 MaRatio2 Promedio (Ratio2, MaLen) MaRatio3 Promedio (Ratio3, MaLen) DiffMaRatio2 Ratio2 / MaRatio2 DiffMaRatio3 Ratio3 / MaRatio3 ProdDiff DiffMaRatio2 DiffMaRatio3 UpperProdDiff 1 StdDev (ProdDiff, MaLen) 1 LowerProdDiff 1 - StdDev (ProdDiff, MaLen) 2 Si MarketPosition 0 y BarsSinceExit (1) gt 1 y ProdDiff gt UpperProdDiff y ProdDiff gt ProdDiff2 Luego Buy (quotGo Longquot) en Close Si MarketPosition 1 y ProdDiff lt ProdDiff4 Luego ExitLong (quotEnd Longquot) en Market ExitLong QuotTrailing Longquot) mañana a la más baja (Baja, 2) Stop Si MarketPosition 0 y BarsSinceExit (1) gt 1 y ProdDiff lt LowerProdDiff y ProdDiff lt ProdDiff2 Luego Sell (quotGot Shortquot) en Close Si MarketPosition -1 y ProdDiff gt ProdDiff4 Then ExitShort (quotEnd Shortquot) en Market ExitShort (quotTrailing Shortquot) mañana en el más alto (Alto, 2) Stop Si BarsSinceEntry 8 y OpenPositionProfit lt 0 Entonces Comienza ExitLong en Market ExitShort al Final del Mercado Junio 2001, Código TradeStation: Entrada: VSStd (1) Vars: SumVS (), AvgVS (0), DiffVS (0), StdVS (0), SetArr (0), SumArr (0), DiffArr (0), VSLow (0), VSMid (0), VSHigh (0), RiskReward 0) Array: VS20 (0) Para SetArr 0 A 4 Comienzo VSSetArr 4 0 (OSetArr - CSetArr 1) / CSetArr 1 VSSetArr 4 1 (HSetArr - CSetArr 1) / CSetArr 1 VSSetArr 4 2 (LSetArr - CSetArr 1) / CSetArr 1 VSSetArr 4 3 (CSetArr - CSetArr 1) / CSetArr 1 Fin para SumArr 0 a 19 Begin Si SumArr 0 SumVS 0 SumVS SumVS VSSumArr Si SumArr 19 Entonces AvgVS SumVS / 20 Para DiffArr 0 A 19 Comience Si DiffArr 0 Entonces DiffVS 0 DiffVS DiffVS (VSDiffArr - AvgVS) Si DiffArr 19 Entonces StdVS SquareRoot (DiffVS / 20) Final End VSLow C (1 (AvgVS - StdVS VSStd)) VSMid C (1 AvgVS) VSHigh C (1 (AvgVS StdVS VSStd)) Si MarketPosition 0 y (Cerrar, 80) 11 Comprar (quotBuyquot) mañana en VSLow límite Si Promedio (Close, 80) lt Promedio (Close, 80) 11 Entonces Vender mañana A VSHigh límite Fin Si BarsSinceEntry gt 1 Then Comenzar ExitLong en Close ExitShort on Close End Julio 2001, código TradeStation: Vars: MaLen (9), AvgVolume (0), Turbo (0), InvTurbo (0), MaWeight (0), TurboMA (0) Moy PromVolume (V, MaLen) Turbo (AvgVolume - Menor (AvgVolume, MaLen)) / (Máximo (AvgVolume, MaLen) - Menor (AvgVolume, Malen) InvTurbo 1 - Turbo If MaLen gt 2 Entonces MaWeight (1 MaLen)) Else MaWeight 0.67 TurboMA TurboMA InvTurbo AvgPrice Turbo Si Fecha lt 1000401 Entonces Comienza Si MarketPosition 0 y C lt TurboMA y TurboMA lt TurboMA 1 Entonces Compre Mañana en el Máximo (Alto, 2) Stop End Si MarketPosition 1 y C lt TurboMA Entonces Comienza ExitLong en Cerrar ExitLong Mañana en EntryPrice 0.96 Stop Fin Si Fecha gt 1000401 Luego Comience Si MarketPosition 0 y C gt TurboMA y TurboMA gt TurboMA 1 Entonces Venderá Mañana en el Menor (Bajo, 2) Stop End Si MarketPosition -1 y C gt TurboMA Then Comenzar ExitShort on Close ExitShort Mañana en EntryPrice 1.04 Stop End Agosto 2001, código de la TradeStation: If (Maxlist (High3, Close4) gt High4 O Maxlist (High3, Close4) gt High2 O Maxlist (High3, Close4) gt High1) and Close Lt Close1 y Open Tomorrow lt High3 Luego Compra 1 contrato Mañana en (Max3, Close4) 1.001) Stop If (Minlist (Low3, Close4) lt Low4 o Minlist (Low3, Close4) lt Low2 o Minlist (Low3, Close4) lt Low1) y Close gt Close1 y Open Tomorrow gt Low3 Entonces Vender 1 Contrato Mañana en (Minlist (Low3, Close4) 0.999) Stop Si EntryPrice gt 0 Entonces Comienza Si MarketPosition 1 Entonces Comienza ExitLong en EntryPrice 0.96 Stop ExitLong en EntryPrice 1.12 Limit End If MarketPosition -1 Then Begin ExitShort on EntryPrice 1.04 Detener ExitShort on EntryPrice 0.88 Limit End End Si BarsSinceEntry gt 3 Then SetExitOnClose ExitLong on Close ExitShort on Close End Octubre 2001, Código TradeStation: Entradas: DepPrice (Close of data1), IndPrice (Close of data2 ) Vars: Longitud (63), iBeta (1), Ind (0), Dep (0), SumX (0), SumY (0), SumXY (0), SumXsq (0), j - DepPrice1) / DepPrice1 Ind (IndPrice - IndPrice1) / IndPrice1 Si CurrentBar gt Longitud Entonces Comienza SumX Summation (Ind, Longitud) SumXY 0 SumY Summation (Dep, Longitud) SumXsq 0 Para j 0 a Length - 1 Comienza SumXY SumXY (Indj Depj ) SumXsq SumXsq Cuadrado (Indj) Fin Si SumXY ltgt 0 y SumX ltgt 0 Entonces iBeta ((Longitud SumXY) - (SumX SumY)) / ((Longitud SumXsq) - Cuadrado (SumX)) Si IndPrice gt Promedio (IndPrice, Longitud) Y iBeta gt 1 y MarketPosition ltgt 1 A continuación, compre 1 contrato Mañana en el límite más bajo (5) si IndPrice lt promedio (IndPrice, Longitud) e iBeta lt 1 y MarketPosition ltgt -1 entonces SellShort 1 Contrato Mañana al más alto (alto, 5 ) Límite Si EntryPrice gt 0 Entonces Comienza Si Close lt EntryPrice 0.96 o Close gt EntryPrice 1.12 Entonces Vender Mañana al Mercado Si Cerrar gt EntryPrice 1.04 or Close lt EntryPrice 0.88 Entonces BuyToCover Mañana al Final de Mercado Noviembre 2001, Código TradeStation: Entradas: PTarget ), StopL (4) Variables: ProfitPrice (0), StopPrice (0) Si L1 lt L2 y L2 lt L3 y H0 gt H3 Luego Buy (quot3L-Rquot) Next Bar en Open ProfitPrice EntryPrice (1 PTarget / 100) StopPrice EntryPrice (1 - PTarget / 100) Si MarketPosition 1 Entonces Comienza la Venta (quot3L-R Exitquot) Siguiente Bar en ProfitPrice Limit Sell (quot3L-R Stopquot) Siguiente Bar en StopPrice Stop Fin Diciembre 2001, Código TradeStation: Entradas: MaxLength (5) Variables : MarPos (0), LongLoss (0), ShortLoss (0) Si BarsSinceEntry gt (MaxLength - 2) Entonces SetExitOnClose Si MarketPosition ltgt 1 y Close lt AvgPrice y AvgPrice lt AvgPrice5 Luego Comienzo Si Abierto Mañana lt AvgPrice Luego Begin Buy (quotLongquot) Mañana en AvgPrice Stop End End Si MarketPosition ltgt -1 y Close gt AvgPrice y AvgPrice gt AvgPrice5 Luego Begin Si Abierto Mañana gt AvgPrice Luego Begin SellShort (quotShortquot) mañana a AvgPrice Stop End End MarPos MarketPosition Si MarPos ltgt MarPos1 y MarPos 1 Luego LongLoss Low1 Si MarPos ltgt MarPos1 y MarPos -1 Then ShortLoss High1 Si EntryPrice gt 0 Entonces Comienza Si BarsSinceEntry gt 1 Comienza LongLoss MaxList (LongLoss, Low) ShortLoss MinList (ShortLoss, High) End Else Comienzo LongLoss MaxList (LongLoss, Low) ShortLoss MinList ShortLoss, High) End If MarketPosition 1 Entonces Comienza a vender (quotLSquot) mañana en LongLoss Stop Sell (quotLTquot) mañana en el más alto (Alto, 5) Límite Final Si MarketPosition -1 Luego Begin BuyToCover (quotSSquot) mañana en ShortLoss Stop BuyToCover (quotSTquot) Mañana en el límite más bajo (5) Límite Final Enero de 2002, código de la estación de comercio: Variables: LenRC (5), TradeLenRC (5), RiskCalc (0), RC1 (0), RC2 (0), RC3 (0), RC4 (0), RC5 (0), RC6 (0), RC7 (0), RC8 (0), RC9 (0), RC10 (0) RC1 RateOfChange (Close Datos1, LenRC) RC2 RateOfChange RateOfChange (Close Data3, LenRC) RC4 RateOfChange (Close Data3, LenRC) RC4 RateOfChange (Close Datos4, LenRC) RC5 RateOfChange (Close Data6, LenRC) Cerrar Data9, LenRC) RC10 RateOfChange (Cerrar Data10, LenRC) Si MarketPosition 0 y RC1 MinList (RC1, RC2, RC3, RC4, RC5, RC6, RC6, 5) Finalizar si MarketPosition 0 y RC1 MaxList (RC1, RC2, RC3, RC4, RC5, RC6, RC6, RC7, RC8, RC9, RC10) Luego Comenzar a vender Next Bar en el mercado RiskCalc AvgTrueRange (5) End If BarsSinceEntry gt TradeLenRC Then Begin ExitLong Next Bar at Market ExitShort Bar siguiente en Market End Febrero de 2002, Código TradeStation: Vars: Ratio (0), AvgRatio (0), RiskCalc (0) Ratio Close Datos1 / Close Datos2 AvgRatio XAverage (Ratio, 9) Si AvgRatio Cruces por encima de AvgRatio9 Entonces comience a comprar en el mercado RiskCalc AvgTrueRange (9) Fin Si AvgRatio Cruces por debajo de AvgRatio9 Luego comenzar a vender en el mercado RiskCalc AvgTrueRange (9) Fin de abril de 2002, Código TradeStation: Variables: LenC (5), TradeLenRC (5), RiskCalc (0) RC4 (0), RC6 (0), RC6 (0), RC7 (0), RC8 (0), RC9 (0), RC2 RC0 (0), RC10 (0), TrendFilter (0) RC1 RateOfChange (Datos cerrados1, LenRC) RC2 RateOfChange (Datos cerrados2, LenRC) RC3 RateOfChange (Datos cerrados3, LenRC) RC4 RateOfChange RateOfChange (Close Data6, LenRC) RC7 RateOfChange (Close Data10, LenRC) RC8 RateOfChange (Close Data10, LenRC) RC10 RateOfChange (Close Data9, LenRC) RC10 RateOfChange (Close Data10, LenRC) TrendFilter gt TrendFilter11 Then Begin Si MarketPosition 0 y RC1 MinList (RC1, RC2, RC3, RC4, RC5, RC6, RC3, RC7, RC8, RC9, RC6) RC1, RC2, RC9, RC10, RC1, RC2, RC6, RC7, RC8, RC9, RC10) Entonces Comienza la Venta Siguiente Barra en el Mercado RiskCalc AvgTrueRange (5) End End Si TrendFilter lt TrendFilter11 Entonces Comienza Si MarketPosition 0 y RC1 MinList (RC1, RC2 , RC3, RC3, RC3, RC3, RC3, RC6, RC7, RC8, RC9, RC10) Luego Comienza la Venta Siguiente Barra al Mercado RiskCalc AvgTrueRange (5) End If MarketPosition 0 y RC1 MaxList (RC1, RC2, RC3, RC4, RC5, , RC8, RC9, RC10) Entonces Comienza a Comprar Siguiente Barra al Mercado RiskCalc AvgTrueRange (5) End End Si BarsSinceEntry gt TradeLenRC Entonces Comienza ExitLong Next Bar en Market ExitShort Next Bar en Market End Mayo 2002, Código TradeStation: Si High lt High1 y High 1 lt High2 y High2 lt High3 y Close lt Open y Close1 lt Open1 y Close2 lt Open2 A continuación, compre mañana en Alto Pare ExitLong Mañana en Bajo Stop Si MarketPosition ltgt 0 y Abierto Mañana gt High Then ExitLong Mañana en Open Si Alta gt High1 y Close Lt Close1 Then SetExitOnClose Junio de 2002, Código TradeStation: Entradas: BarsInTrade (8), ProfitExit (8), LossExit (4) Variables: LongStop (0), ShortStop (0), LongTarget (0), ShortTarget (0), LimitExit 0), StopExit (0) LimitExit (ProfitExit / 2 0,5) / 100 StopExit (LossExit / 5 0,2) / 100 Si MarketPosition 0 Entonces Comienza Si High lt High2 y Close lt Abierto y Abierto Siguiente Bar lt High Then Begin Buy Next Bar at Alto Parar LongStop 1 - StopExit LongTarget 1 LimitExit End Si Bajo gt Bajo2 y Cierre gt Abierto y Abierto Siguiente Barra gt Bajo Luego Comienza a Vender Next Bar en Bajo Stop ShortStop 1 StopExit ShortTarget 1 - LimitExit End End Si MarketPosition 1 Comienza ExitLong Next Bar at EntryPrice LongStop Parar ExitLong Siguiente Bar a EntryPrice LongTarget Limitar End If MarketPosition -1 Then Comenzar ExitShort Next Bar en EntryPrice ShortStop Detener ExitShort Siguiente Bar en EntryPrice ShortTarget Limitar End Si BarsSinceEntry BarsInTrade1 Luego Comenzar ExitLong Siguiente Bar en Market ExitShort Next Bar en Market End Julio 2002 , Código TradeStation: Si MarketPosition ltgt 1 y Average (Close, 9) Cruza por encima del Promedio (Close, 36) Luego Begin RiskCalc 4 AvgTrueRange (10) 36) Then ExitLong Next Bar en Market If MarketPosition 1 y EntryPrice gt 0 Then ExitLong Next Bar en EntryPrice - RiskCalc Stop Agosto 2002, código TradeStation: Si MarketPosition ltgt -1 Then Sell Next Bar en Close1 2 AvgTrueRange (5) limit Si MarketPosition ltgt 1 Then Buy Next Bar Close1 - 2 AvgTrueRange (5) limit Si MarketPosition 1 Entonces Comienza ExitLong Next Bar en EntryPrice - AvgTrueRange (5) Stop ExitLong Next Bar en EntryPrice 2 AvgTrueRange (5) Limite End If MarketPosition -1 Then Begin ExitShort Next Bar A la entradaPrecio AvgTrueRange (5) Stop ExitShort Next Bar a EntryPrice - 2 AvgTrueRange (5) Límite Septiembre 2002, Código TradeStation: Variables: ProfitDistance (0), RiskCalc (0), MMExport (1) Condición1 Intervalo MinList (Range, Range1, Range2 , Range3) Condition2 Low lt Low1 y High lt High2 Condición3 Bajo gt Low1 y High gt High1 Condición4 Close lt High1 y Close gt Low1 Si MarketPosition 0 y Condition1 y Condition2 and Condition4 Luego Begin Buy Next Bar en Alto Stop ProfitDistance Rango 3 End If MarketPosition 0 y Condición1 y Condición3 y Condición4 Luego Comienza Vendemos Siguiente Barra en Límite Alto ProfitDistance Rango 3 Final Si EntryPrice gt 0 Entonces Comienza ExitLong en Low Stop ExitLong en EntryPrice ProfitDistance Limit ExitShort en EntryPrice - ProfitDistance Limit Fin Octubre 2002, Código TradeStation: Variables: EntryAvg (0), ExitAvg (0), EntryVol (0), ExitVol (0), RiskCalc (0) EntryAvg Promedio (Cerrar, 60) ExitAvg Promedio (Cerrar, 30) EntryVol 2 StdDev (Close, 60) , 30) RiskCalc (EntryAvg EntryVol) - (ExitAvg - ExitVol) Comprar Contratos de NumCont Siguiente Bar en EntryAvg EntryVol Detener Venta NumCont Contracts Next Bar en EntryAvg - EntryVol Detener ExitLong Mañana en ExitAvg - ExitVol Detener ExitShort Mañana en ExitAvg ExitVol Detener EntryAvg MA , 60) ExitAvg MA (Cerrar, 30) EntryVol 2 StDev (Close, 60) ExitVol 1 StDev (Cerrar, 30) RiskCalc (EntryAvg EntryVol) - (ExitAvg - ExitVol) / entrada Entryavg EntryVol STOP / BuyStopLevel EntryAvg EntryVol Comprar High gt BuyStopLevel BuyPrice Max (Open, BuyStopLevel) / y ecuaciones similares para corto / ShortStopLevel EntryAvg - EntryVol Corto Lt ShortStopLevel ShortPrice Min (Open, ShortStopLevel) SellStopLevel ExitAvg - ExitVol Sell Low lt SellStopLevel SellPrice Min (Open, SellStopLevel) CoverStopLevel ExitAvg ExitVol Cover High Gt CoverStopLevel CoverPrice Max (Open, CoverStopLevel) Noviembre 2002, Código TradeStation: Condición1 CloseW (2) gt CloseW (1) y CloseW (1) gt C y C2 gt C1 y C1 gt C Condición2 CloseW (2) Y CloseW (1) lt C y C2 lt C1 y C1 lt C Si Condition1 True y MarketPosition 0 Entonces Buy (quotGo longquot) en open Si Condition2 True y MarketPosition 0 Then Sell (quotGuard) en open Variables: TrailingStop (True) BarsInTrade (8), ProfitExit (4), LossExit (1.6), LongStop (0), ShortStop (0), LongTarget (0), ShortTarget (0), Top (0), Bottom (0) Si BarNumber 1 Comienza ProfitExit Exceso de Ganancia / 100 Exceso de Pérdida Exceso de Pérdida / 100 LongStop 1 - Pérdida Exit LongTarget 1 ProfitExit ShortStop 1 LossExit ShortTarget 1 - ProfitExit Extremo Alto Alto Inferior Bajo Si EntryPrice gt 0 Comienza Si MarketPosition 1 (QuotL-Trailquot) Siguiente barra en el punto de inicio LongStop Stop End Else ExitLong (quotL-Stopquot) Barra siguiente en EntryPrice LongStop Stop ExitLong (quotL-Trgtquot) Barra siguiente en EntryPrice LongTarget Limit End If MarketPosition -1 Then Begin Si TrailingStop True Then Begin Bottom Barras siguientes en la parte inferior Barras en la parte inferior Barras en la parte inferior Barras en la parte inferior Barras en la barra de entrada Comenzar ExitLong (quotL-Timequot) Bar siguiente en Market ExitShort (quotS-Timequot) Bar siguiente en Market End End Diciembre 2002, Código TradeStation: Variables: RandomTrigger (0), ShortVol (0), LongVol (0), ShortLookBack (10) LongVookBack (63), ShortTrend (0), LongTrend (0), LongTrendDir (0) ShortVol AvgTrueRange (ShortLookBack) LongVol AvgTrueRange (LongLookBack) Si ShortVol gt LongVol Entonces ShortTrend 1 Eltra ShortTrend -1 LongTrend Promedio (Cerrar, 80) Si LongTrend Gt LongTrend20 Then LongTrendDir 1 Else LongTrendDir -1 Si MarketPosition 0 y ShortTrend 1 y RandomTrigger 1 Entonces Comienza Si Fecha lt 1000401 Luego Compra al Cerrar Si Fecha gt 1000401 Luego Vende al Fin Cerrar Si MarketPosition ltgt 0 Comienza ExitLong en (EntryPrice - ShortVol) Stop ExitLong at (EntryPrice 3 ShortVol) Limit ExitShort at (EntryPrice ShortVol) Stop ExitShort at (EntryPrice - 3 ShortVol) Limit If BarsSinceEntry gt ShortLookBack -1 Then Begin ExitLong on Close ExitShort on Close End End January 2003, TradeStation code: If Close gt (Average(Close, 60) StdDev(Close, 60)) Then Buy at Market If Close lt (Average(Close, 60) - StdDev(Close, 60)) Then Sell at Market February 2003, TradeStation code: Var: HistVol( 0), YestHistVol(0), DeltaHistVol(0), LookBack(0) YestHistVol HistVol HistVol StdDev(C, 30) DeltaHistVol (HistVol - YestHistVol) / HistVol If CurrentBar 1 Then LookBack 20 LookBack LookBack (1 DeltaHistVol) LookBack MaxList(LookBack , 20) LookBack MinList(LookBack, 60) If Close gt Highest(High, LookBack)1 Then Buy at Market If Close lt Lowest(Low, LookBack)1 Then Sell at Market May 2004, MetaStock code: To create the system test, open the tester under the Tools menu. Select new test and enter the following formulas in for the specific orders. Enter Long: Cross(Mov(C,10,W),Mov(C,7,W)) Close Long: Cross(Mov(C,7,W),Mov(C,10,W)) Enter Short: Cross(Mov(C,7,W),Mov(C,10,W)) Close Short: Cross(Mov(C,10,W),Mov(C,7,W)) MetaStock code for Futures Trading System Lab: To create the system test, open the tester under the Tools menu. Select new test and enter the following formulas in for the specific orders. June 2004, TradeStation code: inputs: Length( 10 ), NumDevsDn( 1.5 ) variables: LowerBand( 0 ) LowerBand BollingerBand( Low, Length, - NumDevsDn ) value1 TLNew( Date1, Time1, LowerBand1, Date, Time, LowerBand ) if CurrentBar gt 1 and Low crosses under LowerBand then Buy ( quotBBandLEquot ) next bar Market if Close gt EntryPrice then Sell this bar at Close if BarsSinceEntry 20 then sell this bar at Close To create the system test, open the tester under the Tools menu. Select new test and enter the following formulas in for the specific orders. Buy Order: LltBBandBot(L,10,S,1.5) Sell Order: bc:LltBBandBot(L,10,S,1.5) C gt ValueWhen(1,Ref(bc,-1),O) MetaStock code for Futures Trading System Lab Because this system uses an entry signal that can be true for several bars in a row, MetaStock version prior to 8.0 can not accurately count how long the trade has been active. Therefore, the formulas for this system are only valid in the MetaStock 8.0 and later. To create the system test, open the tester under the Tools menu. Select new test and enter the following formulas in for the specific orders. Buy Order: hgtref(hhv(h,55),-1) Sell Order: x: Simulation. CurrentPositionAge llt ref(llv(l,55),-1)((0.1ATR(20))x) July 2004, MetaStock code: This system is designed to run on weekly data. To create the system test, open the tester under the Tools menu. Select new test and enter the following formulas in for the specific orders. The formulas below are for version 7.2 and earlier. Enter Long: ADX(14)lt30 AND Cross(Mov(C,30,S),Mov(C,60,S)) Close Long: bc:ADX(14)lt30 AND Cross(Mov(C,30,S),Mov(C,60,S)) If(BarsSince(bc)lt10, LltRef(LLV(L,60),-1), Mov(C,30,S)ltMov(C,60,S) ) Enter Short: ADX(14)lt30 AND Cross(Mov(C,60,S),Mov(C,30,S)) Close Short: sc:ADX(14)lt30 AND Cross(Mov(C,60,S),Mov(C,30,S)) If(BarsSince(sc)lt10, HgtRef(HHV(H,60),-1), Mov(C,30,S)gtMov(C,60,S) ) For versions 8.0 and later, the formulas can be simplified a bit, and at the same time, made for accurate to the intents of the system. Below are the 8.0 formulas. Buy Order: ADX(14)lt30 AND Cross(Mov(C,30,S),Mov(C,60,S)) Sell Order: If(Simulation. CurrentPositionAgelt10, LltRef(LLV(L,60),-1), Mov(C,30,S)ltMov(C,60,S) ) Sell Short Order: ADX(14)lt30 AND Cross(Mov(C,60,S),Mov(C,30,S)) Buy to Cover Order: If(Simulation. CurrentPositionAgelt10, HgtRef(HHV(H,60),-1), Mov(C,30,S)gtMov(C,60,S) ) August 2004, MetaStock code: The following formulas were written for use in an Expert Advisor. To use them, open the expert advisor from the Tools menu. Select New and then move to the symbols tab. For each of the following formulas, click New to make a new symbol. Enter the name and the formula. Then select the graphics tab to set the symbol, color and placement desired. Name: Enter Long Formula: r:RSI(14) bc:Cross(r,75) sc:Cross(25,r) trade:If(PREV0,If(bc,1,0), If(sc OR (PREV20),0,PREV1)) trade1 Name: Enter Short Formula: r:RSI(14) bc:Cross(r,75) sc:Cross(25,r) trade:If(PREV0,If(sc,1,0), If(bc OR (PREV20),0,PREV1)) trade1 Name: Exit Long Formula: r:RSI(14) bc:Cross(r,75) sc:Cross(25,r) trade:If(PREV0,If(bc,1,0), If(sc OR (PREV20),0,PREV1)) Cross(trade0,0.5) Name: Exit Short Formula: r:RSI(14) bc:Cross(r,75) sc:Cross(25,r) trade:If(PREV0,If(sc,1,0), If(bc OR (PREV20),0,PREV1)) Cross(trade0,0.5) The same formulas listed above can be put into the columns of an exploration. Put each one into a separate formula and use the following formula for the filter: cola AND colb AND colc AND cold The formulas can also be used in a system test. No changes are required for this. June 2006, tymoraPRO software code: Program TymoraSampleIndicatorChannelMidPoint //Must have the word quotIndicatorquot in the Program Header const IndName ChnMidP var tmpHi, tmpLo, curHi, curLo, prvMidP, MidP, PS, PV, MM, LS: extended barsToUse, rColor: integer Band1: Integer function init(ChartNo, TF: Integer AssetN: String): integer //this function is called first by tymoraPRO and should initialize all your variables, etc //ChartNo 0..35, TF (timeFrame) 1Day. 71min, AssetN assetname // if this function returns anything but 0 tymoraPRO will ignore indicator for this run var i: integer cfgs: string begin // Initialization code goes here SetName(IndName) Band1 : AddBand(ChartNo) SetBandScale(Band1,0) //set scale to price SetBandStyle(Band1,2,psSolid) tmpHi : 0 tmpLo : 0 curHi : 0 curLo : 0 barsToUse : 50 rColor : clGreen cfgs : GetInitParams(ChartNo, IndName) if (cfgs ltgt ) then Begin try barsToUse : strtoint(cfgs) except barsToUse : 50 end End //if (barsToUse 0) then barsToUse : OptimalCycle(ChartNo, TF)4 //if (barsToUse 0) then barsToUse : 50 ReturnAssetInfo(AssetN, PS, PV, MM, LS) result : 0 end function main(ChartNo, TF: Integer AssetN: String istemp: boolean): integer //this function is called first by tymoraPRO and should initialize all your variables, etc //ChartNo 0..35, TF (timeFrame) 1Day. 71min, AssetN assetname // if (istemp true) this is a temporary newbar (the current uncompleted bar) //indicator can also be customized based on ChartNumber, TimeFrame, and/or AssetName var i, volup, voldn, dt, tm, ok: integer op, hi, lo, cl, pcl, useHi, useLo, useMidP: extended hifirst: boolean begin // main code goes here if (not istemp) then Begin tmpHi : 0 tmpLo : 0 if (curHi ltgt 0) then Begin ok : BarData(ChartNo, barsToUse, dt, tm, op, hi, lo, cl, volup, voldn, hifirst) if (ok -1) or CompPrc(curHi, hi, PS,) or CompPrc(curLo, lo, PS,) then curHi : 0 End if (curHi 0) then Begin curHi : 0 curLo : 0 for i : 0 to barsToUse-1 do begin BarData(ChartNo, i,dt, tm, op, hi, lo, cl, volup, voldn, hifirst) if (curHi 0) or (curHi lt hi) then curHi : hi if (curLo 0) or (curLo gt lo) then curLo : lo end End PrvMidP : MidP MidP : (curHicurLo)/2 if (MidP gt PrvMidP) then rColor : clGreen else if (MidP lt PrvMidP) then rColor : clRed BandAddXY(Band1,NewChartX(ChartNo, istemp),MidP, rColor, istemp) End if istemp then Begin if (tmpHi 0) then Begin for i : 0 to barsToUse-2 do begin BarData(ChartNo, i,dt, tm, op, hi, lo, cl, volup, voldn, hifirst) if (tmpHi 0) or (tmpHi lt hi) then tmpHi : hi if (tmpLo 0) or (tmpLo gt lo) then tmpLo : lo end End useHi : tmpHi useLo : tmpLo BarData(ChartNo,- 1,dt, tm, op, hi, lo, cl, volup, voldn, hifirst) //new temporary bar if (hi gt useHi) then useHi : hi if (lo lt useLo) then useLo : lo if ((useHiuseLo)/2 gt MidP) then rColor : clGreen else if ((useHiuseLo)/2 lt MidP) then rColor : clRed BandAddXY(Band1,NewChartX(ChartNo, istemp),(useHiuseLo)/2,rColor, istemp) End result : 0 end function afterdraw(ChartNo, TF: Integer AssetN: String FirstValueIndex, LastValueIndex: integer): integer //this routine is called in order to add any additional text or drawing on the final chart begin // additional chart annotation goes here result : 0 end function cleanup(ChartNo, TF: Integer AssetN: String): integer // perform any variable cleanup and other stuff here, return 0 if all okay begin // final cleanup code goes here (ie. freeing created bands) FreeBand(Band1) result : 0 end Copyright copy 2000-2008, Active Traderreg Magazine, Chicago, IL
No comments:
Post a Comment