Ultimamente sto ritrovando dei miei vecchi pezzi di codice, scritti qualche anno fa. Dopo aver parlato di chimica organica e altri problemi applicati all'ingegneria come le equazioni di Lotka-Volterra e lo studio dell'oscillazione pendolo con attrito, vediamo oggi qualcosa di interessante, fatto nel "tempo libero". Si tratta di un programma in C che ho nominato "Forex Game" ovvero un simulatore di Borsa, molto semplice e senza spese di commissione. È semplice perché le equazioni sono basate su un andamento random (ad ogni istante, al massimo ±10% rispetto al valore precedente), eventualmente non c'è limite all'accuratezza e realismo che si vuole raggiungere, ad esempio mettendo come più probabile la continuità di un trend, ecc. Questo dunque è per rendere l'idea, come schema.
Questo esempio si applica al Forex ovvero il mercato delle valute, nello specifico Euro, Dollaro, Yen. Seguendo questo schema, si può ovviamente aggiungere ogni valuta con il proprio tasso di cambio. La cosa curiosa è che all'epoca i valori erano diversi, non c'era ovviamente l'attuale crisi (sigh!) e l'Euro valeva di più, pazienza 😄
Nell'esempio si parte quindi da 1000 euro e si può scegliere l'operazione (convertire una quota in dollari o yen); questo è ovviamente un esempio semplice, andamento random, come detto, le formule si possono modificare da renderle più accurate. Tuttavia anche in questo caso è sempre possibile adottare una strategia ovvero sapendo il tasso di cambio all'acquisto, se si compie la transazione inversa, in base all'attuale valore sappiamo se conviene (andiamo in guadagno) oppure se non conviene (andiamo in perdita). Può essere utile "giocarc" un pochino, per prendere pratica con il Forex.
Di seguito riportato il codice sorgente:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randomx(int min, int max);
int main(){
srand(time(0));
float USD,EUR,YEN,Cusd,Ceur,Cyen,yo;
char scelta='0';
Ceur=1000;
Cusd=0;
Cyen=0;
EUR=USD*1.08;
YEN=EUR/128.0;
while(1){
printf("Ceur=%f\tCusd=%f\tCyen=%f\n\n",Ceur,Cusd,Cyen);
printf("1)EUR/USD=%.3f\t \t 2)USD/EUR=%.3f\n",EUR/USD,USD/EUR);
printf("3)EUR/YEN=%.3f\t 4)YEN/EUR=%.3f\n",EUR/YEN,YEN/EUR);
printf("5)USD/YEN=%.3f\t 6)YEN/USD=%.3f\n",USD/YEN,YEN/USD);
printf("\ninserire numero operazione:\n");
fflush(stdin);
scanf("%c",&scelta);
if(scelta=='1'||scelta=='2'||scelta=='3'||scelta=='4'||scelta=='5'||scelta=='6'){
/*tutto il blocco di codice*/
printf("inserire importo:\n"); scanf("%f",&yo);
if(scelta=='1'&&Ceur>0&&yo<=Ceur&&yo>0){Ceur-=yo;Cusd+=yo*EUR/USD;}
if(scelta=='2'&&Cusd>0&&yo<=Cusd&&yo>0){Cusd-=yo;Ceur+=yo*USD/EUR;}
if(scelta=='3'&&Ceur>0&&yo<=Ceur&&yo>0){Ceur-=yo;Cyen+=yo*EUR/YEN;}
if(scelta=='4'&&Cyen>0&&yo<=Cyen&&yo>0){Cyen-=yo;Ceur+=yo*YEN/EUR;}
if(scelta=='5'&&Cusd>0&&yo<=Cusd&&yo>0){Cusd-=yo;Cyen+=yo*USD/YEN;}
if(scelta=='6'&&Cyen>0&&yo<=Cyen&&yo>0){Cyen-=yo;Cusd+=yo*YEN/USD;}
}
EUR*=0.01*(100+randomx(-10,10));
YEN*=0.01*(100+randomx(-10,10));
}
return 0;
}
int randomx(int min, int max){
return rand()%(max-min+1)+min;
}
Infine uno screenshot: nel caso in questione, con due operazioni (da euro a dollari e poi da dollari a euro) abbiamo guadagnato virtualmente 88 euro (da 1000 a 1088).