Comprar y vender posición entera o parcial en función condiciones
Forums › ProRealTime foro Español › Soporte ProOrder › Comprar y vender posición entera o parcial en función condiciones
- This topic has 4 replies, 2 voices, and was last updated 3 months ago by Gonzaga.
-
-
07/26/2024 at 10:42 AM #235803
Hola, soy nuevo en esto de programar un backtest, y no soy capaz de escribir un código, que sirva para comprar con el 100% del capital cuando se cumplen dos condiciones , y el 50% del capital cuando se cumple una sola condición, y lo mismo para la venta. Pongo este ejemplo: quiero estar 100% invertido cuando una acción, tiene el precio está por encima de la media simple de 200 y cuando el RSI de 14 periodos, está por encima de 60, si el RSI se coloca por debajo de 60, pero el precio sigue por encima de la media de 200, solo quiero vender el 50% de la posición. Si el RSI vuelve a estar por encima de 60, quiero estar otra vez invertido 100%. Sí por ejemplo, no se cumple ninguna de las 2 condiciones, quiero vender todo, y estar 0% invertido.
Solo he conseguido, que se cumplan estas condiciones para la venta, pero en el momento, en que se produce la primera venta del 50%, si luego el RSI vuelve a estar por encima de 60, ya no se activa ninguna orden de compra, para volver a estar invertido 100%. He probado de diferentes formas con el DEFPARAM true o false, pero no lo consigo. Este es el código que tengo metido actualmente. Muchas gracias.
//SISTEMA RSI Y MEDIA200//
DEFPARAM CumulateOrders=True//INDICADORES UTILIZADOS//
MSIMPLE= AVERAGE [200] (close)
MiRSI= RSI [14] (close)//CONDICIONES ENTRADA
C1 = CLOSE> MSIMPLE
C2 = MiRSI>60//CONDICIONES SALIDA PARCIAL
C3 = MiRSI <60// CONDICIONES SALIDA TOTAL
C4 = CLOSE <MSIMPLE//GESTIÓN DE CAPITAL
CAPITALINICIAL = 50000
CAPITALACUMULADO = STRATEGYPROFIT + CAPITALINICIAL
numShares = floor (CAPITALACUMULADO / CLOSE)//ORDENES ENTRADA
IF C1 AND C2 AND NOT ONMARKET THEN
BUY numShares shares AT MARKET
ENDIF//ORDENES SALIDA
IF NOT Onmarket THEN
Vender = 1
ENDIF//REM ORDENES DE VENTA PARCIAL
IF C3 AND Vender THEN
SELL numShares /2 SHARES AT MARKET
Vender = 0
ELSIF C4 THEN
SELL AT MARKET
ENDIF
//07/29/2024 at 7:58 AM #235878buenas. Sobre tu código he cambiado la variable vender.
1234567891011121314151617181920212223242526272829303132333435363738394041//SISTEMA RSI Y MEDIA200//DEFPARAM CumulateOrders=True//INDICADORES UTILIZADOS//MSIMPLE= AVERAGE [200] (close)MiRSI= RSI [14] (close)//CONDICIONES ENTRADAC1 = CLOSE> MSIMPLEC2 = MiRSI>60//CONDICIONES SALIDA PARCIALC3 = MiRSI <60// CONDICIONES SALIDA TOTALC4 = CLOSE <MSIMPLE//GESTIÓN DE CAPITALCAPITALINICIAL = 50000CAPITALACUMULADO = STRATEGYPROFIT + CAPITALINICIALnumShares = floor (CAPITALACUMULADO / CLOSE)//ORDENES ENTRADAIF C1 AND C2 AND NOT ONMARKET THENBUY numShares shares AT MARKETVender = 1ENDIF//ORDENES SALIDA//IF NOT Onmarket THEN//Vender = 1//ENDIF//REM ORDENES DE VENTA PARCIALIF C3 AND Vender THENSELL numShares /2 SHARES AT MARKETVender = 0ELSIF C4 and vender=0 THENSELL AT MARKETENDIF07/30/2024 at 2:44 PM #235938Hola Ivan,
Muchas gracias por tu ayuda. He introducido tus cambios, lamentablemente sigo igual 🙁 , lo que trato es que el sistema cuando esté 50% invertido, pueda pasar al 100% invertido directamente , cuando se vuelven a cumplir las 2 condiciones, y que no tenga que esperar a que primero pase a estar al 0% invertido (cuando se dejan de cumplir las 2 condiciones), para luego ya sí el sistema comprar el 100%, si vuelven a darse las 2 condiciones.
En resumen, que no me deja pasar del 50% al 100%, y solo funciona la compra del 0% al 100%.
Un saludo
07/31/2024 at 12:55 PM #235965Ahh, ok.
12345678910111213141516171819202122232425262728293031323334353637383940414243//SISTEMA RSI Y MEDIA200//DEFPARAM CumulateOrders=True//INDICADORES UTILIZADOS//MSIMPLE= AVERAGE [200] (close)MiRSI= RSI [14] (close)//CONDICIONES ENTRADAC1 = CLOSE> MSIMPLEC2 = MiRSI>60//CONDICIONES SALIDA PARCIALC3 = MiRSI <60// CONDICIONES SALIDA TOTALC4 = CLOSE <MSIMPLE//GESTIÓN DE CAPITALCAPITALINICIAL = 50000CAPITALACUMULADO = STRATEGYPROFIT + CAPITALINICIALnumShares = floor (CAPITALACUMULADO / CLOSE)//ORDENES ENTRADAIF C1 and entrada1=0 THENBUY numShares/2 shares AT MARKETVender = 1entrada1 = 1ENDIFIF C2 AND entrada2=0 THENBUY numShares/2 shares AT MARKETVender = 1entrada2 = 1ENDIF//REM ORDENES DE VENTA PARCIALIF C3 AND Vender THENSELL COUNTOFPOSITION /2 SHARES AT MARKETVender = 0ELSIF C4 and vender=0 THENSELL AT MARKETentrada1 = 0entrada2 = 0ENDIF08/08/2024 at 4:59 PM #236272Hola, me temo que sigue sin salir, de hecho ahora no entiendo muy bien lo resultados…empiezo a pensar que quizás lo que estoy pidiendo , no se puede hacer directamente…era un simple sistema para estar posicionado el 50% o el 100% dependiendo de un sistema con 2 condiciones, en el que si se cumplía la condición A entraba al 50% y si se cumplía A y B a la vez, estaba al 100%. Pero no termina de salir.
Un saludo y gracias
-
AuthorPosts
Find exclusive trading pro-tools on