Volatilidad: Estrategia ORB Intradía para ES

Sep 12, 2022 | EasyLanguage, TradeStation

Volatilidad: Código fuente para sistema de trading intradía en S&P500 @ES.D

¿Le llamó la atención ese título?

 Este código es realmente genial así que pensé en compartirlo con ustedes. Echa un vistazo a esta imagen bastante genial.

Break Out de seis barras con buffer de volatilidad y trailing stop de volatilidad

Break Out de seis barras con buffer de volatilidad y trailing stop de volatilidad

Gracias a un lector de este blog (AG), se me ocurrió esta idea y programé un sistema de day trading muy sencillo que incorporaba un trailing stop de volatilidad. Quería asegurarme de que lo había programado correctamente y siempre quise dibujar un cuadro en el gráfico – gracias a (TJ) de los foros de MC por darme impulso en el aspecto gráfico del proyecto.

Como se me ha acabado el tiempo por hoy – tengo que cortarme el pelo. Tendré que esperar hasta mañana para explicar el código. Pero muy rápidamente el sistema.

Comprar x% por encima de la primera barra alta y, a continuación, establecer un trailing stop z% del rango promedio de la barra y – mover al punto de equilibrio cuando las ganancias superan $w. Lo contrario va para el lado corto. Un largo y un corto sólo se permite durante el día y la salida de todos en el cierre.

Qué más da, aquí está el código de la Estrategia:


inputs: startTradeTime(930),startTradeBars(6),endTradeTime(1530),
breakOutVolPer(0.5),trailVolPer(.25),breakEven$(500);

vars: longsToday(0),shortsToday(0),
longStop(0),shortStop(0),
longTrail(0),shortTrail(0),
trailVolAmt(0),
barCount(0),highToday(0),lowToday(0),
volAmt(0),mp(0);

if t = startTradeTime + barinterval then
begin
longsToday = 0;
shortsToday = 0;
longStop = 0;
shortStop = 0;
longTrail = 0;
shortTrail = 99999999;
barCount = 0;
highToday = 0;
lowToday = 999999999;
end;

highToday = maxList(h,highToday);
lowToday = minList(l,lowToday);

mp = marketPosition;

barCount +=1;

if barCount >= startTradeBars then
begin
volAmt = average(range,startTradeBars);
if barCount = startTradeBars then
begin
longStop = highToday + breakOutVolPer * volAmt;
shortStop = lowToday - breakOutVolPer * volAmt;
end;
if t < endTradeTime then
begin
if longsToday = 0 then buy("volOrboL") next bar at longStop stop;
if shortsToday = 0 then sellShort("volOrboS") next bar shortStop stop;
end;

trailVolAmt = volAmt * trailVolPer;
if mp = 1 then
begin
longsToday +=1;
if c > entryPrice + breakEven$/bigPointValue then
longTrail = maxList(entryPrice,longTrail);
longTrail = maxList(c - trailVolAmt,longTrail);
sell("L-TrlX") next bar at longTrail stop;
end;
if mp = -1 then
begin
shortsToday +=1;
if c < entryPrice - breakEven$/bigPointValue then
shortTrail = minList(entryPrice,shortTrail);
shortTrail = minList(c + trailVolAmt,shortTrail);
buyToCover("S-TrlX") next bar at shortTrail stop;
end;
end;
setExitOnClose;

Y el código para el indicador de seguimiento de la estrategia, es el siguiente:


inputs: startTradeTime(930),startTradeBars(6),endTradeTime(1530),
		breakOutVolPer(0.5),trailVolPer(.25),breakEven$(500);
		

vars:	longsToday(0),shortsToday(0),
		longStop(0),shortStop(0),
		longTrail(0),shortTrail(0),
		trailVolAmt(0),
		barCount(0),highToday(0),lowToday(0),
		volAmt(0),mp(0);
		
if t = startTradeTime + barinterval then
begin
	longsToday = 0;
	shortsToday = 0;
	longStop = 0;
	shortStop = 0;
	longTrail = 0;
	shortTrail = 99999999;
	barCount = 0;
	highToday = 0;
	lowToday = 999999999;
	mp = 0;
end;

highToday = maxList(h,highToday);
lowToday = minList(l,lowToday);
		
barCount +=1;

vars: iCnt(0),mEntryPrice(0),myColor(0);

