¡Buenas de nuevo!
Aquí estoy otra vez con otra consulta de novato, jeje. La cuestión es que me gustaría saber si puedo configurar la variable “contratos”, básicamente calculando un % del capital disponible en el momento de abrir la operación.
REM Calcular el tamaño de la posición
Contratos = ?
IF NOT LongOnMarket THEN
BUY Contratos SHARES AT MARKET
ENDIF
Gracias de antemano, ¡saludos!
¿Entonces tendría que ser algo así?
REM Número de contratos a operar
contratos=1
IF StrategyProfit > 1000 AND StrategyProfit < 2000 THEN
contratos=contratos+1
ENDIF
IF StrategyProfit > 2000 AND StrategyProfit < 3000 THEN
contratos=contratos+2
ENDIF
IF StrategyProfit > 2000 AND StrategyProfit < 3000 THEN
contratos=contratos+3
ENDIF
…¿Y así hasta el infinito?…
¿O existe la forma de extender estas condiciones con una fórmula mas corta?
He intentado utilizar sin éxito el bucle FOR… 🙁
¿Alguna ayuda?
¡GRACIAS!
Esa es la idea. Yo lo uso con frecuencia.
//initial lot
initLOT = 100
//profit step of the strategy to increase lot
stepPROFIT = 50
myLOT = max(initLOT,initLOT+ROUND((strategyprofit-stepPROFIT)/stepPROFIT))
Gracias por tu respuesta Nicolas,
He probado el código que has puesto en mi sistema y no obtengo los resultados que esperaba, me explico:
REM Adaptación a mi codigo
REM Valor de mercado 1$ tick
//initial lot
initLOT = 1
//profit step of the strategy to increase lot
stepPROFIT = 5
myLOT = max(initLOT,initLOT+ROUND((strategyprofit-stepPROFIT)/stepPROFIT))
Éstas son las últimas tres operaciones: *Captura 1
No quiero que aumente los contratos una vez dentro del mercado, sino que una vez finalizada cada operación, compruebe el incremento/disminución del profit y la siguiente operación entre con X contratos:
<pre class="line-numbers">
<pre class="line-numbers"><code class="language-prorealtime">REM Aumentar en 1 el valor de contratos cuando el profit acumulado sea mayor a 1000
IF StrategyProfit < 1000 THEN
contratos=1
ENDIF
IF StrategyProfit > 1000 AND StrategyProfit < 2000 THEN
contratos=2
ENDIF
IF StrategyProfit > 2000 AND StrategyProfit < 3000 THEN
contratos=3
ENDIF
IF StrategyProfit > 3000 AND StrategyProfit < 4000 THEN
contratos=4
ENDIF
IF StrategyProfit > 4000 AND StrategyProfit < 5000 THEN
contratos=5
ENDIF
REM Entrada de posiciones largas
IF NOT LongOnMarket AND EntradaLarga=1 THEN
BUY contratos SHARE AT preciocompra LIMIT
ENDIF
REM Entrada de posiciones cortas
IF NOT ShortOnMarket AND EntradaCorta=1 THEN
SELLSHORT contratos SHARE AT precioventa LIMIT
ENDIF
Ruego al moderador que elimine el post anterior, es confuso y queda actualizado con éste.
Gracias por tu respuesta Nicolas, He probado el código que has puesto en mi sistema y no obtengo los resultados que esperaba, me explico:
REM Adaptación a mi codigo
REM Valor de mercado 1$ tick
//initial lot
initLOT = 1
//profit step of the strategy to increase lot
stepPROFIT = 5
myLOT = max(initLOT,initLOT+ROUND((strategyprofit-stepPROFIT)/stepPROFIT))
Éstas son las últimas tres operaciones: *Captura 1
Me gustaría que continuara ésta serie
REM Aumentar en 1 el valor de contratos cuando el profit acumulado sea mayor a 1000
IF StrategyProfit < 1000 THEN
contratos=1
ENDIF
IF StrategyProfit > 1000 AND StrategyProfit < 2000 THEN
contratos=2
ENDIF
IF StrategyProfit > 2000 AND StrategyProfit < 3000 THEN
contratos=3
ENDIF
IF StrategyProfit > 3000 AND StrategyProfit < 4000 THEN
contratos=4
ENDIF
IF StrategyProfit > 4000 AND StrategyProfit < 5000 THEN
contratos=5
ENDIF
REM Entrada de posiciones largas
IF NOT LongOnMarket AND EntradaLarga=1 THEN
BUY contratos SHARE AT preciocompra LIMIT
ENDIF
REM Entrada de posiciones cortas
IF NOT ShortOnMarket AND EntradaCorta=1 THEN
SELLSHORT contratos SHARE AT precioventa LIMIT
ENDIF
¿Como sería para no escribir cientos de lineas con 5000, 6000, 7000…100000…?
¿Hay alguna otra forma de hacerlo?
¡Gracias!
La “stepPROFIT” variable debe establecerse en 1000 en su caso. Prueba esto:
stepPROFIT = 1000
EcoParticipant
New
Hola:
Yo he utilizado en ocasiones esto:
GARANTIAFUTURO=5060
IF STRATEGYPROFIT>GARANTIAFUTURO*2 THEN
LIMITECONTRATOS=ROUND(1+STRATEGYPROFIT/(GARANTIAFUTURO*2))
ELSE
LIMITECONTRATOS=1
ENDIF
Un saludo
Lo siento, no entiendo cómo funciona realmente ese código. ¿Podrías explicarlo por favor?
Entiendo que cuando el beneficio supere el objetivo entrará con 1 contrato más, ¿exponencialemente? Me explico: Llega a 5061, entra con 2 contratos, llega a 1121 y.. ¿entra con 3?
Otra duda que me genera, si el beneficio es menor (si entra en pérdidas), ¿reduce la cantidad de contratos para la próxima operación?
Gracias!
Got it!
initLOT = 1
stepPROFIT = X*PointValue
myLOT = max(initLOT,initLOT+ROUND((strategyprofit-stepPROFIT)/stepPROFIT))
Cheers!