Buscar gaps y aplicar un trailing profit en AMI

Foro para tratar todo lo relacionado con AmiBroker y el lenguaje de programación AFL.
Responder
Avatar de Usuario
Newbie33
Mensajes: 4
Registrado: 12 Feb 2018 17:58

Buscar gaps y aplicar un trailing profit en AMI

Mensaje por Newbie33 »

Hola a todos.

Estoy aprendiendo Amibroker, o intentandolo a base de prueba y error, y no me acaba de salir un codigo.

Busco gaps bajistas, del 30% o más, y luego compraría pasados 5 días del gap.

La intención sería aguantar las acciones un año, o cuando tuvieran un beneficio del 30%, si lo tienen. Las perdidas nos las comemos con patatas.

El codigo que me ha salido es este. No me encuentra los gaps, y encima me salen demasiadas flechas, lo que no acabo de entender pues he puesto el "ExRem" que anula el exceso de señales.

¿Alguién sabe cual es el problema?

Código: Seleccionar todo

CAPITAL= 100000;// Capital inicial

SetOption("ExtraColumnsLocation",1);
SetOption("Commissionmode",2);
SetOption("Commissionamount",1); 
SetOption("InitialEquity", CAPITAL);
SetOption( "AllowSameBarExit", True );    
SetOption( "ReverseSignalForcesExit", False );    
SetOption( "HoldMinBars", 1 );
SetOption( "AccountMargin", 100 );
SetOption("maxopenpositions", 50); 
SetPositionSize(5, spsPercentOfEquity);

BigGapDown = ( H < 0.7*Ref(L, -1) ); 
FiveDaysLater = Ref(BigGapDown, -5);
Oneyear= Ref(BigGapDown, -252);
Profit= ApplyStop( 2, stopTypeTrailing, 30, 0, volatile = False, ReEntryDelay = 0, ValidFrom = 0, ValidTo = -1 );

Buy = FiveDaysLater AND BigGapDown; 
Sell = Oneyear OR Profit;

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell, Buy); 

Speculator Man
Mensajes: 460
Registrado: 20 Dic 2016 18:28

Re: Buscar gaps y aplicar un trailing profit en AMI

Mensaje por Speculator Man »

Pues hombre, para que el programa encuentre gaps bajistas del 30% o más, primero tiene que haberlos y no creo que abunden muchos.
Ni el mejor programa del mundo te va a encontrar lo que no existe.
La microeconomía es lo que obtienes, la macroeconomía es lo que aguantas.
Avatar de Usuario
Rupertacho
Mensajes: 126
Registrado: 25 Nov 2013 17:07
Ubicación: Madrid, España
Contactar:

Re: Buscar gaps y aplicar un trailing profit en AMI

Mensaje por Rupertacho »

Hola,

Lo de Trailing profit no suena muy bien.... de hecho creo que es la primera vez que lo oigo... Trail es Cola, y por semántica podríamos decir que está en contra de donde quieres que vaya, es decir que es un Trailing Stop.

Otra cosa es que se salga en Profit, porque pilles una tendencia, pero bien puede ser una pérdida.

El ApplyStop se suele poner SOLO en una linea dado que es una función BUILT IN de la plataforma.

Es decir se pone así:

ApplyStop(stopTypeLoss,stopModePoint, SL*ATRPT, True ); //STOPLOSS
ApplyStop(stopTypeProfit ,stopModePoint, R*SL*ATRPT,True ); //PROFIT TARGET

Si quieres programarte un stop a mano tendrás que hacerlo ajustando
SELL o Cover si estás haciendo cortos.

No te olvides que amibroker es MATRICIAL como un EXCEL, y si metes señales repetidas... hay que filtrarlas, usa esto al final de todos los sistemas

Buy = ExRem( Buy, Sell );
Sell = ExRem( Sell, Buy );
Short = ExRem( Short , Cover );
Cover= ExRem( Cover, Short );

CONSEJO: Yo doy clases, no es por vendértelas, pero amibroker es DURO para aprenderlo solo, busca un curso gratis o de pago o los FutureLeaks y Trampas ocultas te van a hacer perder la paciencia.

Comienza con el primer libro de Howard Bandy (Inglés) o el de Oscar Cagigas EGCCA (Castellano)

Y por favor hazte como sea con un Template o ejemplos de sistemas para Aprender Rápido.

Un fuerte abrazo y bienvenido a XTrader
Especialista en Trading Algorítmico tengo una Escuela de Trading de especialización y enfocada en enseñar a los alumnos la dinámica del diseño de algoritmos.
Avatar de Usuario
Rupertacho
Mensajes: 126
Registrado: 25 Nov 2013 17:07
Ubicación: Madrid, España
Contactar:

Re: Buscar gaps y aplicar un trailing profit en AMI

Mensaje por Rupertacho »

Si pones las funciones builtIn.

con poner Sell=false es suficiente.

