Quick actions

cmd+k|ctrl+k

Navigation

Languages

ODB

Snippet info

Language

Cpp

Visibility

public

Author

ovidiugabriel

Created

2018-01-08T15:01:01Z

Updated

2018-01-09T15:24:03Z


#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;
}
INFO