25 mar 2021

Programa para cryptos con irb

#https://replit.com/languages/ruby

require 'colorize' #gem install colorize

=begin

https://ruby.obdnet.com/2021/03/pasar-de-rb-exe-con-ocra.html

Para hacer el exe, desde el mismo directorio desde el que esté el rb, pon esto en el cmd de windows:

ocra crypto.rb --console --dll ruby_builtin_dlls\libssp-0.dll --dll ruby_builtin_dlls\libgmp-10.dll --dll ruby_builtin_dlls\libgcc_s_seh-1.dll --dll ruby_builtin_dlls\libwinpthread-1.dll

=end


def pregunta_final

puts

  puts "                ***************************************************************************"

  puts " ¿ Quieres salir (S), volver al menú (M), Ver márgenes (V) o Fibonacci (F)?"

  puts "                ***************************************************************************"

  pf = gets.chomp

  pf = pf.upcase

case pf

  when "S"

  system('cls')

  puts

  puts

  puts

  puts "* Has contestado SALIR."

  puts " Adiós"

  when "M"

  system ('cls')

  pregunta_inicial

  when "V"

  system('cls')

  margenes

  when "F"

  system('cls')

  fibo

end

end


def fibo

  fibo_alza = [0, 23.6, 38.2, 50, 61.8, 76.4, 100, 138.2]

  fibo_baja = [138.2, 100, 76.4, 61.8, 50, 38.2, 23.6, 0]

  puts

  puts

  

  puts " Sobre qué valor quieres hacer la previsión"

  v = gets.to_f

  puts " *********************************************** AL ALZA *********"

  fibo_alza.each do |f|

  x = (v*f)/100


case f

  when 61.8

  puts " Sobre el punto #{f} % sale un valor de #{"%.2f" % (x+v)} <<==".red

  when 50, 76.4

  puts " Sobre el punto #{f} % sale un valor de #{"%.2f" % (x-v)} <<==".yellow

  else

  puts " Sobre el punto #{f} % sale un valor de #{"%.2f" % (x+v)}".blue

  end

  end

  puts " *****************************************************************"

  puts

  puts " ************************************************ A LA BAJA ******"

  fibo_baja.each do |ff|

  xx = (v*ff)/100

case ff

  when 38.2

  puts " Sobre el punto #{ff} % sale un valor de #{"%.2f" % (xx-v)} <<==".red

  when 50, 23.6

  puts " Sobre el punto #{ff} % sale un valor de #{"%.2f" % (xx-v)} <<==".yellow  

  else

  puts " Sobre el punto #{ff} % sale un valor de #{"%.2f" % (xx-v)}".blue

  end

 end 

  puts " *****************************************************************"


pregunta_final

end




def margenes

puts

  puts

  puts

  unless defined? $pc

  puts "¿ Qué precio inicial de COMPRA pones ?"

  $pc = gets.to_f

  else  

  puts " El precio inicial de COMPRA tengo #{$pc}".blue

  end

  

  unless defined? $pv

  puts "¿ Qué precio inicial de VENTA pones ?"

  $pv = gets.to_f

  else  

  puts " El precio inicial de VENTA tengo #{$pv}".blue

  end

  puts

  puts

 

  puts

  $incremento = ($pv - $pc)

#  puts "Esto es $incremento: #{$incremento} = #{$pv - $pc}"

  $porcentaje =(100*$incremento)/$pc

#  puts "Esto es $porcentaje: #{$porcentaje}" 

case

when $pc < $pv

puts " Hay ganancia de #{"%.2f" % ($incremento)}"

puts " Hay un incremento de #{"%.4f"% ($porcentaje)} %"

puts

fibo

when $pc > $pv

puts " Hay pérdida de #{"%.2f" % ($incremento)}"    

puts " Hay un decremento de #{"%.4f"% ($porcentaje)} %"

puts

fibo

when $pc = $pv

puts " No Hay pérdida ni beneficio #{"%.2f" % ($incremento)}"    

puts " Hay un de #{"%.4f"% ($porcentaje)} %"

puts

else

pregunta_inicial

end


pregunta_final

end



def precios


  puts " Estamos en precios."

  puts

  puts " Precio inicial de compra".blue

  $pc = gets.to_f

  puts

  puts

  puts " Precio final de venta".yellow

  $pv = gets.to_f

  puts

  $incremento = ($pv - $pc)

  $porcentaje =(100*$incremento)/$pc

 

  case 

  when $pc < $pv

puts " Hay ganancia de #{"%.2f" % ($incremento)}"

puts " Hay un incremento de #{"%.4f"% ($porcentaje)} %"

puts

when $pc > $pv

puts " Hay pérdida de #{"%.2f" % ($incremento)}"    

puts " Hay un decremento de #{"%.4f"% ($porcentaje)} %"

puts

when $pc = $pv

puts " No Hay pérdida ni beneficio #{"%.2f" % ($incremento)}"    

puts " Hay un #{"%.4f"% ($porcentaje)} %"

puts

end


pregunta_final

end



def calcular_ganancia

puts

puts " Estamos en Calcular ganancias"

puts

puts

unless defined? $pc

  puts " ¿ Cuál es el precio de partida o compra ?"

  puts

  $pc = gets.to_f

puts " ¿ Qué ganancias en % quisieras tener ?"  

  $ganancias = gets.to_f 

  else

  puts " ¿ Qué ganancias en % quisieras tener ? sobre el precio de #{$pc} ya introducido?"

  $ganancias = gets.to_f      

end   

  precio_esperado = ($pc*$ganancias)/100

  puts " Para tener esas ganancias de #{$ganancias} % deberías esperar"

  puts " a que el precio llegue a #{precio_esperado+$pc}"

  puts


pregunta_final

end



def pregunta_inicial

puts

pregunta1 = "                               ¿ Qué quieres hacer ?          "


puts "                        ****************************************"

#pregunta1.size.times {print "*"}

puts

puts pregunta1

#40.times {print "*"}

puts

puts "                        *********************************************"

puts " *                                           *"

puts " *     MENU PRINCIPAL                        *"

puts " *     ==============                        *"

puts " *                                           *"

puts " *     1.- Ver ganancia y/o pérdida real.    *"

puts " *     2.- Calcular mi ganancia futura.      *"

puts " *     3.- Ver márgenes de Fibonacci.        *"

puts " *                                           *"

puts " *     4.- Salir.                            *"

puts " *                                           *"

puts "                        *********************************************"

puts

puts

puts " *".yellow

puts " *".yellow

puts "***".yellow

puts " *".yellow

hacer = gets.chomp.to_i


case hacer

when 1

system('cls')

precios


when 2

system('cls')

calcular_ganancia


when 3

system('cls')

fibo


when 4

system('cls')

  puts

  puts

  puts

  puts " * Quieres terminar."

  puts "      Adiós"

else

system('cls')

end

end

pregunta_inicial


ejercicio TK -1

 #!/usr/bin/ruby #https://sandbox.mc.edu/~bennet/ruby/code/tk2_rb.html # Import the library. require 'tk' # Root window. root = TkRo...