ΠΠ°Π½Π½Π°Ρ header-only Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Binary.com WebSocket API v3. https://developers.binary.com/api/.
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ BinaryAPI Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» BinaryAPI.hpp. Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ API, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°ΠΉΠ»Ρ Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ΠΌ Easy.hpp
- BinaryAPI.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±ΡΠΎΠΊΠ΅ΡΠΎΠΌ Binary
- BinaryApiEasy.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π·Π°ΠΏΠΈΡΠΈ, ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ.
- ZstdEasy.hpp ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ zstd Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ.
- CorrelationEasy.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ
- IndicatorsEasy.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
- HistoricalDataEasy.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ
- NormalizationEasy.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
- BinaryOptionsEasy.hpp ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ (ΠΈΠΌΠΈΡΠ°ΡΠΈΡ ΡΠΎΡΠ³ΠΎΠ²Π»ΠΈ)
- WavEasy.hpp ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ Π² Π·Π²ΡΠΊ
- FannEasy.hpp ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ FANN
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΠ΅Π½Ρ Π·Π°ΠΊΡΡΡΠΈΡ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΠΈ ΠΌΠΈΠ½ΡΡΠ½ΡΠ΅ ΡΠ²Π΅ΡΠΈ) Ρ ΡΡΠ΅Ρ Π²Π°Π»ΡΡΠ½ΡΡ ΠΏΠ°Ρ (EURUSD, EURGBP, EURJPY), Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ°:
#include "BinaryAPI.hpp"
int main() {
BinaryAPI iBinaryApi; // ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ BinaryApi
std::vector<std::string> symbols; // ΠΌΠ°ΡΡΠΈΠ² Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
symbols.push_back("frxEURUSD");
symbols.push_back("frxEURGBP");
symbols.push_back("frxEURJPY");
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
std::cout << "init_symbols " << std::endl;
iBinaryApi.init_symbols(symbols);
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ, Π³Π»ΡΠ±ΠΈΠ½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ 60 ΠΌΠΈΠ½ΡΡ
std::cout << "init_stream_quotations " << iBinaryApi.init_stream_quotations(60) << std::endl;
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
std::cout << "init_stream_proposal " << iBinaryApi.init_stream_proposal(10, 3, iBinaryApi.MINUTES, "USD") << std::endl;
// ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²ΡΠ΅ΠΌΡ
unsigned long long servertime_last = 0;
// Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
std::cout << "..." << std::endl;
while(true) {
// Π΄Π»Ρ Π²ΡΠ΅Ρ
Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
std::vector<std::vector<double>> close_data; // ΡΠ΅Π½Ρ Π·Π°ΠΊΡΡΡΠΈΡ
std::vector<std::vector<unsigned long long>> time_data; // Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ²Π΅ΡΠ΅ΠΉ
std::vector<double> buy_data; // ΠΏΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ (ΡΡΠ°Π²ΠΊΠ° Π²Π²Π΅ΡΡ
)
std::vector<double> sell_data; // ΠΏΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ (ΡΡΠ°Π²ΠΊΠ° Π²Π½ΠΈΠ·)
unsigned long long servertime = 0; // Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ°
if(iBinaryApi.get_servertime(servertime) != iBinaryApi.OK) {
// Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ
iBinaryApi.request_servertime(); // ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
std::this_thread::sleep_for(std::chrono::milliseconds(100)); // Π·Π°Π΄Π΅ΡΠΆΠΊΠ°
continue;
} else {
// Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΠΏΡΠΎΡΠ»Π° Π»ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π°
if(servertime > servertime_last) {
// ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΏΡΠΎΡΠ»Π°, ΡΠΎΡ
ΡΠ°Π½ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²ΡΠ΅ΠΌΡ
servertime_last = servertime;
} else {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
// ΡΠ΅ΠΊΡΠ½Π΄Π° Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠΎΡΠ»Π°, Π²Π΅ΡΠ½Π΅ΠΌΡΡ
continue;
}
}
// ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ΄Π°Π»ΠΎΡΡ Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ ΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠ°ΠΌ Π²ΡΠΏΠ»Π°Ρ
if(iBinaryApi.get_stream_quotations(close_data, time_data) == iBinaryApi.OK &&
iBinaryApi.get_stream_proposal(buy_data, sell_data) == iBinaryApi.OK) {
// Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
for(size_t i = 0; i < symbols.size(); ++i) {
std::cout << symbols[i] << " " << buy_data[i] << "/" << sell_data[i] << std::endl;
for(size_t j = time_data[i].size() - 3; j < time_data[i].size(); ++j) {
std::cout << close_data[i][j] << " " << time_data[i][j] << std::endl;
}
std::cout << "size: " << time_data[i].size() << std::endl;
}
}
// Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π² GMT\UTC
std::cout << servertime << std::endl;
std::cout << std::endl;
std::this_thread::yield();
}
}
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° BinaryAPI
#include "BinaryAPI.hpp"
//...
BinaryAPI apiBinary; // ΠΎΡΠΊΡΠΎΠ΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π±Π΅Π· Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
/* ΠΠ°ΡΠΈΠ°Π½Ρ Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
* std::string token = "Π²Π°Ρ ΡΠΎΠΊΠ΅Π½", app_id = "id Π²Π°ΡΠ΅Π³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ"
* BinaryAPI apiBinary(token, app_id);
*/
- ΠΠΊΠ»ΡΡΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ
apiBinary.set_use_log(true);
ΠΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ», ΠΈΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ BINARY_API_LOG_FILE_NAME Π² ΡΠ°ΠΉΠ»Π΅ BinaryAPI.hpp
ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π°:
//------------------------------------------------------------------------------
start of error message (04.12.2018 18:30:02):
{"echo_req":{"end":1544054400,"granularity":60,"start":1544080800,"style":"candles","ticks_history":"frxEURUSD"},"error":{"code":"InvalidStartEnd","message":"Start time 1544080800 must be before end time 1544054400"},"msg_type":"ticks_history"}
end of error message
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
start of error message (04.12.2018 18:30:22):
BinaryApi: Error, error message: ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π±ΡΠ»Π° ΠΏΡΠ΅ΡΠ²Π°Π½Π° ΠΈΠ·-Π·Π° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
end of error message
//------------------------------------------------------------------------------
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²Π°Π»ΡΡΠ½ΡΡ ΠΏΠ°Ρ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ ΠΈΠ»ΠΈ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²Π°Π»ΡΡΠ½ΡΡ ΠΏΠ°Ρ
std::vector<std::string> symbols; // ΠΌΠ°ΡΡΠΈΠ² Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
symbols.push_back("frxEURUSD");
symbols.push_back("frxEURGBP");
symbols.push_back("frxEURJPY");
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
apiBinary.init_symbols(symbols);
- ΠΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
if(!apiBinary.is_proposal_stream()) { // Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½
const double amount = 10.0; // ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ°Π²ΠΊΠΈ,ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΡΠΏΠ»Π°Ρ
const int duration = 3; // Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°
const int duration_uint = BinaryAPI::MINUTES; // Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°, ΠΌΠΈΠ½ΡΡΡ
const std::string currency = "USD"; // Π²Π°Π»ΡΡΠ° ΡΡΠ΅ΡΠ° (ΠΏΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ)
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
int err_data = apiBinary.init_stream_proposal(amount, duration, duration_uint, currency);
if(err_data != apiBinary.OK) { // Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠ»Π°Ρ
// ΡΡΠΎ Π½ΠΈΠ±ΡΠ΄Ρ Π΄Π΅Π»Π°Π΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΅ΡΠ΅ ΡΠ°Π·
}
}
// ...
// ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΏΠΎΡΠΎΠΊΡ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅
/* ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
* Π½ΠΎΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
* ΠΠ° ΡΡΠΎ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ init_symbols
* ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ frxEURUSD ΠΈΠ΄Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, Π·Π½Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΡΠΏΠ»Π°Ρ Π·Π° ΡΡΠ°Π²ΠΊΡ BUY Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ
* ΡΡΡ buy_data[0];
*/
std::vector<double> buy_data;
std::vector<double> sell_data;
if(apiBinary.get_stream_proposal(buy_data, sell_data) == apiBinary.OK) { // Π΅ΡΠ»ΠΈ ΠΌΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ
// ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
for(size_t i = 0; i < symbols.size(); ++i) {
std::cout << symbols[i] << " " << buy_data[i] << "/" << sell_data[i] << std::endl;
}
}
// ΠΠ΄ΡΡΠ³ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ΡΠΌΠ°Π»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ, Π·Π½Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ (ΠΈΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ) ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
apiBinary.stop_stream_proposal();
- ΠΠΎΡΠΎΠΊ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ
const int LAST_TIME = 60; // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΈΠ½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ
ΡΠΆΠ΅ Π±ΡΠ΄ΡΡ "ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅" Π΄Π°Π½Π½ΡΠ΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 60 ΠΌΠΈΠ½ΡΡ
apiBinary.init_stream_quotations(LAST_TIME);
// ΠΡΠ΅ΠΌ ΡΠ°ΠΉ, ΠΈ Π²Π΄ΡΡΠ³
std::vector<std::vector<double>> close_data; // ΡΠ΅Π½Ρ Π·Π°ΠΊΡΡΡΠΈΡ
std::vector<std::vector<unsigned long long>> time_data; // Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ²Π΅ΡΠ΅ΠΉ
// ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ
if(apiBinary.get_stream_quotations(close_data, time_data) == apiBinary.OK) {
/* Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ, Π΄Π΅Π»Π°Π΅ΠΌ Ρ Π½ΠΈΠΌΠΈ ΡΡΠΎ Ρ
ΠΎΡΠΈΠΌ
* Π½ΠΎΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²Π°Π»ΡΡΠ½ΡΡ
ΠΏΠ°Ρ
* Π² close_data[0] Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ Π΄Π»Ρ Π²Π°Π»ΡΡΠ½ΠΎΠΉ ΠΏΠ°ΡΡ frxEURUSD (ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅!)
* ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, close_data[0].back() Π²Π°ΠΌ Π²Π΅ΡΠ½Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅Π½Ρ Π·Π°ΠΊΡΡΡΠΈΡ (ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΊ, Π΅ΡΠ»ΠΈ ΡΠ²Π΅ΡΠ° Π΅ΡΠ΅ Π½Π΅ Π³ΠΎΡΠΎΠ²Π°)
* /
}
// ΠΠ°Π»ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π»ΠΈΠ»ΠΈ ΡΠ°ΠΉ, ΠΏΠΎΡΠ»ΠΈ ΡΡΠΈ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ...
apiBinary.stop_stream_quotations(); // ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ
/* Π½Π΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ ΠΈ Π·Π΄Π΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ is_quotations_stream()
* Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ·Π½Π°ΡΡ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ Π½Π° ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ
*/
- ΠΠΎΡΠΎΠΊ Π±Π°Π»Π°Π½ΡΠ° Π΄Π΅ΠΏΠΎΠ·ΠΈΡΠ°
/* ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΌΡΡ Π½Π° ΠΏΠΎΡΠΎΠΊ Π±Π°Π»Π°Π½ΡΠ° Π΄Π΅ΠΏΠΎΠ·ΠΈΡΠ°
* ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΏΠΎΠ·ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π°ΠΌ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ»ΠΈΠ²Π°Π΅Ρ Π½Π°ΡΠΈ Π±Π°Π±ΠΊΠΈ
* ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
*/
if(apiBinary.init_stream_balance() != apiBinary.OK) {
// ΡΡΡ ΠΌΡ ΠΎΠΊΠ°ΠΆΠ΅ΠΌΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΎΡΠΊΠ°
}
double balance; // ΡΡΡ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ Π±Π°Π»Π°Π½Ρ
if(apiBinary.get_balance(balance) != apiBinary.OK) {
/* ΡΡΡ ΠΌΡ ΠΎΠΊΠ°ΠΆΠ΅ΠΌΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΎΡΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ
* Π°Π²ΡΠΎΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ
*/
}
// Π° Π΅ΡΠ΅ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ get_currency, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ·Π½Π°ΡΡ Π²Π°Π»ΡΡΡ ΡΡΠ΅ΡΠ°
// ΠΎΡΠΏΠΈΡΠ΅ΠΌΡΡ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° Π±Π°Π»Π°Π½ΡΠ°
apiBinary.stop_stream_balance();
- ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ°
unsigned long long server_time;
// ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ°
if(apiBinary.get_servertime(server_time) != apiBinary.OK) {
// ΡΡΡ ΠΌΡ ΠΎΠΊΠ°ΠΆΠ΅ΠΌΡΡ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ°
// ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ Π»ΠΈ ΡΠΎΠ³Π΄Π° ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°
apiBinary.request_servertime();
}
//...
- ΠΡΠΊΡΡΡΠΈΠ΅ ΠΎΡΠ΄Π΅ΡΠ° BUY ΠΈΠ»ΠΈ SELL
double amount = 1000.0; // ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ 1000 USD, ΡΠΆ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅ ΠΆΠ°Π΄Π½ΡΠΉ!
int duration = 3; // ΠΎΠΏΡΠΈΠΎΠ½ Π½Π° ΠΏΡΠΈ ΠΌΠΈΠ½ΡΡΡ!
// ΠΎΡΠΊΡΠΎΠ΅ΠΌ ΠΎΡΠ΄Π΅Ρ BUY!
apiBinary.send_order("frxEURUSD", amount, apiBinary.BUY, duration, apiBinary.MINUTES);
// ΠΎΡΠΊΡΠΎΠ΅ΠΌ ΠΎΡΠ΄Π΅Ρ SELL! Π£ Π½Π°Ρ ΠΆΠ΅ Π²ΠΈΠ»ΠΊΠ°!
apiBinary.send_order("frxEURUSD", amount, apiBinary.SELL, duration, apiBinary.MINUTES);
// Π΄Π°Π»ΡΡΠ΅ ΠΆΠ΄Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ»ΡΠ΅ΡΡΡ Π΄Π΅ΠΏΠΎΠ·ΠΈΡ
- ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ
// Π½Π°ΠΉΠ΄Π΅ΠΌ timestamp Π΄Π°ΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π½Π°ΡΠ°ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΡΡΠΎΡΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠΈΠ½ΡΡΠ½ΡΡ
Π±Π°ΡΠΎΠ²/ΡΠ²Π΅ΡΠ΅ΠΉ
unsigned long long t1 = xtime::get_unix_timestamp(5,11,2018,0,0,0);
unsigned long long t2 = t1 + xtime::SEC_DAY * 30; // Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π·Π° 30 Π΄Π½Π΅ΠΉ!
std::vector<double> candles_close;
std::vector<unsigned long long> candles_times;
// Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· Π»ΠΈΠΌΠΈΡΠΎΠ²
int err = apiBinary.get_candles_without_limits("frxEURUSD", candles_close, candles_times, t1 + 30, t2);
/* Π΅ΡΠ»ΠΈ err == 0, Π·Π½Π°ΡΠΈΡ Π²ΡΠ΅ Ρ
ΠΎΡΠΎΡΠΎ
* Π²Π΅ΠΊΡΠΎΡ candles_close ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π½Ρ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠ²Π΅ΡΠ΅ΠΉ
* Π° Π²Π΅ΠΊΡΠΎΡ candles_times - Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ²Π΅ΡΠ΅ΠΉ
* ΡΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ?!
*/
std::vector<double> prices;
std::vector<unsigned long long> times;
// Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΈΠΊΠΎΠ²
apiBinary.get_ticks_without_limits("frxEURUSD", prices, times, t1, t2)
// ...
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ
// Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ API
enum ErrorType {
OK = 0, // ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ ΡΠ΄Π°ΡΠ½ΠΎ
NO_AUTHORIZATION = -1, // Π½Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
NO_COMMAND = -2, // Π½Π΅ Π±ΡΠ»ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°
UNKNOWN_ERROR = -3, // Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°
NO_INIT = -4, // Π½Π΅ Π±ΡΠ»ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°
NO_OPEN_CONNECTION = -5, // Π½Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ
INVALID_PARAMETER = -6, // ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΊΠ°Π·Π°Π»ΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎ
DATA_NOT_AVAILABLE = -7, // Π½Π΅Ρ Π΄Π°Π½Π½ΡΡ
, Π½Π°Π΄ΠΎ ΠΆΡ...
};
- ΠΠ°Π³ΡΡΠ·ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΠ°ΡΡ Π΄Π½Π΅ΠΉ
#include "BinaryApiEasy.hpp"
//...
BinaryAPI iBinaryApi; // ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ BinaryApi
std::string symbol = "frxEURUSD";
unsigned long long timestamp = 12345678910; // Π΄Π΅Π½Ρ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠ½Π΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ°
std::vector<std::vector<double>> prices; // ΡΠ΅Π½Ρ (Π·Π° N Π΄Π½Π΅ΠΉ)
std::vector<std::vector<unsigned long long>> times; // Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ (Π·Π° N Π΄Π½Π΅ΠΉ)
int num_days = 5; // ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π΄Π½Π΅ΠΉ
bool is_skip_day_off = true; // ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π½ΠΈ
int type = BinaryApiEasy::QUOTES_BARS;
/* ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π° Π΄Π΅Π½Ρ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ N Π΄Π½Π΅ΠΉ
* ΠΠ°ΠΆΠ½ΠΎ: ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ Π΄Π΅Π½Ρ Π½Π΅ ΡΡΠ°Π²ΡΡΠ²ΡΠ΅Ρ Π² Π·Π°Π³ΡΡΠ·ΠΊΠ΅! ΠΡΠΎ Π·Π½Π°ΡΠΈΡ,
* Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°Ρ Π΄Π°Π½Π½ΡΠ΅ 5 ΡΠΈΡΠ»Π° Π² 12 ΡΠ°ΡΠΎΠ² Π΄Π½Ρ ΠΏΠΎ GMT Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 3 Π΄Π½Ρ,
* Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΈΡ 4, 3, 2 Π΄Π½ΠΈ ΠΌΠ΅ΡΡΡΠ°. ΠΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ ΠΈΠ· 5-Π³ΠΎ ΡΠΈΡΠ»Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² Π΄Π°Π½Π½ΡΡ
Π½Π΅ Π±ΡΠ΄Π΅Ρ!
*/
int err = BinaryApiEasy::download_last_few_days(iBinaryApi, symbol, timestamp, prices, times, num_days, is_skip_day_off, type);
if(err == BinaryApiEasy:OK) {
// Π·Π°Π³ΡΡΠ·ΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ ΡΠ΄Π°ΡΠ½ΠΎ
}
- ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ· Π΄Π°ΡΡ
unsigned long long timestamp = 12345678910;
/* ΠΡΠ±ΡΠ°Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΠΠ ΠΠΠ‘Π―Π¦ ΠΠΠΠ¬ ΡΡΠΎΠ±Ρ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ
* Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅
* file_name Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π±Π΅Π· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ!
*/
std::string file_name = BinaryApiEasy::get_file_name_from_date(timestamp);
- ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ
std::vector<double> prices;
std::vector<unsigned long long> times;
// ΠΠ°ΠΏΠΎΠ»Π½ΠΈΠΌ prices ΠΈ times ...
std::string file_name = "2015_6_6.hex";
// ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ
int err = BinaryApiEasy::write_binary_quotes_file(file_name, prices, times);
- Π§ΠΈΡΠ°ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ
std::vector<double> prices;
std::vector<unsigned long long> times;
std::string file_name = "2015_6_6.hex";
// Π§ΠΈΡΠ°ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ
int err = BinaryApiEasy::read_binary_quotes_file(file_name, prices, times);
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΠΈ ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΠΈ
#include "ZstdEasy.hpp"
//...
std::string path = "..//..//train"; // ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
std::string dictionary_file = "quotes_ticks.zstd"; // ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΠ»ΠΎΠ²Π°ΡΡ
size_t dictionary_size = 100 * 1024; // ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ
/* ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΌΠΏΠ»ΠΎΠ² (ΡΠ°ΡΠ»ΠΎΠ²) Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 1000 ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅
* ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°Π·ΡΠΌΠ½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ~ 100 ΠΠ.
* Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΡ ΠΎΠ±ΡΠ°Π·ΡΠΎΠ², Ρ
ΠΎΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ
* Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΅Ρ
Π²ΡΠ±ΠΎΡΠΎΠΊ Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² x100 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ»ΠΎΠ²Π°ΡΡ
*/
// Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅
int err = ZstdEasy::train_zstd(path, dictionary_file, 1024 * 1024);
std::cout << "stop train " << err << std::endl;
- ΠΠΎΠΌΠΏΡΠ΅ΡΡΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²
std::string file_name = "..//..//train//frxEURGBP//2015_12_14.hex"; // ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π΄ΠΎ ΡΠΆΠ°ΡΡ
std::string compress_file_name = "compress_2015_12_14.hex"; // ΠΈΠΌΡ ΡΠΆΠ°ΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°
std::string dictionary_file = "quotes_ticks.zstd"; // ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΠ»ΠΎΠ²Π°ΡΡ
// ΡΠΆΠΈΠΌΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» file_name, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» compress_file_name
ZstdEasy::compress_file(file_name, compress_file_name, dictionary_file);
std::string decompress_file_name = "decompress_2015_12_14.hex"; // ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΠΈ
// Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° compress_file_name, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ ΡΠ°ΠΉΠ» decompress_file_name
ZstdEasy::decompress_file(compress_file_name, decompress_file_name, dictionary_file);
- Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠΆΠ°ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
std::vector<double> prices;
std::vector<unsigned long long> times;
// Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ prices ΠΈ times Π΄Π°Π½Π½ΡΠΌΠΈ
//...
std::string dictionary_file = "quotes_ticks.zstd"; // ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΡΠ»ΠΎΠ²Π°ΡΡ
// Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΆΠ°ΡΡΠΉ ΡΠ°ΠΉΠ»
ZstdEasy::write_binary_quotes_compressed_file("compress.zstd", dictionary_file, prices, times);
// ΠΏΡΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΠΆΠ°ΡΡΠΉ ΡΠ°ΠΉΠ»
ZstdEasy::read_binary_quotes_compress_file("compress.zstd", dictionary_file, prices, times);
std::cout << prices.back() << " " << times.back() << std::endl;
/* ΠΡΠ΅ Π΅ΡΡΡ read_compressed_file ΠΈ write_compressed_file, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΡΠΈΡΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
*/
- Π‘ΠΊΠ°ΡΠ°ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ
/** \brief Π‘ΠΊΠ°ΡΠ°ΡΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΡΠ½Π΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ
* \param api ΠΠ»Π°ΡΡ BinaryAPI
* \param symbol Π²Π°Π»ΡΡΠ½Π°Ρ ΠΏΠ°ΡΠ°
* \param path Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΡΠ΄Π° ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅
* \param dictionary_file ΡΠ°ΠΉΠ» ΡΠ»ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΠΈ
* \param timestamp Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
* \param is_skip_day_off ΡΠ»Π°Π³ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π½Π΅ΠΉ, true Π΅ΡΠ»ΠΈ Π½Π°Π΄ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅
* \param type ΡΠΈΠΏ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
, QUOTES_BARS - ΠΌΠΈΠ½ΡΡΠ½ΡΠ΅ Π±Π°ΡΡ, QUOTES_TICKS - ΡΠΈΠΊΠΈ (ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ 1 ΡΠ΅ΠΊΡΠ½Π΄Π°)
* \param user_function - ΡΡΠ½ΠΊΡΠΎΡ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ NULL, Π΅ΡΠ»ΠΈ Π½Π΅ Π½ΡΠΆΠ΅Π½)
*/
int download_and_save_all_data_with_compression(
BinaryAPI &api,
std::string symbol,
std::string path,
std::string dictionary_file,
unsigned long long timestamp,
bool is_skip_day_off = true,
int type = QUOTES_BARS,
void (*user_function)(std::string,
std::vector<double> &,
std::vector<unsigned long long> &,
unsigned long long) = NULL);
Π Π°ΡΡ ΠΈΠ²Π΅ bin.7z ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° binary_recorder.exe Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΊΠΎΠ² ΠΈ ΠΌΠΈΠ½ΡΡΠ½ΡΡ Π±Π°ΡΠΎΠ² Π·Π° ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ Π΄Π΅Π½Ρ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° binary_proposal_recorder.exe, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΏΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ Ρ Π²Π°Π»ΡΡΠ½ΡΡ ΠΏΠ°Ρ (WLDAUD...WLDUSD, AUDCAD, AUDCHF, AUDJPY, AUDNZD, AUDUSD, EURAUD, EURCAD, EURCHF, EURGBP, EURJPY, EURNZD, EURUSD, GBPAUD, GBPCAD, GBPCHF, GBPJPY) ΠΡΠΎΡΠ΅Π½ΡΡ Π²ΡΠΏΠ»Π°Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΄Π΅Π»ΠΎΠΊ PUT ΠΈ CALL Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠΊΡΠΏΠΈΡΠ°ΡΠΈΠΈ 3 ΠΌΠΈΠ½ΡΡΡ. ΠΠ»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π²ΠΊΠ° 10 USD. ΠΠ°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π΄Π°ΡΠ΅ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· Π΄Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ proposal_29_11_2018.hex). ΠΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΌΠΏΠ»Π° ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ 8 Π±Π°ΠΉΡ timestamp Π² ΠΊΠΎΠ½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Binary (GMT). ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΡΠΌΠΏΠ»ΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ΅ΠΊΡΠ½Π΄ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π½Ρ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° simply_upload_history.exe Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΎΠΊ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² JSON ΡΠ°ΠΉΠ»Π΅ settings.json. ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:
{
"disk": "D", // Π΄ΠΈΡΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
"path": "_repoz//binary_historical_data", // ΠΏΠ°ΠΏΠΊΠ° (ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ git), Π³Π΄Π΅ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅
"amount": 10.0, // ΡΡΠ°Π²ΠΊΠ° Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
"duration": 3, // Π²ΡΠ΅ΠΌΡ ΡΠΊΡΠΏΠΈΡΠ°ΡΠΈΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°
"duration_uint": 2, // Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (2 - ΠΌΠΈΠ½ΡΡΡ)
"currency": "USD", // Π²Π°Π»ΡΡΠ° ΡΡΠ΅ΡΠ°
"folder": "proposal_data", // ΠΏΠ°ΠΏΠΊΠ°, Π³Π΄Π΅ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠ»Π°Ρ
"git": 1 // ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ git Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
}
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠ°ΠΌ Π²ΡΠΏΠ»Π°Ρ Π±ΡΠ΄ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ https://github.com/NewYaroslav/binary_historical_data.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° martingale_does_not_work.exe ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΌΠ°Π½ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΡΠΈΠΉΡΠΈ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ½Π³Π΅ΠΉΠ» Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
binary-cpp-api Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ / ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
- Simple-WebSocket-Server (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ BinaryApi) - https://gitlab.com/eidheim/Simple-WebSocket-Server
- Boost.Asio ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ Asio (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ BinaryApi) - http://think-async.com/Asio
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° OpenSSL (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ BinaryApi) - http://slproweb.com/products/Win32OpenSSL.html
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° JSON (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ BinaryApi) - https://github.com/nlohmann/json
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° zstd (Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΆΠ°ΡΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ) - https://github.com/facebook/zstd
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° xtime (Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ BinaryApi ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ) - https://github.com/NewYaroslav/xtime_cpp.git
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° banana-filesystem-cpp (Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ) - https://github.com/NewYaroslav/banana-filesystem-cpp
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° imgui (Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ martingale_does_not_work) - https://github.com/ocornut/imgui
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° imgui-sfml (Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ martingale_does_not_work) - https://github.com/eliasdaler/imgui-sfml
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° SFML (Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ martingale_does_not_work) - https://www.sfml-dev.org/
- gcc ΠΈΠ»ΠΈ mingw Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ C++11, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ - https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z/download
ΠΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ, ΠΊΠ°ΠΊ ΡΡΠ±ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π² ΠΏΠ°ΠΏΠΊΡ lib.
ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡ Π΅ΠΌΡ JSON ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ - https://github.com/binary-com/websockets/tree/gh-pages/config/v3
Π‘Π°ΠΉΡ Π±ΡΠΎΠΊΠ΅ΡΠ° - https://www.binary.com/