Aplicación para extraer datos de una compañía

;##################################################
;######### Estadísticas subidas/bajadas ###########

alias -l mdx2 { dll $shortfn($scriptdirmdxmdx.dll) $$1- }
alias -l mdx_init2 { mdx2 SetMircVersion $version | mdx2 MarkDialog $1 }
alias -l _viewsdll2 { return $dll( $shortfn($scriptdirmdxmdx.dll) ,$1,$2- > $shortfn($scriptdirmdxviews.mdx) ) }

alias _Esta_su_ba { if (!$dialog(bajsub)) { dialog -mdo bajsub bajsub } }
dialog bajsub {
title «Subidas/Bajadas»
size -1 -1 302 483
button «Importar»,1,60 10 60 20
button «Calcular»,2,180 10 60 20
list 3,10 40 282 170, size extsel center
edit «»,25,9 220 283 255,read multi autovs vsbar hsbar
}

on 1:dialog:bajsub:init:0:{
mdx_init2 $dname
_viewsdll2 SetControlMDX $dname 3 listview report grid showsel rowselect
did -i $dname 3 1 headerdims 65:1 65:2 65:3 65:4
did -i $dname 3 1 headertext +c Apertura $+ $chr(9) $+ +c Máximo $+ $chr(9) $+ +c Mínimo $+ $chr(9) $+ +c Cierre
}

on 1:dialog:bajsub:sclick:*:{
if ($did == 1) {
set %_CompaName $sfile($mircdir,Selecciona el fichero histórico de la compañía,Importar)
_CListHisto $dname 3 | _LoadListHisto $dname 3 %_CompaName
}
elseif ($did == 2) { _LoadResultHisto }
else { return $null }
}

on 1:dialog:bajsub:close:*:{
if ($fopen(FileHisto)) { .fclose FileHisto }
if ($hget(HistoComp)) { hfree HistoComp }
if ($hget(bolsa1)) { hfree bolsa1 }
if ($hget(bolsa2)) { hfree bolsa2 }
unset %_CompaName %baj* %sub* %_estado_s_b %bol_cons %floor_cons %_CompaName %_sub_*
}

alias -l _LoadListHisto {
if ($isfile($+(«,$3,»)) == $true) {
if ($fopen(FileHisto)) { .fclose FileHisto } | else { .fopen FileHisto $+(«,$3,») }
if ($hget(HistoComp)) { hfree HistoComp }
var %j = 1
while (!$feof(FileHisto)) {
var %i = $fread(FileHisto) | did -a $1 $2 %i
hadd -m HistoComp %j $replace(%i,$chr(9),*,$chr(44),.) | inc %j
}
.fclose FileHisto
}
}

alias -l _CListHisto { var %i = $did($1,$2,0).lines | while (%i > 0) { did -d $1 $2 $did($1,$2,%i).lines | dec %i } }

