domingo, 22 de marzo de 2020

El sistema "Pinchos del VIX"

Hoy veremos un sistema con unas estadísticas excelentes. Compra el futuro mini del SP500 cuando se produce un techo en el VIX en forma de "pincho", tal y como se puede ver en la imagen siguiente:


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 ); 
}

No hay comentarios:

Publicar un comentario

ENTRADAS POPULARES