-
Notifications
You must be signed in to change notification settings - Fork 0
/
daxcollector
75 lines (50 loc) · 2.37 KB
/
daxcollector
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/*
DaxCollector program getting and saving DAX prices
Written by borre 2015
Open Source - please free to use, share and contribute.
*/
$start_collector = '085900'; // Collector start time (note: Exchange open @ 09:00)
$end_collector = '190000'; // Stop collecting data time (Note Exchange closed for warrants @ 18:45)
$max_waittime = 3600; // time to wait max to start the collector at start time, 3600 equals 1h
$max_runtimes = 86400; // Max limit for data collecting, 86400 equals around 12 hours
$looper = 0;
ini_set('display_errors', 0);
error_reporting(E_NOTICE);
ini_alter('date.timezone','Europe/Helsinki');
$today = date('Y-m-d');
$url = "http://www.finanzen100.de/index/db-dax_H128378787_14207349/";
// Delay collector (start collecting data right on time
for ($x = 0; $x <= $max_waittime; $x++) {
$checktime = date('His', time());
$time = date('H:i:s', time());
if($checktime < $start_collector) { echo "waiting for $start_collector ($time)\n"; sleep(1); }
else { $x = $max_waittime; }
}
if($checktime < $start_collector) { die('Collector waited but not started.'); }
echo "\nCollector started !\n\n";
for ($x = 1; $x < $max_runtimes; $x++) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$data = curl_exec($curl);
// Clean up the white spaces from data for better matching
$data = str_replace(" ", "", $data);
// find rows from data
preg_match_all('#<tr[^>]*>(.*?)</tr>#s', $data, $matches);
// Get Decimals
preg_match_all('/([0-9]+\.[0-9]+)/', $matches[1][1], $matches);
$dax_now = str_replace(".", "", $matches[0][0]);
$now = DateTime::createFromFormat('U.u', microtime(true));
$now = $now->format("Y-m-d H:i:s.u");
$dataStr = "".$x."; ".$now."; ".$dax_now."; \n";
file_put_contents("data/$today-dax.log", $dataStr, FILE_APPEND);
echo "".$checktime.": ".$dax_now." -> saved\n";
$checktime = date('His', time());
if($checktime > $end_collector) { $x = $max_runtimes; echo "Ending collector @ $checktime ($end_collector).\n";}
$looper++;
sleep(1);
}
$time = date('H:i:s', time());
echo "\n".$time." ### Total data collected: ".$looper."\n\n";