.

MaurisioColmenero

Madmaxista
Desde
31 Jul 2011
Mensajes
606
Reputación
640
Lugar
Esperanza Sur
No hamijo, no es solo para colaborar con otros programadores... Usalo en tu día a día. Te ayudará a:
* Cambiar de contexto rápidamente
* Ordenar las ideas
* Hacer "checkpoints" confiables
* Crear ramas de usar y tirar

En fin, ser mejor programador

La curva de aprendizaje es muy suave cuanto antes lo uses mejor!!

Enviado desde mi CPC 464
 
Última edición:

lamateporunyogur

Himbersor
Desde
26 Abr 2019
Mensajes
425
Reputación
520
Historia. Corta.

Llevo 1-2 años estudiando programación, para un proyecto personal, elegi VBA de exel por que pensé que era lo mas adecuado, lo sigo pensando, por que me parece fácil y puede hacer de sobra lo que me he propuesto.
He avanzado mucho y tengo mi programa la 50%, se como avanzar y hacer las cosas, pero me encuentro con un escollo, muy complicado.
Tengo perdida la motivación , me cuesta mucho ponerme, a veces no se que hacer, me pongo 4 horas pero solo saco 1 hora efectiva, llevo 800 lineas de programa y me quedarán otras 800, mas luego optimizarlo todo.

No me extraña que los de TIC estéis puteados, si esto lo hago para mi, para un tercero seria la muerte.
Tengo mas de 40 tacos, no se si tiene que ver, pero muchos me han dicho que despues de los 30 no se puede aprender a programar.

Toda motivación es poca!!!!!! Burbujos a mi.
Aupa tu guapo!!!!

¿Que después de los 30 no se puede aprender a programar? roto2 no se quién habrá sido el bodoque que te ha dicho eso...
 

apatrida

Forero Paco Demier
Desde
28 Mar 2019
Mensajes
48
Reputación
60
A lo de aprender a programar después de los 30 no le veo ningún inconveniente, siendo informático te toca seguir estudiando de por vida si no te quieres convertir en un dinosaurio. La mejor forma de saber si estás en forma es hacer entrevistas de trabajo, ya que siempre hay que estar listo por si te pegan la patada.
 

T-34

Madmaxista
Desde
1 Dic 2016
Mensajes
577
Reputación
784
Yo sinceramente, de ser tu, habria apostado por C# para aprender a programar. Solo tienes que instalar visual studio y aprender c#
 

qbit

Sith qbitiano
Desde
23 Ene 2008
Mensajes
27.693
Reputación
53.432
Lugar
Madridlandia
Visual Basic lo traen programas de gráficos bursátiles como Visual Chart para programar estrategias, así que no es algo tan raro.
 

pelotazo_especulativo

Pvrasangrismo o derroicion
Desde
22 Sep 2011
Mensajes
21.265
Reputación
63.740
Ni caso a los frikis que pululan por aqui, que se pierden en la tecnologia de programacion y luego son incapaces de entender lo que hace el programa si va mas alla de consultar una base de datos o crear una ventanita. Experto en el continente pero 0 en el contenido.

Lo de Python... sentimientos encontrados. Si no eres programador, python puede dar mucho dolor de cabeza con las bibliotecas y la gestion de las mismas. VBA o C# o lo que sea, son bastante mas amigables si quieres ponerte a programar y no preocuparte de movidas con las configuraciones , o si python 2 o 3 y spm.

Cada herramienta tiene sus pros y contras, pero hay sistemas que aun funcionan con lenguajes de los 80 y no los cambian... asi que la "edad" del lenguaje es irrelevante si a ti te vale para tu proposito.
 

Registrador

Madmaxista
Desde
10 May 2010
Mensajes
17.528
Reputación
32.279
Lugar
en la bodeguita de moncloa
Lo de Python... sentimientos encontrados. Si no eres programador, python puede dar mucho dolor de cabeza con las bibliotecas y la gestion de las mismas.
Mucho dolor de cabeza:

pip install libreriaquetesalgadelapolla

Y ya esta

Y sobre Python 2, le quedan 2 meses de vida.

Si aprendes ahora lo haces todo en python 3 y se acabó

La verdad, os ahogáis en un vaso de agua.
 

pelotazo_especulativo

Pvrasangrismo o derroicion
Desde
22 Sep 2011
Mensajes
21.265
Reputación
63.740
Mucho dolor de cabeza:

pip install libreriaquetesalgadelapolla

Y ya esta

Y sobre Python 2, le quedan 2 meses de vida.

Si aprendes ahora lo haces todo en python 3 y se acabó

