Subversion Repositories Integrator Subversion

Rev

Rev 795 | Rev 797 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 795 Rev 796
Line 2... Line 2...
2
2
3
import java.io.BufferedWriter;
3
import java.io.BufferedWriter;
4
import java.io.IOException;
-
 
5
import java.nio.file.Files;
4
import java.nio.file.Files;
6
import java.nio.file.Path;
5
import java.nio.file.Path;
-
 
6
import java.time.Instant;
-
 
7
import java.time.ZoneId;
-
 
8
import java.time.ZonedDateTime;
-
 
9
import java.time.format.DateTimeFormatter;
7
import java.util.List;
10
import java.util.List;
8
import java.util.concurrent.CompletableFuture;
11
import java.util.concurrent.CompletableFuture;
9
import java.util.concurrent.TimeUnit;
12
import java.util.concurrent.TimeUnit;
10
13
11
import com.ib.client.Bar;
14
import com.ib.client.Bar;
Line 15... Line 18...
15
import br.com.kronus.ibkr.api.IbkrClient;
18
import br.com.kronus.ibkr.api.IbkrClient;
16
19
17
public class IbkrHistoricalDataService {
20
public class IbkrHistoricalDataService {
18
21
19
    private final IbkrClient ibkr;
22
    private final IbkrClient ibkr;
-
 
23
   
-
 
24
    private static final DateTimeFormatter DATA = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
 
25
    private static final DateTimeFormatter HORA = DateTimeFormatter.ofPattern("HH:mm:ss");
20
26
21
    public IbkrHistoricalDataService(IbkrClient ibkr) {
27
    public IbkrHistoricalDataService(IbkrClient ibkr) {
22
        this.ibkr = ibkr;
28
        this.ibkr = ibkr;
23
    }
29
    }
24
30
Line 66... Line 72...
66
                    false,
72
                    false,
67
                    (List<TagValue>) null
73
                    (List<TagValue>) null
68
            );
74
            );
69
75
70
            List<Bar> bars = fut.get(60, TimeUnit.SECONDS);
76
            List<Bar> bars = fut.get(60, TimeUnit.SECONDS);
-
 
77
-
 
78
            ZoneId zoneId = ZoneId.of("America/Maceio");
-
 
79
            DateTimeFormatter FMT_DATA = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
 
80
            DateTimeFormatter FMT_HORA = DateTimeFormatter.ofPattern("HH:mm:ss");
71
81
72
            for (Bar b : bars) {
82
            for (Bar b : bars) {
73
                String timeStr = b.time(); // ex: 20250125 10:05:00
-
 
74
                String dataStr = timeStr.substring(0, 8);
-
 
75
                String horaStr = timeStr.substring(9);
-
 
-
 
83
       
-
 
84
                long time = new Long(b.time()); // agora vem algo como 1764688966523
76
85
77
                String yyyy = dataStr.substring(0, 4);
-
 
78
                String mm   = dataStr.substring(4, 6);
-
 
79
                String dd   = dataStr.substring(6, 8);
-
 
80
                String dataFormatada = yyyy + "-" + mm + "-" + dd;
-
 
-
 
86
                // Detecta se é segundos (10 dígitos) ou milissegundos (13 dígitos)
-
 
87
                Instant inst;
-
 
88
                if (time > 9999999999L) {
-
 
89
                    inst = Instant.ofEpochMilli(time);   // 13 dígitos = millis
-
 
90
                } else {
-
 
91
                    inst = Instant.ofEpochSecond(time);   // 10 dígitos = seconds
-
 
92
                }
-
 
93
-
 
94
                ZoneId zdt = ZoneId.of("America/Maceio");
-
 
95
                String dataStr = DATA.format(inst.atZone(zoneId));
-
 
96
                String horaStr = HORA.format(inst.atZone(zoneId));
81
97
82
                String linha = String.join(";",
98
                String linha = String.join(";",
83
                        dataFormatada,
-
 
-
 
99
                                dataStr,
84
                        horaStr,
100
                        horaStr,
85
                        String.valueOf(b.open()),
101
                        String.valueOf(b.open()),
86
                        String.valueOf(b.high()),
102
                        String.valueOf(b.high()),
87
                        String.valueOf(b.low()),
103
                        String.valueOf(b.low()),
88
                        String.valueOf(b.close()),
104
                        String.valueOf(b.close()),
89
                        String.valueOf(b.volume()),
105
                        String.valueOf(b.volume()),
90
                        String.valueOf(b.wap()),
106
                        String.valueOf(b.wap()),
91
                        String.valueOf(b.count())
107
                        String.valueOf(b.count())
92
                );
108
                );
-
 
109
93
                writer.write(linha);
110
                writer.write(linha);
94
                writer.newLine();
111
                writer.newLine();
95
            }
112
            }
-
 
113
96
            writer.flush();
114
            writer.flush();
97
        }
115
        }
98
    }
116
    }
-
 
117
99
}
118
}