Pero.... ten cuidado porque el ExRem Funciona bien del todo si le das valor.
Efectivamente el backtester ajusta el SELL si se ejecutan los stopsbuiltin, intenta hacer un trailing como ejercicio con un canal de donchian algo así y entonces podrás transportar el código facil a Tradestation , piensa que AMI no es para operar automático.

SELL=L<ref(LLV(L,5),-1);
Sellprice=Min(Open,ref(LLV(L,5),-1)); intenta entender esto del Min con el open.

Por cierto... lo que buscas se llama en nuestra jerga IMBALANCE, usa google para informarte de técnicas.

Y lee esto, que te va a encantar http://jbmarwood.com/wp-content/uploads ... rnovas.pdf

PD: Tienes el sistema "base" en el PDF :-D
Especialista en Trading Algorítmico tengo una Escuela de Trading de especialización y enfocada en enseñar a los alumnos la dinámica del diseño de algoritmos.
Avatar de Usuario
Newbie33
Mensajes: 4
Registrado: 12 Feb 2018 17:58

Re: Buscar gaps y aplicar un trailing profit en AMI

Mensaje por Newbie33 »

Speculator Man escribió:Pues hombre, para que el programa encuentre gaps bajistas del 30% o más, primero tiene que haberlos y no creo que abunden muchos.
Ni el mejor programa del mundo te va a encontrar lo que no existe.
Pues mi intención es buscar estos gaps en el Nasdaq, desde 1985 hasta la actualidad, que son los datos de los que dispongo. Y te puedo asegurar , que si, hay decenas, por no decir centenares de gaps bajistas de este tamaño.

Avatar de Usuario
Newbie33
Mensajes: 4
Registrado: 12 Feb 2018 17:58

Re: Buscar gaps y aplicar un trailing profit en AMI

Mensaje por Newbie33 »

Rupertacho escribió:Si pones las funciones builtIn.

con poner Sell=false es suficiente.

Pero.... ten cuidado porque el ExRem Funciona bien del todo si le das valor.
Efectivamente el backtester ajusta el SELL si se ejecutan los stopsbuiltin, intenta hacer un trailing como ejercicio con un canal de donchian algo así y entonces podrás transportar el código facil a Tradestation , piensa que AMI no es para operar automático.

SELL=L<ref(LLV(L,5),-1);
Sellprice=Min(Open,ref(LLV(L,5),-1)); intenta entender esto del Min con el open.

Por cierto... lo que buscas se llama en nuestra jerga IMBALANCE, usa google para informarte de técnicas.

Y lee esto, que te va a encantar http://jbmarwood.com/wp-content/uploads ... rnovas.pdf

PD: Tienes el sistema "base" en el PDF :-D


Pues ahora te vas a reir, pero creo que YA soy alumno tuyo. Al menos he "asistido" a una de tus clases. La de "Sistemas de Trading con AFL", 1ª parte.

A la segunda no me apunte porque tus clases son como, por poner una analogia, una master class de Valentino Rossi sobre coger curvas derrapando, y yo aún no se ir en bicicleta.... :lol:

Al final creo que he arreglado el stop, he puesto un filtro de volumen, pero al intentar poner un filtro para que no coja acciones con gaps de más del 90% no ha funcionado.

La busqueda de los gaps, que tendría que ser de principio de backtest al final, tampoco tira, solo busca los gaps de hoy y los de hace 5 días....

Muchas gracias por la aclaración y el "paper" de las supernovas. Es alucinante, de hecho yo intento hacer los mismo, pero al revés.

Por cierto, el libro de Cagigas y el de Bandy los he leído, aunque voy a tener que repasarlos los dos. Si no eres informatico esto del AFL cuesta. :-)

Código: Seleccionar todo


SetOption("ExtraColumnsLocation",1);// orden columnas optimización
SetOption("Commissionmode",2);//comisiones en money
SetOption("Commissionamount",1); // Aplica 1$ de comisiones por compra/venta
SetOption("InitialEquity", 10000);
SetOption( "AllowSameBarExit", True );    
SetOption( "ReverseSignalForcesExit", False );    
SetOption( "HoldMinBars", 1 );
SetOption( "AccountMargin", 100 );// si 100 no margen
SetOption("maxopenpositions", 50); //maximas posiciones abiertas mismo tiempo
SetPositionSize(5, spsPercentOfEquity); //asigno capital a cada posicion

BigGapDown = ( H < 0.7*Ref(L, -1) ); // today's High 30% below yesterday's Low 

//BigGapDownMax= (H < 0.1*Ref(L, -1)); This line try to avoid stocks with a gap of 90% but do not work 

Filter= Volume > 5000;
FiveDaysLater = Ref(BigGapDown, -5);
Oneyear= Ref(BigGapDown, -252);

Buy = FiveDaysLater AND BigGapDown AND Filter; 
Sell = Oneyear OR true;

amount = 10; // 10% profit
ApplyStop( stopTypeProfit, stopModePercent, amount, True );
 
Buy=ExRem(Buy,Sell); //me cargo el exceso de señales
Sell=ExRem(Sell, Buy); 

Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “AmiBroker”