La verdad, os ahogáis en un vaso de agua.
No me refiero a eso hamijo, instalarlas en muy sencillo, el problema es cuando tienes varias librerias que usan a su vez librerias comunes pero distinta version.
O llevas control talibanico del tema o preparate a sufrir, al menos asi era la ultima vez que lo mire.
 

Registrador

Madmaxista
Desde
10 May 2010
Mensajes
17.528
Reputación
32.279
Lugar
en la bodeguita de moncloa
No me refiero a eso hamijo, instalarlas en muy sencillo, el problema es cuando tienes varias librerias que usan a su vez librerias comunes pero distinta version.
O llevas control talibanico del tema o preparate a sufrir, al menos asi era la ultima vez que lo mire.
el unico control q tienes que llevar es usar siempre python 3. Y recuerda q el abre el hilo lo unico q esta haciendo es utilizar datos de un documento de excel y compararlos con determinadas reglas que el mismo crea. Algo que en python requiere 1 o 2 librerias externas (numpy y pandas).

Me juego que el programa que @especialista ha creado en VBA con dolor se podría hacer en menos de 50 lineas en python y sin ninguna necesidad de excel (simplemente usando archivos CSV)
 

Registrador

Madmaxista
Desde
10 May 2010
Mensajes
17.528
Reputación
32.279
Lugar
en la bodeguita de moncloa
Puede que menos codigo pero tanto como 50 lineas?
Ahora mismo mi programa, te deja hasta meterle programacion a nivel usuario, osea tu le metes los criterios con los que quieres que abra o cierre operaciones , a nivel de usuario, y sin saber programar solo con leerte un manual que tengo que hacer.

Le puede decir, abre operacion, pero solo si la vol es > 15 , y ademas si no se esperan dividendos en los proximos 20 dias, por otro lado tb me la abres independientemente de lo anterior si el subyacente ha subido un 3% en los ultimos 4 dias. Y para cerrar operaciones igual. Ahora mismo tengo 10 criterios de apertura cierre, combinables ademas cada criterio le puedes poner multiples settings.
Vamos que mi aplicacion te deja programarla a nivel usuario.
Vamos que has creado una GUI (Interfaz gráfica de usuario), cosa que se puede hacer naturalmente con python por ejemplo con Tkinter o creando una web con flask. Otras 30 lineas en python.

 

kunk

Madmaxista
Desde
20 May 2008
Mensajes
16.814
Reputación
16.531
Ni caso a los frikis que pululan por aqui, que se pierden en la tecnologia de programacion y luego son incapaces de entender lo que hace el programa si va mas alla de consultar una base de datos o crear una ventanita. Experto en el continente pero 0 en el contenido.

Lo de Python... sentimientos encontrados. Si no eres programador, python puede dar mucho dolor de cabeza con las bibliotecas y la gestion de las mismas. VBA o C# o lo que sea, son bastante mas amigables si quieres ponerte a programar y no preocuparte de movidas con las configuraciones , o si python 2 o 3 y spm.

Cada herramienta tiene sus pros y contras, pero hay sistemas que aun funcionan con lenguajes de los 80 y no los cambian... asi que la "edad" del lenguaje es irrelevante si a ti te vale para tu proposito.
Eso es algo que era un problema hará 3 o 4 años, pero ahora ya pertenece al pasado. Quien usa python 2 al día de hoy es unicamente por motivos de retrocompatibilidad, y eso para desarrollos nuevos es irrelevante. Si empiezas en python 3 desde el principio, como ya han pasado varios años, ya las librerías están portadas y no hay problema. En cuanto a configuraciones, si usas una distribución te vienen basicamente todas las librerías incluidas y testadas, de modo que tampoco te van a dar demasiados problemas al configurar el entorno o el editor.

Si python está en el primer puesto de popularidad es por algo. Si diera problemas la gente no lo usaría. Aparte, al menos el segundo y el tercero (java y javascript) no son demasiado adecuados para hacer el tipo de cosas que el OP pretende hacer (aunque naturalmente, si se empeña mucho tal vez lo pueda hacer hasta con esos)

1572880792115.jpeg
 
Última edición:

Registrador

Madmaxista
Desde
10 May 2010
Mensajes
17.528
Reputación
32.279
Lugar
en la bodeguita de moncloa
No exatamente, de hecho no tiene ni cuadro de dialogo, lo pones en un cuadro de texto del propio Excel, en una celda le poner las condiciones de apertura en otro las de cierre, para las condiciones de apertura le puedes poner cosas sencilla como esto:
MONDAY,+_VOLAT_OPEN_<_13 esto significaría que abra operación solo si es lunes y además la volatilidad en apertura esta por debajo de 13, el + siginificaria que es necesario que sean las 2 condiciones, eejmplo
MONDAY,+_TUESDAY no va a abrir ninguna operación por que nunca va a ser lunes y martes a la vez, pero MONDAY,TUESDAY (notese que va sin el +)abrirá una operación el lunes y otra el martes.

