#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>
using namespace std;
union Pos {
struct {
double p;
double q;
} pos;
double vect[2];
};
union Book {
struct {
Pos b[10];
Pos s[10];
} ob;
double vect[40];
};
void SetBid(Book& book, double q, double p)
{
book.ob.s[0].pos.p = p;
book.ob.s[0].pos.q = q;
}
void SetAsk(Book& book, double q, double p)
{
book.ob.b[0].pos.p = p;
book.ob.b[0].pos.q = q;
}
// Generates a random number (to emulate the order book)
double randBetween(double low, double high) {
double r = ((double) rand()) / RAND_MAX;
return low + (high - low) * r;
}
double sellY(double x, double prev = 1) {
// "1" is the smallest Y.
return max(prev, x * randBetween(1.0, x));
}
double buyY(double x, double prev = 1) {
// "1" is the smallest Y.
return max(prev, fabs(x * randBetween(1.0, x)));
}
void BuildTable() {
double central = 2;
double spread = 2;
printf("(cel mai mic primul)\n");
double y;
double x = spread/2;
double prev = 1;
for (int i = 0; i < 10; i++, x = max(x, x + randBetween(0.1, 0.5)) ) {
y = sellY(x, prev);
printf("Pr=%f x Q=%f \n", central + x, y);
prev = y;
}
printf("\n");
printf("(cel mai mare primul)\n");
x = - spread/2;
prev = 1;
for (int i = 0; i < 10; i++, x = min(x, x - randBetween(0.1, 0.5)) ) {
y = buyY(x, prev);
printf("Pr=%f x Q=%f \n", central + x, y);
prev = y;
}
}
int main() {
srand(time(NULL));
Book book;
memset(book.vect, 0, sizeof(book.vect));
SetBid(book, 11, 95);
SetAsk(book, 2, 100);
int i;
for (i = 0 ; i < 20; i+=2) {
// printf("%f x %f\n", book.vect[i], book.vect[i+1] );
}
printf("------------------------------------------\n");
for ( ; i < 40; i+=2) {
// printf("%f x %f\n", book.vect[i], book.vect[i+1] );
}
BuildTable();
return 0;
}