Curso Gratuito - Trading IA
Gestión del capital: Cálculo automático del apalancamiento en EasyLanguage
Buenas
Una consulta para los que ya estais operando.
¿Como haceis la gestion de capital? Me refiero al numero de contratos a operar por activo, lo tenéis definido de una manera fija, es decir entro con 1 contrato o 2 o los que sean siempre o lo tenéis programado en el tradestation.
Es que yo me he puesto, y me encuentro con que si quiero decirle que calcule los puntos de stop que tengo en una operacion, en la operativa lo calcula justo cuando entra, pero para saberlo una vela antes no me vale esa parte del codigo, y tendria que complicarlo bastatnte me da a mi.
Por eso antes de liarme con algo que no se si va por el buen camino, me gustaria me dijeseis como lo estais haciendo.
Y si hay que programarlo unas pequeñas nociones de como no estaría mal tampoco😅
Comentarios
-
Hola @Luismi ,
Cuando vamos a tomar una operación, sabemos que nuestro precio de entrada es X y de stop es Y.
Supongamos que entro al precio de 500 y pongo mi stop en 450. Sé que mi stop son 50 puntos.
Si tengo 50 puntos de stop y al comprar una acción, por ejemplo, el punto vale 1€, si quiero arriesgar 25e tendré que meter media acción.
Matemáticamente con los datos que maneja el algoritmo es fácil:
Stop_en_puntos * Valor_punto * Tamaño_posición = Valor_de_stop_buscado
Si mi incógnita es Tamaño_posición, despejo y me queda:
Tamaño_posición = Valor_de_stop_buscado / (Stop_en_puntos * Valor_punto)
¿Y si me da decimales? Redondeo al apalancamiento mínimo.
Por ejemplo, si no puedo operar fracciones, redondeo a la unidad. Si me diese un tamaño de 1.2, compraría una sola acción. Si me diese 1.6, compraría dos.
Si busco un stop de 200€ por operación, va a ser difícil que todas arriesguen 200€. Unas arriesgarán 180 y otras 220€.
Cuanto mayor sea tu cuenta, menor será esta diferencia por lo que como las comisiones, es un problema para cuentas pequeñas pero no para cuentas grandes.
Un saludo!
2 -
Si, ese calculo ya le se,el problema me le encuentro a la hora de programarlo, cuando calculo un stop( y el profit en consecuencia) empiezo por una sentencia if marketposition=1 entonces segun el precio de entrada calculo el stop.
por ejemplo:
// SALIDA SETUP INTENCION ALCISTA ++++
if marketposition=1 and RIA=10 then begin
if Barssinceentry=0 then mistop= giro1a;
Puntos_Stop_Ea= Entryprice - mistop ;
miprofit = (Puntos_Stop_Ea * ratio) + entryprice;
sell ("Stop_Int_Alcista") nc contracts next bar at mistop stop ;
SEll ("Take_Int_Alcista") nc contracts next bar at miprofit limit;Entonces para calcular la variable nc que son el numero de contratos , tengo que saber el stop antes de que entre al mercado, en la vela de antes.
Entonces como en los setups en todos tengo como stop miStop y como profit miProfit, no puedo usar esas variables que seria un calculo de una vez para todos los setups, porque cada setup pude tener puntos de stop diferentes, y tendre que programarlos uno a uno, por eso era mi pregunta , no sea que despues de liarme a hacer todo eso, alla un metodo mas sencillo o ni siquiera esteis utilizando esta gestion y lo esteis usando a mano
No se si me explicado muy bien, si no repreguntar😎
0 -
Me respondo parcialmente , he resuleto el codigo para el caso que he puesto anteriormente del setup intencionalcista y seria algo asi
PUNTO = Bigpointvalue ;
if SetUpIntencionAlcista=10 then begin puntosstop= Absvalue(close-giro1a);
riesgo= puntosstop*punto ;
end;
nc= floor(iff (SetUpIntencionAlcista=10 ,Riesgo_por_operacion/riesgo,1));
if SetUpIntencionAlcista=10 then Buy( "Intencion_alcista") nc Shares next bar at close limit ;
if SetUpIntencionAlcista=10 then RIA= 10;// para representacionDonde SetupIntencionAlcista es cuando cumple las condiciones de entrada, he probado con round, y me quita los decimales pero si pasa de 0.5 te coge un contrato de mas (redondea el numero pero no el calculo) , es decir si te da nc = 4,6 te coge 5, y poniendo floor no te coge ningun decimal es decir si te da 2.8 te coge 2
Por favor decirme si es asi , para seguir implantandolo en todos los setups y si hay otra forma mas sencilla soy todo oidos
Gracias
0 -
Aclaro un concepto: Generamos la señal en una vela y es al cierre de esta cuando, si se cumplen las condiciones, ponemos las órdenes para que se tomen en la siguiente vela.
Quizás esto simplifique mucho todo lo que estás haciendo. :)
0 -
No se si me estas corrigiendo o confirmando😁
Yo calculo en SetupIntencionAlcista que es cuando se dan las condiciones al cierre de esta para entrar(a la siguiente vela) y ahi calculo el stop. Pero hasta ahora (que sigue igual no lo he cambiado) la orden de stop la calculo justo cuando entra que es la vela siguiente,
con marketposition=1 y Entryprice, cosas que solo se dan una vez entra y que creo viene bien hacer asi, para diferenciar las entradas de cada setup
No se si con la aclaracion del concepto me estas queriendo decir otra cosa(como si se puede hacer mas sencillo y con menos complicaciones)
0 -
Quiero decir: cuando generamos una señal con una gestión (incluido su precio de stop y demás) estos se mantienen hasta que la operación se tome o se descarte.
Para poner un stop diferente tiene que descartarse la señal y generarse una nueva.
En una misma señal solo hay un punto de stop posible, pase lo que pase.
No estoy del todo seguro si estamos hablando de lo mismo.
0 -
No acabo de entenderte
Voy a poner un ejemplo en pseudocodigo
en la vela1 se me da señal de entrada por setup1
al cierre de la vela1 se manda una orden de compra Buy( "setup1") nc Contract next bar at close limit ;
en la siguiente vela que ya ha entrado a mercado se mandan las ordenes stop y profit usando algo asi:
if marketposition=1 and RIA=10 then begin
if Barssinceentry=0 then mistop= giro1a;
Puntos_Stop_Ea= Entryprice - mistop ;
miprofit = (Puntos_Stop_Ea * ratio) + entryprice;
sell ("Stop_Int_Alcista") nc contracts next bar at mistop stop ;
SEll ("Take_Int_Alcista") nc contracts next bar at miprofit limit;cunado van pasando cosas ,como que salga un volumen de parada o pasen x velas, pongo una orden de sell a breakeven
Que me estas queriendo decir , que cuando pongo esa orden por ejemplo de breakeven tengo que anular la de stop anterior?
Si es asi, ¿como se hace?, porque he visto en la ayuda con cancelorder o algo asi, pero empezamos con las clases de easylenguaje y no se si sabre hacerlo
0 -
Todo se manda en la misma vela. No mandas una entrada y el stop en la siguiente. Pones todo en la misma: orden limit asociada con stop y take. Si una se cancela las cancelas todas.
Sí, cuando mueves un stop tienes que modificar la orden.
Al cierre de la vela haces simplemente
sell ("B_S1") next bar at precio_stop; sell ("B_S2") next bar at precio:limit;
Si antes B_S1 estaba en X y ahora le pones Y, el stop se mueve a Y.
Las decisiones se toman a vela cerrada en nuestro sistema, por tanto, siempre modificaremos al cierre de la vela con efecto en la siguiente.
0 -
Como se pone esas ordenes , es como programar una bracketorder, ponme un ejemplo si las pongo todas seguidas no me las coje, asi
if SetUpIntencionAlcista=10 then begin
puntosstop= Absvalue(close-giro1a);
riesgo= puntosstop*punto ;
mistop= giro1a;
miprofit = (puntosstop * ratio)+ close;
nc= floor(iff (SetUpIntencionAlcista=10 ,Riesgo_por_operacion/riesgo,1));
Buy( "Intencion_alcista") nc Contract next bar at close limit ;
sell ("Stop_Int_Alcista") nc contracts next bar at mistop stop ;
SEll ("Take_Int_Alcista") nc contracts next bar at miprofit limit;como se pone para que se asocie la entrada con las de salida
y despues de eso , cuando quiera cambiar el stop como se cambia la orden, sin hacer una orden nueva, o si hago una orden nueva como cancelo la anterior(que como va asociada al profit tambien habria que volver a poner supongo)
Lo que yo veo por la ayuda del tradestation es complejo y no creo que vallan por ahoi los tiros . Clases y cosas asi
Por cierto en la caja de herramientas hay muchas funciones ,pero no he usado nada ,ni se como se usa, no se si esto ayuda o es para otras cosas
El caso es que como yo lo tenia hecho funcionaba😅, pero bueno depuraremos el codigo
asi tampoco me funciona
Buy( "Intencion_alcista") nc Contract next bar at close limit ;
sell from entry("Intencion_alcista") nc contracts next bar at mistop stop ;
SEll from entry("Intencion_alcista") nc contracts next bar at miprofit limit;0 -
Te va a simplificar mucho: Haz como hago yo, crea un indicador que muestre las líneas de take, stop y entrada y las vaya moviendo visualizando en todo momento la entrada, dónde está cada orden y si estamos o no con una operación activa.
Cuando tengas esto será mucho más fácil porque tendrás en todo momento controlada la posición que quieres tener.
Lo siguiente es simplemente esto, pero vamos por pasos.
0 -
Pones todo en la misma: orden limit asociada con stop y take. Si una se cancela las cancelas todas.
Como haces esto,lo de asociar las ordenes a la entrada, que me da que no es como lo estoy haciendo yo
0 -
No, me he explicado mal.
En TradeStation no se guardan las órdenes en el servidor del broker sino en tu propia plataforma.
Entonces eres tú el responsable de mantenerlas y de moverlas. Si cierras la plataforma o apagas el algoritmo sin cerrar la operación se queda ahí desprotegida.
Primero dibuja las líneas como te digo para tener controlados los valores.
Y después tan solo mantén actualizadas las órdenes.
Ejemplo
Vela 1: pongo stop en x
sell ("B_S1") next bar at precio_stop;
Vela 2: Stop sigue en X
sell ("B_S1") next bar at precio_stop;
Vela 3, stop se mueve a Y. precio_stop ahora vale Y.
sell ("B_S1") next bar at precio_stop;
El precio de la orden stop se movió a Y.
Si se ha cerrado la posición, dejas de poner las órdenes y listo, ya no existen.
Lo primero
Vuelvo a lo mismo:
Dibuja primero la posición y cuando lo tengas entonces piensas en esto.
Así podrás depurar lo que haces de forma óptima.
0 -
Ahora si que me estoy liando.
Vamos a aclarar cosas poco a poco
Hasta ahora como yo lo hago, y le vamos viendo las pegas para no perderme
Defino condiciones de entrada y acaba en una orden tal que asi:
if S_rupturaPocAlcista=1 then buy ("Ruptura POC") nc contract next bar at close limit ; If S_rupturaPocAlcista=1 then RPA = 10 else rpa=0 ; // para representacion
S_rupturaPocAlcista=1 es cuando se dan las condiciones de entrada
y las ordenes de salida las pongo asi:
// SALIDA RUPTURA POC ALCISTA
IF marketposition=1 and RPA=10 then Begin if Barssinceentry=0 then mistop = giro1a ;
miprofit = ((Entryprice-mistop)+Entryprice)* ratio ;
sell ("Stop Ruptura-POC") nc contract next bar at mistop stop;
sell ("Take Ruptura POC") nc contract next bar at miprofit limit ;
Trail= (((Entryprice-mistop) * ratio_breakheaven) + entryprice) ;
If high>trail then FijoTrail=1;
if trail=1 then sell("Bk.4.1") nc contracts next bar at Breakheaven stop; end;Como las ordenes de salida van con el marketposition=1 entiendo que se ponen en la vela siguiente a la de entrada.
Cuando se dan las condiciones para subir el sto(variable Trail) pongo otra orden de venta al precio del breakheaven
Yo lo que te entendido es que deberian entrar las 3 ordenes a la vez y si se ejecuta stop o profit se cancela la otra. asi cuando marketposition=0 se deja de presentar las ordenes y estan canceladas, pero lo vamos viendo.
hasta aqui lo que tengo. Ahora seguimos proceso
El indicador de las ordenes, supongo que hay que ponerlo en el mismo strategy, si es un "indicador " no puedo usar marketposition. y si es asi ya lo tengo implantado, or eso me salen las rayas roja y verde y blanca en el grafico, es asi:
// REPRESENTACION SEÑAL ENTRADA
if marketposition<>0 and representacion_Entrada=1 then Begin
value7= tl_new(d[0],t[1],Entryprice,d,t,Entryprice);
Tl_setcolor(value7,white);
Tl_setstyle(value7,5);end;
//REPRESENTACION STOPS ,BREAKHEAVENS Y PROFIT==========================================================================================
// REA = Estructura REAC=estruct confirmacion RparA=Parada Alcista RIA=Intencion Alcista RPA= Ruptura POC RpreA=PrePoc RpreAl=PrePoc lento or RGiA=Giro en rango Alcista(minimos)
// REB = Estructura REBc=estruct confirmacion RParB=Parada Bajista RIB=Intencion Bajista RPB= Ruptura POC RpreB=PrePoc RpreBl=PrePoc lento or RgiB=Giro en rango Bajista(maximos)If ((marketposition = 1 and representacion_Entrada=1 ) and REA = 10 or REAC=10 Or RparA=10 or RIA=10 or RPA=10 or RpreA=10 or RpreAl=10 or RGiA=10 )
Or
((marketposition = -1 and representacion_Entrada=1) and REB = 10 or REBc=10 or RParB=10 or RIB=10 or RPB=10 or RpreB=10 or RpreBl=10 or RgiB=10 )
then begin
if heaven=true or fijotrail=1 or (volumen_parada and close>Entryprice) then
VALUE8 = tl_new(d[0],t[1],Breakheaven,d,t[0],Breakheaven)
Else
VALUE8 = tl_new(d[0],t[1],mistop,d,t[0],mistop);
Tl_setcolor(value8,red);
Tl_setstyle(value8,1);
VALUE9 = tl_new(d[0],t[1],miprofit,d,t,miprofit);
Tl_setcolor(value9,green );
Tl_setstyle(value9,1);
end;Y a partir de aqui , soy todo oidos, a ver si nos vamos entendiendo
0 -
Vuelvo al inicio.
Lo primero
Dibuja primero la posición y cuando lo tengas entonces piensas en esto.
Así podrás depurar lo que haces de forma óptima.
Primero un indicador que marque las operaciones y ya después se automatizará.
Sino te va a costar mucho más y la depuración va a ser un infierno interminable.
0 -
Luis, me quieres simplificar tanto que no te entiendo
Te estoy diciendo que ya tengo la representacion hecha, que quieres que haga un indicador en la seccion indicador no strategy?
si es asi,no puedo usar las instrucciones de informacion de la posicion como Entryprice o Barssinceentry, creo que sera complicado
Yo voy a estar toda la mañana en el ordenador por si quieres que hablemos directamente, porque creo que no nos estamos entendiendo,por lo menos yo a ti
0 -
¿Puedes poner una captura de cómo está representando las operaciones ese indicador?
0 -
si claro ,por ejemplo la ultima del foro, que se ve como pasa el stop a breakeven y sale por profit
y el codigo te lo puse un poco mas arriba
0 -
Vale, pues desde ahí, solo tienes que hacer una vez sabes que estás dentro con marketposition los buytocover en el caso de la posición corta.
Si sigo dentro, buytocover next bar at.
De lo contrario, dejo de hacerlo y la orden desaparece.
Pruébalo así de sencillo.
Debes distinguir el caso alcista del bajista.
0 -
Si ,es asi como lo tengo hecho!!!
A ver de que estamos hablando, que ya no se por donde hemos empezado😂
Yo tengo las ordenes y la representacion funcionando, y diria que bien, de la manera que he descrito y lo que estaba añadiendo que es cuando ha empezado este lio era la gestion del capital, para calcular el numero de contratos, tengo uno hecho que es el de intencionalcista y esta asi:
PUNTO = Bigpointvalue ; if SetUpIntencionAlcista=10 then begin puntosstop= Absvalue(close-giro1a); riesgo= puntosstop*punto ; end; nc= floor(iff (SetUpIntencionAlcista=10 ,Riesgo_por_operacion/riesgo,1)); if SetUpIntencionAlcista=10 then Buy( "Intencion_alcista") nc Shares next bar at close limit ; if SetUpIntencionAlcista=10 then RIA= 10;// para representacion
como las ordenes de stop y profit las meto con marketposition=1, el numero de contratos "nc" lo tengo que calcular en la vela que da entrada (como en este trozo de codigo que he puesto), y por eso preguntaba,por si habia manera mas sencilla
Que no es que esta sea complicada ,sino que la tengo que ir poniendo en todos los setups porque cada uno tiene su punto de stop distinto.
A ver si me has entendido ahora😄, si te parece correcto lo hago asi, y si no le damos las vueltas que haga falta , yo quiero hacerlo bien, no tener razon
0 -
Creo que soy yo el que no te estaba entendiendo y me he ido por las ramas, disculpa. 😅
Se hace utilizando "shares".
Orden (ID) X shares cuándo
Ejemplos:
Buy ("My Entry") 100 shares next bar at open;
Y esos shares los calculamos como te comentaba aquí.
No sé si te estoy entendiendo ahora o aún no sé bien de qué hablamos.
Realmente lo que dices en el anterior post es lo mismo que te estaba comentando, esa es la forma de hacerlo.
¿Es esto de lo que hablamos o sigo perdido?
0 -
Vale ,pues lo rematare asi
1
Categorías
- Todas las Categorías
- 19 Presentaciones
- 46 Nuestros sistemas (Curso gratuito)
- 70 Operativa y Sistemas de trading
- 29 Inversiones
- 12 Inteligencia Artificial y Optimización de Algoritmos
- 62 Plataformas
- 27 Programación e Inteligencia Artificial
- 21 Brokers
- 11 Bancos
- 28 Pruebas de fondeo
- 8 Psicología y Trading
- 6 Fiscalidad
- 85 Otros temas