Luego todos los criterios son combinables, cuando hay un + se suma al criterio anterior y cuando no hay mas cuenta como nueva condicion
MONDAY,+_VOLAT_OPEN_>16,+_PRICE_CLOSE,MONDAY,+_PRICE OPEN esto significaría que va a abrir si es lunes y si la volatilidad es >16 y además va abrir esta operación al precio de cierre, solo si no se cumple, empieza con la segunda que es abrir igualmente si es lunes pero a precio de apertura.

Y luego muchos asi voy añadiendo mas criterios que se pueden añadir ejemplo
FRIDAY,+_UNDERLINEANY_4_7_1,+_NODIVIDEND_20,+_VOLAT_OPEN_>_14.5,+_VOLAT_OPEN_<_29,+_PRICE_CLOSE para abrir esta operación se necesita que sea viernes, que la acción haya subido un 4% en los últimos 7 dias contando como lectura inicial el precio de cierre de hace 7 dias, además no puede haber dividendoes en los siguientes 20 dias, además la volatilidad tienes qe ser >14.5 y < que 29, si todo esto se cumple abre la operación a precio de cierre.

Lo bueno es que si mañana se me ocurre otro criterio que quiero introducir, por ejemplo cuando tiro una moneda si sale cara o cruz, solo es hacer una nueva función pongamos CARAOCRUZ con argumento secundario CARA/CRUZ y ya puedo pedirle en apertura la condición , ALL,+_CARAOCRUZ_CRUZ esto me abriría una operacion si se cumple( ALL), osea todos los dias y si además (+)tirando una moneda me sale cruz (CARAOCRUZ_CRUZ), de hecho en este caso el ALL sobra ,por que el segundo criterio es el determinante. En este mismo ejemplo podrias poner CARAOCRUZ_CARA,+_CARAOCRUZ_CARA , esto haría que se tirasen 2 veces la moneda ,se abriese una operación si sale 2 veces cara, asi que en teoría de cada 4 veces que intenta abrir abriría solo 1 .

Esto lo he pensado asi para poder hacer miles o casi infinitas, contando que cada criterio tiene subcriterios, ahora mismo con unos 10 criterior y cada criterio una media 1 subriterio, al cual le puedes poner de 2 a infinitas combinaciones si es numerico,, pues mete un 20 factorial minimo de combinaciones que puedo poner tanto en apertura o cierre quedándome corto. Además de una tacada le puedo poner a calcular desde la volatilidad (o cualquier otra cosa o combinaciones de cosas) < 9 hasta la volatilidad <20 por ejemplo con intervalos de 0.2 o 0.5 o lo que quiera, y el empieza a hacer backtest solo y cuando termina me dice cual de los parámetros de mejor resultado, con esto consigo poner al ordenador ha testear por ejemplo 5000 estrategias diferentes o las que quiera de una tacada y que me sale la mejor. Hay es donde se tira dias haciéndome cuentas

Cuantas lineas mas para esto?
38 lineas (comentarios incluidos):

Código:
from datetime import datetime

# Datos reales q me imagino que importaras de una API
hoy = datetime.today().strftime('%A')
volatilidad_hoy = 40
precio_apertura_hoy = 20


# Controles
def control_dia(dia):
    if hoy == dia:
        return True


def control_volatilidad(max_volatilidad):
    if max_volatilidad < volatilidad_hoy:
        return True


def control_precio_apertura(precio_apertura):
    if precio_apertura < precio_apertura_hoy:
        return True


# Abrir operacion si todos los controles son positivos
def abrir_operacion(dia, max_volatilidad, precio_apertura):
    if control_dia(dia) and \
       control_volatilidad(max_volatilidad) and \
       control_precio_apertura(precio_apertura):
        print("abro operacion")
    else:
        print("no se dan todos los requisitos para abrir operacion")


# Ejecucion del programa
# añadiendo los datos correspondiente
# Si quieres ignorar un control pon 0 como argumento
abrir_operacion("Tuesday", 0, 10)
;)

Cada control nuevo que quieras añadir son 3 lineas nuevas en la funcion de control y 1 linea mas en el if. Es decir 4 lineas por cada nuevo control.
 
Última edición: