Estrategia Hedging con SCALA
Tema: Estrategia Hedging con SCALA
- Efren
- Alta:
- Mensajes: 64
Propongo el reto de crear la estrategia de hedging que comparte en youtube el gran programador y trader Orlando Castejón, que espero no le importe que le nombre y ponga enlace del video donde explica dicha estrategia:
El propósito de este hilo es hacer ver la potencia de SCALA a la hora de combinar series, pero antes de compartir como configurarlo para conseguir esta estrategía, es bueno que aquellos que quieran de verdad aprender a manejar el robot, piensen como se puede hacer. Imagino que se puede llegar a conseguir distintas soluciones al mismo problema, a ver si hay suerte y vamos viendo respuestas a este hilo antes de que de yo mismo la solución.
Si la estrategia es buena o mala, dependerá ya de lo que piense cada uno, sobre que mercado lanzarlo, amplitud del rango, si hay que apoyarse en indicadores técnicos, etc etc.
Para motivaros, proximamente compartiré el resultado de un backtest expectacular.
Todos teneis cosas que aportar, cada set que compartais, servirá como punto de partida para otra persona que podrá complementarlo con nuevas ideas, es la mejor forma de avanzar y aprender.
- Efren
- Alta:
- Mensajes: 64
A continuación 13 meses de simulación. Cierto es que la calidad de datos no es buena, y en cierto modo el objetivo de este hilo es sólamente didáctico, pero ahí queda esto:
No se si se distingue bien en la imagen, u os podeis liar con tanto número. Se parte de 10.000 euros, y el beneficio total, no son 4 millones, ni 40, son mas de 400 millones.
Espero sea lo sufientemente motivador para empezar a ver sets creados por vosotros mismos. Abrid la mente y quedaos con lo que hace realmene la estrategia, y lo que permite scala.
Como pista, yo lo he implementeado solo con un sistema.
- Efren
- Alta:
- Mensajes: 64
Mensaje de Cantizani:Solo con un sistema? brutal... al final habra que irse a lo simple
Digo un sistema, pero el sistema tiene varias series, y las reglas determinan que serie ejecutar en cada momento.
- Efren
- Alta:
- Mensajes: 64
Por dar alguna pista, la forma en la que he considerado crear esta estrategia es con series TI (o OTI con una sola orden) y series SE. Con las series adecuadas y las reglas que determinen ejecutar una serie u otra, consigues montar la estrategia.
Veo que es complicado motivaros, esperaba ya alguna propuesta de sistema.
- Torr
- Alta:
- Mensajes: 3
Motivados estamos, pero en mi caso no doy con la tecla, nada que se le parezca ni acerque
Comence con BSISP pero ya me he dado cuenta que por ahi no iban los tiros.
A seguir dandole !
- Efren
- Alta:
- Mensajes: 64
Perfecto. Siguiendo con las pistas, y dado los tipos de series que he utilizado, podreis imaginar que no se crean órdenes pendientes, sino que se crean ordenes a mercado cuando toca.
- Efren
- Alta:
- Mensajes: 64
Explico una forma de hacerlo antes de compartir el sistema y reglas (teniendo en cuenta que se parte del precio de mercado y se quiere tener un rango de precios de 1U):
- Se define una TI de una orden, pero pensada un poco a la inversa de como inicialmente se suele usar, es decir, tratar de crear una orden de compra cuando avance 0.5 Us, es decir TI=-0.5. Pero en caso de que se de la vuelta el precio, descartar la serie justo en 0.5Us, es decir, que tenga un precio de descarte PD=0.5
- Si el precio se fué hacia arriba, ya ha empezado el sistema con una compra, y dicha compra tendra un lote inicial, y un TP y un SL de 1 U
- Si el precio se fue hacia abajo, la TI finaliza justo en la parte baja del rango, con lo que habría que crear una serie SE con una venta con un lote inicial, y con SL y TP de 1 U.
- En este punto se tiene ya o una compra o una venta, ahora es momento de controlar si gana para finalizar el sistema, o si pierde para crear una nueva SE con un orden contraria aumentando lote.
No se usan ordenes pendientes, pero la estrategia en si no requiere que las tenga.
- Efren
- Alta:
- Mensajes: 64
Bueno, no veo respuestas, indico como configurarlo. Pongo las series del sistema y reglas en lineas distintas para que se entienda mejor, con los comentarios oportunos
Sistema:
[{ORD=1;TYPE=BUY;LOTS=0.2;TP=1;SL=1;TI=-0.5;PD=0.5}&
{ORD=1;TYPE=SELL;LOTS=0.2;TP=1;SL=1}&
{ORD=1;TYPE=SELL;LOTS=0.6;TP=1;SL=1}&
{ORD=1;TYPE=BUY;LOTS=0.6;TP=1;SL=1}&
{ORD=1;TYPE=SELL;LOTS=0.6;TP=1;SL=1;ASP=2}&
{ORD=1;TYPE=BUY;LOTS=0.6;TP=1;SL=1;ASP=2}]
La primera serie es una TI con valor negativo de 0.5 Us. Va un poco en contra del uso generico de una TI, si sube el precio, hago una compra. Y se indica tambien un precio de descarte de 0.5, si baja el precio se descarta la serie. El lote configurado es de 0.2, que correspondería con la primera orden.
La segunda es una serie SE de venta, con idea de que se ejecute si se descarta la TI, con lote configurado de 0.2
La tercera es una serie SE de venta, con lote 0.6 sin incremento por perdida de la anterior, que se ejecutará si la TI creo la BUY y fue a perdidas
La cuarta una SE de compra, con lote 0.6 sin incremento por perdida de la anterior, que se ejecutará despues de la serie 2.
Las 5 y 6 series son series SE, una de venta y otra de compra, ya con el lote incrementado correspondiendo a la segunda orden que crearía el sistema, y configurado un Aumento de Serie en Perdidas igual a 2, para que en sucesivas creaciones vaya duplicando el lote.
Reglas:
T1=S1;
T2=RA>0?T1:T3;
T3=RA==0?T4:T6;
T4=S2;
T5=RA>0?T1:T8;
T6=S3;
T7=RA>0?T1:T10;
T8=S4;
T9=RA>0?T1:T12;
T10=S6;
T11=RA>0?T1:T12;
T12=S5;
T13=RA>0?T1:T10
T1 ejecuta la TI
T2: si la anterior fue positiva, es que la TI creó una compra y gano, se vuelve a T1. En otro caso se va a T3
T3: si la TI tuvo resultado 0, es que se descarto sin crear orden, con lo que hay que crear la primera SELL, invocando a T4. Si tuvo pérdidas, la TI si creó la BUY pero salio en perdidas, hay que invocar a SELL con primer incremento de lotaje en T6
T4: se ejecuta la SELL sin incremento de lotaje
T5: si tuvo resultado positivo, volvemoa a empezar en T1, en otro caso, hay que ejecutar BUY con primer incremento de lotaje definida en T8
T6: se ejecuta la SELL con lote 0.6
T7: se revisa resultado de la anterior. Si va bien volvemos a empezar en T1, en otro caso hay que ejecutar la BUY ya duplicando lote en T10
T8: aqui se ejecutaba la BUY con lote 0.6
T9: Se mira si la BUY anterior fue positiva y se vuelve a empezar en dicho casi en T1, en otro caso, hay que ejecutar SELL duplicando lote en T12
T10: Se ejecuta la BUY duplicando lote
T11: Se mira si la BUY fue positiva y se vuelve a empezar en T1 en dicho caso. En caso contrario, se ejecuta la SELL duplicando lote en T12
T12: Se ejecuta la SELL duplicando lote
T13: Se revisa si la SELL fue positiva y se vuelve a empezar en T1. En otro caso, se ejecuta BUY duplicando lote en T10
La gráfica de la simulación es muy espectacular, pero es aprovechando las limitaciones que tienen las simulaciones de MT4, corriendo en TFs grandes movimientos de precio mas pequeños de lo que corresponden a esos TFs, con lo que se minimizan los rebotes. Sin embargo, a partir de la version 8.10 de scala se puede invocar directamente esta estrategia implementada internamente, y voy a aportar grafica que si es mas creible:
Sistema: [{STRATEGY=HEDGE;NS=IHIGHEST(60,14);NI=ILOWEST(60,14);MAXR=5;LOTS=0.5}]
Reglas: T1=INTIME(14:00,14:01)==1?T2:T1;T2=S1;T3=GOTO(1)
Que ejecutado en el Nasdaq, a las 14:00 lanza un hedge con maximo y minimo el rango que definen las 14 velas anteriores. La simulación es de unos 14 meses.
Y este es el set para que lo podais probar: set STRATEGY=HEDGE
Espero que con esta base y todos los indicadores que hay ahora en la version 8.10, vea montón de mejoras, configuraciones para otros mercados, etc.