Página 1 de 1

Buscar gaps y aplicar un trailing profit en AMI

Publicado: 13 Feb 2018 23:11
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); 


Re: Buscar gaps y aplicar un trailing profit en AMI

Publicado: 13 Feb 2018 23:29
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.

Re: Buscar gaps y aplicar un trailing profit en AMI

Publicado: 14 Feb 2018 01:57
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

Re: Buscar gaps y aplicar un trailing profit en AMI

Publicado: 14 Feb 2018 02:11
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

Re: Buscar gaps y aplicar un trailing profit en AMI

Publicado: 14 Feb 2018 12:28
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.

Re: Buscar gaps y aplicar un trailing profit en AMI

Publicado: 14 Feb 2018 12:30
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);