alias -l _LoadResultHisto {
did -ra bajsub 25 $str($chr(160),6) ===== Resultados de la compañía ===== $str($crlf,3)
var %i = 1 , %_subidas = 0 , %_bajadas = 0 , %_med_tan_sub = 0 , %_med_tan_baj = 0
set %bol_cons 0
set %floor_cons 0
if ($hget(bolsa1)) { hfree bolsa1 }
if ($hget(bolsa2)) { hfree bolsa2 }
while ($hget(HistoComp,%i)) {
var %_DatHist = $ifmatch
if ($gettok(%_DatHist,1,42) < $gettok(%_DatHist,4,42)) {
var %_med_tan_sub = $calc(%_med_tan_sub + $tantoporciento($gettok(%_DatHist,1,42),$gettok(%_DatHist,4,42)))
inc %_subidas
inc %bol_cons
if (%floor_cons > 0) {
var %g = $iif($hget(bolsa2,%floor_cons),$hget(bolsa2,%floor_cons),0)
hadd -m bolsa2 %floor_cons $calc(%g + 1)
}
set %floor_cons 0
}
else {
var %_med_tan_baj = $calc(%_med_tan_sub + $tantoporciento($gettok(%_DatHist,1,42),$gettok(%_DatHist,4,42)))
inc %_bajadas
if (%bol_cons > 0) {
var %c = $iif($hget(bolsa1,%bol_cons),$hget(bolsa1,%bol_cons),0)
hadd -m bolsa1 %bol_cons $calc(%c + 1)
}
set %bol_cons 0
inc %floor_cons
}
inc %i
}
if (%bol_cons > 0) {
var %c = $iif($hget(bolsa1,%bol_cons),$hget(bolsa1,%bol_cons),0)
hadd -m bolsa1 %bol_cons $calc(%c + 1)
}
if (%floor_cons > 0) {
var %g = $iif($hget(bolsa2,%floor_cons),$hget(bolsa2,%floor_cons),0)
hadd -m bolsa2 %floor_cons $calc(%g + 1)
}
did -a bajsub 25 – %_subidas subidas de un total de $hget(HistoComp,0).item días. $crlf
did -a bajsub 25 – %_bajadas bajadas de un total de $hget(HistoComp,0).item días. $crlf $crlf
did -a bajsub 25 $str(:,50) $crlf $crlf
did -a bajsub 25 – Media de precio en subida: $round($calc(%_med_tan_sub / %_subidas),2) $+ % $crlf
did -a bajsub 25 – Media de precio en bajada: $round($calc(%_med_tan_baj / %_bajadas),2) $+ % $crlf $crlf
did -a bajsub 25 $str(:,50) $crlf $crlf
var %b = 1 | set %_sub_dato1 | set %_sub_dato2 | set %_sub_dato1a | set %_sub_dato2a
while (%b <= $hget(bolsa1,0).item) {
did -a bajsub 25 – $hget(bolsa1,%b).item Dia(s) Consecutivo(s) = $hget(bolsa1,$hget(bolsa1,%b).item) Veces SUBIDAS. $crlf
set %_sub_dato1 $calc(%_sub_dato1 + ($hget(bolsa1,%b).item * $hget(bolsa1,$hget(bolsa1,%b).item))))
set %_sub_dato1a $calc(%_sub_dato1a + $hget(bolsa1,$hget(bolsa1,%b).item))
inc %b
}
did -a bajsub 25 $crlf
var %k = 1
while (%k <= $hget(bolsa2,0).item) {
did -a bajsub 25 – $hget(bolsa2,%k).item Dia(s) Consecutivo(s) = $hget(bolsa2,$hget(bolsa2,%k).item) Veces BAJADAS. $crlf
set %_sub_dato2 $calc(%_sub_dato2 + ($hget(bolsa2,%k).item * $hget(bolsa2,$hget(bolsa2,%k).item))))
set %_sub_dato2a $calc(%_sub_dato2a + $hget(bolsa2,$hget(bolsa2,%k).item))
inc %k
}
did -a bajsub 25 $crlf
did -a bajsub 25 $str(:,50) $crlf $crlf
did -a bajsub 25 – Media aritmética en días consecutivos en subida: $round($calc($eval(%_sub_dato1,2) / $eval(%_sub_dato1a,2)),2) $+ % $crlf
did -a bajsub 25 – Media aritmética en días consecutivos en bajada: $round($calc($eval(%_sub_dato2,2) / $eval(%_sub_dato2a,2)),2) $+ % $crlf $crlf
did -a bajsub 25 $str(:,50) $crlf $crlf

var %b = 1
while (%b <= $hget(bolsa1,0).item) {
set $+(%,sub_,$hget(bolsa1,%b).item) $round($calc(($hget(bolsa1,$hget(bolsa1,%b).item) / %_sub_dato1a) * 100),2)
inc %b
}
var %k = 1
while (%k <= $hget(bolsa2,0).item) {
set $+(%,baj_,$hget(bolsa2,%k).item) $round($calc(($hget(bolsa2,$hget(bolsa2,%k).item) / %_sub_dato2a) * 100),2)
inc %k
}

var %i = 2 , %sube = 0 , %baja = 0
set %_estado_s_b $iif($gettok($hget(HistoComp,1),1,42) < $gettok($hget(HistoComp,1),4,42),1,0)
while ($hget(HistoComp,%i)) {
var %j = $ifmatch
if (%_estado_s_b == 1) {
if ($gettok(%j,1,42) < $gettok(%j,4,42)) { inc %sube }
else { var %i = $hget(HistoComp,0).item }
}
else {
if ($gettok(%j,1,42) > $gettok(%j,4,42)) { inc %baja }
else { var %i = $hget(HistoComp,0).item }
}
inc %i
}
if (%_estado_s_b == 1) { did -a bajsub 25 – Previsión para mañana: Con $calc(%sube + 1) día(s) de subida que lleva, tiene un $eval($+(%,_sub_,$calc(%sube + 1)),2) $+ % de probabilidades de que mañana vuelva a subir, y un $calc(100 – $eval($+(%,sub_,$calc(%sube + 1)),2)) $+ % de probabilidades de que baje. }
else { did -a bajsub 25 – Previsión para mañana: Con $calc(%baja + 1) día(s) de bajada que lleva, tiene un $eval($+(%,baj_,$calc(%baja + 1)),2) $+ % de probabilidades de que mañana vuelva a bajar, y un $calc(100 – $eval($+(%,baj_,$calc(%baja + 1)),2)) $+ % de probabilidades de que suba. }
if ($hget(bolsa1)) { hfree bolsa1 }
if ($hget(bolsa2)) { hfree bolsa2 }
}


3 comentarios en “Aplicación para extraer datos de una compañía”

  1. Hola, espero que no te importe que haya añadido un link en mi blog a este site jodidamente bueno, de lo contrario hazmelo saber.
    Este sitio es realmente rico para toda la comunidad, gracias por estar ahi y por todo.

    Responder

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies