El sistema es relevante con fecha 20 de marzo pues acaba de marcar una compra. La fiabilidad es del 80% pero no deja de ser un sistema de trading, basado en la retrospectiva, así que no se recomienda en ningún caso para la operativa con derivados. Utilice el código de debajo para sus pruebas.
CÓDIGO DEL SISTEMA
//---------------------------------------//
// SISTEMA "PINCHOS DEL VIX"
// COMPRA TRAS UN DESPLOME DEL SP500 Y EL
// VIX HACIENDO UN MÁXIMO EN FORMA DE PINCHO
// OSCAR G. CAGIGAS
// 22 MARZO 2020
//---------------------------------------//
//VARIABLES OPTIMIZABLES
med = Optimize("per",11,7,25,2); //parámetros de la banda de Bollinger (desviación)
desv = Optimize("desv",0.7,0.6,2.5,0.1); //parámetros de la banda de Bollinger (media)
//-------------SISTEMA DE TRADING-------------------
//VARIOS//
SetOption("InitialEquity", 100000);
PositionSize = MarginDeposit = 1;
PointValue = 50; //FUTURO MINI SP500
//CAÍDA FUERTE
CF = BarsSince( L == LLV(L,21) ) < 2; //en los últimos 2 días hubo un mínimo mensual
//DEFINICIONES
VIX = Foreign("$VIX","Close");
VIXout = VIX > BBandTop(VIX,med,desv); //sale de su banda de Bollinger
VIXin= VIX < BBandTop(VIX,med,desv); //entra en la banda de Bollinger
VueltaVIX = Ref(VIXout,-1) AND VIXin; //ida y vuelta en la Banda de Bollinger
//ENTRADA
Buy = CF AND VueltaVIX;
//SALIDA
Sell = BarsSince(Buy) == 21; //mantenemos la compra un mes justo
//SOLO LARGOS
Short = Cover = 0;
//STOP LOSS//
nstop = 10; //stop loss en desviaciones estándar
desv_carver = sqrt( EMA( ( C-Ref(C,-1) )^2, 36 ) ) ;
stop = Nz(nstop * desv_carver);
ApplyStop(stopTypeLoss,stopModePoint,stop,1,0);
Equity(1,0);
//********************************************************
//********************PARTE VISUAL************************
//********************************************************
//CHART//
SetChartOptions(0,chartShowDates);
Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )
+"\n"+ FullName()+"\n"+ EncodeColor(colorBlue)+"SISTEMA PINCHOS DEL VIX"
+"\n"+ EncodeColor(colorGreen)+"ATR="+NumToStr(ATR(20),1.2)+" %";
//CIRCULOS EN PANTALLA//
Plot(C,"Last ",colorBlack,styleBar|styleThick);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15);
PlotShapes(IIf(Buy,shapeHollowCircle,shapeNone),colorGreen,0,BuyPrice,0);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15);
PlotShapes(IIf(Sell,shapeHollowCircle,shapeNone),colorRed,0,SellPrice,0);
//LETREROS//
dist = ATR(10);
for( i = 0; i < BarCount; i++ )
{
if( Buy[i] ) PlotText( "Long "+ NumToStr(ValueWhen(Buy[i],BuyPrice[i]),1.2), i, L[ i ]-dist[i], colorGreen );
if( Sell[i] ) PlotText( "Exit " + NumToStr(ValueWhen(Sell[i],SellPrice[i]),1.2), i, H[ i ]+dist[i], colorRed );
if( Short[i] ) PlotText( "Short "+NumToStr(ValueWhen(Short[i],ShortPrice[i]),1.2), i, H[ i ]+dist[i], colorBrown );
if( Cover[i] ) PlotText( "Cover " + NumToStr(ValueWhen(Cover[i],CoverPrice[i]),1.2), i, L[ i ]-dist[i], colorDarkGreen );
}
Óscar, hola. Intento aplicar el sistema sobre el índice sp500 (SPX-IDX). No he sido capaz de pintarlo ni hacer análisis. Puedes echarle un vistazo y decirme lo que tengo que cambiar? Saludos
ResponderEliminar// SISTEMA "PINCHOS DEL VIX"
// COMPRA TRAS UN DESPLOME DEL SP500 Y EL
// VIX HACIENDO UN MÁXIMO EN FORMA DE PINCHO
// OSCAR G. CAGIGAS
// 22 MARZO 2020
//---------------------------------------//
//VARIABLES OPTIMIZABLES
med = Optimize("per",11,7,25,2); //parámetros de la banda de Bollinger (desviación)
desv = Optimize("desv",0.7,0.6,2.5,0.1); //parámetros de la banda de Bollinger (media)
//-------------SISTEMA DE TRADING-------------------
//VARIOS//
SetOption("InitialEquity", 100000);
PositionSize = MarginDeposit = 1;
//PointValue = 50; //FUTURO MINI SP500
SPX = Foreign("SPX-IDX","Close");
//CAÍDA FUERTE
CF = BarsSince( L == LLV(L,21) ) < 2; //en los últimos 2 días hubo un mínimo mensual
//DEFINICIONES
VIX = Foreign("VIX-IDX","Close");
VIXout = VIX > BBandTop(VIX,med,desv); //sale de su banda de Bollinger
VIXin= VIX < BBandTop(VIX,med,desv); //entra en la banda de Bollinger
VueltaVIX = Ref(VIXout,-1) AND VIXin; //ida y vuelta en la Banda de Bollinger
SPX = Foreign("SPX-IDX","Close");
//ENTRADA
Buy = CF AND VueltaVIX;
//SALIDA
Sell = BarsSince(Buy) == 21; //mantenemos la compra un mes justo
//SOLO LARGOS
Short = Cover = 0;
//STOP LOSS//
nstop = 10; //stop loss en desviaciones estándar
desv_carver = sqrt( EMA( ( C-Ref(C,-1) )^2, 36 ) ) ;
stop = Nz(nstop * desv_carver);
ApplyStop(stopTypeLoss,stopModePoint,stop,1,0);
Equity(1,0);
//********************************************************
//********************PARTE VISUAL************************
//********************************************************
//CHART//
SetChartOptions(0,chartShowDates);
Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )
+"\n"+ FullName()+"\n"+ EncodeColor(colorBlue)+"SISTEMA PINCHOS DEL VIX"
+"\n"+ EncodeColor(colorGreen)+"ATR="+NumToStr(ATR(20),1.2)+" %";
//CIRCULOS EN PANTALLA//
Plot(C,"Last ",colorBlack,styleBar|styleThick);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-15);
PlotShapes(IIf(Buy,shapeHollowCircle,shapeNone),colorGreen,0,BuyPrice,0);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15);
PlotShapes(IIf(Sell,shapeHollowCircle,shapeNone),colorRed,0,SellPrice,0);
//LETREROS//
dist = ATR(10);
for( i = 0; i < BarCount; i++ )
{
if( Buy[i] ) PlotText( "Long "+ NumToStr(ValueWhen(Buy[i],BuyPrice[i]),1.2), i, L[ i ]-dist[i], colorGreen );
if( Sell[i] ) PlotText( "Exit " + NumToStr(ValueWhen(Sell[i],SellPrice[i]),1.2), i, H[ i ]+dist[i], colorRed );
if( Short[i] ) PlotText( "Short "+NumToStr(ValueWhen(Short[i],ShortPrice[i]),1.2), i, H[ i ]+dist[i], colorBrown );
if( Cover[i] ) PlotText( "Cover " + NumToStr(ValueWhen(Cover[i],CoverPrice[i]),1.2), i, L[ i ]-dist[i], colorDarkGreen );
}
No indicas el error que sale pero supongo que si no pinta nada es un problema con los tickers así que yo probaría a pintar SP500 y VIX en un código aparte y cuando lo tenga lo pasaría al sistema. Saludos
EliminarSólo me sale el precio del spx y los letreros o title. Imagino que el fallo está en querer cambiar el backtest del futuro al spx-idx. Puedes revisarme esta parte?. Sólo es cambiar 2 ticker que son los de mi base de datos y que el spx sí me lo pinta y eliminar cualquier referencia al futuro y posición.
EliminarSaludos
Luis E.
//VARIOS//
SetOption("InitialEquity", 100000);
PositionSize = MarginDeposit = 1;
//PointValue = 50; //FUTURO MINI SP500
SPX = Foreign("SPX-IDX","Close");
//CAÍDA FUERTE
CF = BarsSince( L == LLV(L,21) ) < 2; //en los últimos 2 días hubo un mínimo mensual
//DEFINICIONES
VIX = Foreign("VIX-IDX","Close");
VIXout = VIX > BBandTop(VIX,med,desv); //sale de su banda de Bollinger
VIXin= VIX < BBandTop(VIX,med,desv); //entra en la banda de Bollinger
VueltaVIX = Ref(VIXout,-1) AND VIXin; //ida y vuelta en la Banda de Bollinger
SPX = Foreign("SPX-IDX","Close");
Lo que tiene que ver con el futuro no influye para pintarlo, solo a las ganancias y pérdidas cuando se hace backtest. En cualquier caso no me das suficiente información para ayudarte. Qué proveedor de datos usas? Puedes ver a la vez el SP500 y el VIX en una ventana aparte? Puedes ver los mercados por separado? Mientras no puedas pintar juntos el SP500 y el VIX en una ventana separada el código no te servirá de nada. Saludos
EliminarOscar, como no sé si se puede enviar imágenes te las envío por mail.
ResponderEliminarUn saludo
Luis
´>Oscar, para pintar el sistema como lo tienes en la imagen, debo terminar el código y plot la BB y el vix?
ResponderEliminarSaludos
Luis
Para que funcione el sistema solo hay que cambiar el ticker del VIX. El SP500 es el mercado al que lo aplicamos así que no hace falta especificarlo en el código. El código es el sistema de trading. Si te fijas las bandas de Bollinger están en una ventana aparte; he insertado las que trae por defecto Amibroker y les he cambiado el color y los parámetros, para que coincidan con los del sistema.
ResponderEliminar