if barCount >= startTradeBars  then
begin
	volAmt = average(range,startTradeBars);
	if barCount = startTradeBars then
	begin
		longStop = highToday + breakOutVolPer * volAmt;
		shortStop = lowToday - breakOutVolPer * volAmt;
		for iCnt = 0 to startTradeBars-1
		begin
			plot1[iCnt](longStop,"BuyBO",default,default,default);
			plot2[iCnt](shortStop,"ShrtBo",default,default,default);
		end;

	end;
	if t < endTradeTime then 	begin 		if longsToday = 0 and h >= longStop then 
		begin
			mp = 1;
			mEntryPrice = maxList(o,longStop);
			longsToday += 1;
		end;
		if shortsToday = 0 and l <= shortStop then 		begin 			mp = -1; 			mEntryPrice = minList(o,shortStop); 			shortsToday +=1; 		end;	 		plot3(longStop,"BuyBOXTND",default,default,default); 		plot4(shortStop,"ShrtBOXTND",default,default,default); 	end; 	 	trailVolAmt = volAmt * trailVolPer; 	 	if mp = 1 then 	begin 		if c > mEntryPrice + breakEven$/bigPointValue then
			longTrail = maxList(mEntryPrice,longTrail);

		longTrail = maxList(c - trailVolAmt,longTrail);
		plot5(longTrail,"LongTrail",default,default,default);
	end;
	if mp = -1 then
	begin
		if c < mEntryPrice - breakEven$/bigPointValue then
			shortTrail = minList(mEntryPrice,shortTrail);
		shortTrail = minList(c + trailVolAmt,shortTrail);
		plot6(shortTrail,"ShortTrail",default,default,default);
	end;
end;

Es muy importante establecer los valores predeterminados de los indicadores así

Para la caja BO utilice estos ajustes – son los primeros 4 ploteos:

Utilice estos colores y barra alta y barra baja y establezca la opacidad

Utilice estos colores y barra alta y barra baja y establezca la opacidad

La caja se crea dibujando líneas gruesas semitransparentes desde BuyBo y BuyBOXTND hasta ShrtBo y ShrtBOXTND. Así que los componentes de Buy (Compra) de los 4 primeros trazos deben ser Bar High y los componentes Short (Cortos) deben ser Bar Low.

 

Use la barra baja para los trazos ShrtBo y ShrtBOXTND

Use la barra baja para los trazos ShrtBo y ShrtBOXTND

También he utilizado diferentes colores para el BuyBo/ShrtBo y el BuyBOXTND/ShrtBOXTND. Esta es la configuración:

 

Colors configuration for the BuyBo/ShrtBo
Colors configuration for the BuyBOXTND/ShrtBOXTND

La línea de color más oscuro en la última barra de la ruptura es causada por la superposición de los dos conjuntos de trazados.

Así es como se configuran los ploteos del trailing stop:

Hacer puntos y hacerlos grandes – Tenemos el conjunto rojo y azul

Hacer puntos y hacerlos grandes – Tenemos el conjunto rojo y azul

Con esto finalizamos el artículo. Esperamos les sirva de utilidad esta información para construir sistemas de trading sobre el @ES basados en volatilidad.

Si le gusta el diseño de sistemas de trading, tenemos disponible la herramienta «Forbidden Patterns Tool», la cual utiliza este tipo de técnica para definir un patrón y luego analizar todas sus posibles permutaciones.

Si desea más información y ver una prueba de esta herramienta, haga clic en el siguiente enlace: Solicitar Prueba

Este artículo fue redactado y cedido por George Pruitt
y publicado en su blog el 01 de abril del 2021

Canal de YouTube de Quantified Models

En nuestro canal de YouTube tenemos varios videos disponibles que pueden resultarle muy útiles para desarrollar sistemas de trading.

Esperamos que esta información te haya sido de utilidad.

Easylanguage | Sistema de trading: Tortugas

Easylanguage | Sistema de trading: Tortugas

He visto una plétora de publicaciones sobre las estrategias de comercio de tortugas donde se proporcionan las reglas y el código. Los códigos van desde una mera ruptura de Donchian hasta una representación bastante cercana. Sin retroalimentación de...

leer más

Subscribe to our Newsletter

Join our mailing list to receive the latest news and updates from Quantified Models team.

Subscribe to our Newsletter

You have Successfully Subscribed!

Ir al contenido