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”

Deja un comentario