← Kembali ke artikel
May 19, 2025
Bacaan 5 minit

Membangunkan Scalper C++ Mudah Menggunakan FAST/FIX: Panduan Langkah demi Langkah

Membangunkan Scalper C++ Mudah Menggunakan FAST/FIX: Panduan Langkah demi Langkah
#C++
#perdagangan algoritmik
#scalping
#FIX
#FAST
#bot
#kewangan

Bot Scalper C++ Seni Bina Perdagangan Frekuensi Tinggi: Visualisasi bot algoritmik C++ yang memproses aliran data rangkaian FIX/FAST berkelajuan tinggi.

Halo, rakan-rakan! Hari ini, saya akan tunjukkan cara membina bot scalper perdagangan pertama anda dalam C++ menggunakan protokol FAST/FIX. Ramai yang percaya bahawa perdagangan algoritmik adalah sesuatu yang sangat kompleks, hanya boleh diakses oleh pengaturcara elit yang berpengalaman dalam dana lindung nilai. Tetapi mari kita jujur: anda boleh bermula dengan skala kecil, terutamanya jika anda sudah mempunyai akses ke bursa melalui FAST/FIX.

Apa Yang Kita Perlukan?

Sebelum kita menyelami kod, mari kita sediakan peralatan kita:

  • Pengkompil C++ (GCC, Clang, atau MSVC)
  • Perpustakaan untuk bekerja dengan FIX/FAST (contohnya, OnixS C++ FIX Engine)
  • IDE yang mudah digunakan (Visual Studio, CLion, atau kegemaran anda)
  • Secawan kopi pekat (pilihan, tetapi sangat disyorkan)

Memahami Protokol FIX/FAST

Jika anda sudah mempunyai akses ke bursa melalui FAST/FIX, anda mungkin sudah tahu bahawa:

FIX (Financial Information eXchange) adalah protokol standard untuk pertukaran maklumat kewangan. Bayangkan telegram seperti "BUY BTCUSD QTY=1 PRICE=50000", tetapi dalam format yang lebih formal.

FAST (FIX Adapted for Streaming) adalah "versi turbo" FIX, dioptimumkan untuk pemindahan data berkelajuan tinggi. Jika FIX adalah mel biasa, FAST adalah mel pneumatik berkuasa steroid.

Seni bina lima modul scalper frekuensi tinggi

Seni Bina Scalper Kita

Mana-mana scalper yang dihormati harus mempunyai komponen berikut:

  1. Modul sambungan bursa – jambatan kita ke dunia wang besar
  2. Modul pemprosesan data pasaran – "mata dan telinga" kita
  3. Modul membuat keputusan – "otak" kita
  4. Modul pengurusan pesanan – "tangan" kita
  5. Modul pengurusan risiko – "naluri mempertahankan diri" kita

Mari kita lakarkan kerangka bot masa depan kita:

#include <iostream>
#include <string>
#include <onixs/fix/engine.h>   // Presumed library for FIX

class SimpleScalper {
private:
    // Connection parameters
    std::string senderCompID;
    std::string targetCompID;
    std::string fixVersion;
    
    // Trading parameters
    double stopLossPercentage = 0.05;  // 5% stop-loss
    double profitTargetPercentage = 0.1;  // 10% profit target
    double tradeAmount = 0.1;  // Position size
    
    // Trading state
    bool inPosition = false;
    double entryPrice = 0.0;
    
    // FIX connection
    onixs::fix::Session* session;

public:
    SimpleScalper(const std::string& sender, const std::string& target, const std::string& version) 
        : senderCompID(sender), targetCompID(target), fixVersion(version) {
        // Initialize FIX connection
        initializeFixConnection();
    }
    
    // Other methods...
};

Menyambung ke Bursa

Pertama, kita perlu mewujudkan sambungan ke bursa. Ini seperti jabat tangan pertama – penting untuk tidak tersalah:

void SimpleScalper::initializeFixConnection() {
    // Create session configuration
    onixs::fix::SessionConfig config;
    config.setSenderCompID(senderCompID);
    config.setTargetCompID(targetCompID);
    config.setFixVersion(fixVersion);
    
    // Set connection parameters
    config.setHost("exchange.hostname.com");
    config.setPort(9823);  // Exchange FIX port
    
    // Create and initialize session
    session = new onixs::fix::Session(config);
    
    // Register event handlers
    session->setMessageHandler(std::bind(&SimpleScalper::onMessage, this, std::placeholders::_1));
    
    // Establish connection
    if (!session->connect()) {
        std::cerr << "Failed to connect to the exchange!" << std::endl;
    } else {
        std::cout << "Connection established!" << std::endl;
    }
}

Pemprosesan Data Pasaran dan Membuat Keputusan

Untuk kesederhanaan, mari kita laksanakan penunjuk RSI dan logik masuk/keluar asas:

double calculateRSI(const std::vector<double>& prices, int period = 14) {
    if (prices.size() < period + 1) return 50.0;
    double sumGain = 0.0, sumLoss = 0.0;
    for (size_t i = prices.size() - period; i < prices.size() - 1; ++i) {
        double change = prices[i + 1] - prices[i];
        if (change > 0) sumGain += change;
        else sumLoss -= change;
    }
    if (sumLoss == 0) return 100.0;
    double rs = sumGain / sumLoss;
    return 100.0 - (100.0 / (1.0 + rs));
}

Urutan kitaran hayat pesanan protokol FIX

Menghantar Pesanan ke Bursa

Apabila strategi kita berkata "beli" atau "jual", kita perlu menghantar pesanan yang sepadan ke bursa. Ini seperti membuat pesanan di restoran – anda perlu tepat:

void SimpleScalper::sendBuyOrder(double amount, double price) {
    std::cout << "Sending BUY order: " << amount << " @ " << price << std::endl;
    // Here we form and send a FIX NewOrderSingle
    // ...
}

Menangani Respons Bursa

void SimpleScalper::onMessage(const onixs::fix::Message& message) {
    std::string msgType = message.getField(onixs::fix::Tag::MsgType);
    if (msgType == "8") {  // ExecutionReport
        // Handle execution report
    } else if (msgType == "W") {  // MarketDataSnapshotFullRefresh
        // Handle market data
    } else if (msgType == "3") {  // Reject
        std::string reason = message.getField(onixs::fix::Tag::Text);
        std::cout << "Order rejected: " << reason << std::endl;
    }
}

Pengujian dan Penyahpepijatan

Sebelum menjalankan bot kita dengan wang sebenar, mari kita uji pada data sejarah atau dalam mod simulasi. Ini seperti juruterbang yang berlatih pada simulator sebelum penerbangan sebenar:

void testScalperOnHistoricalData() {
    SimpleScalper scalper("TESTER", "EXCHANGE", "FIX.4.4");
    std::vector<double> historicalPrices = loadHistoricalData("BTCUSD_1min_2023.csv");
    for (const auto& price : historicalPrices) {
        // emulate market data
        // scalper.processMarketData(...);
    }
    // scalper.printPerformanceStats();
}

Kesimpulan

Itulah dia! Kita telah membina scalper C++ yang mudah tetapi berfungsi menggunakan protokol FAST/FIX. Sudah tentu, ini hanyalah permulaan. Sistem HFT sebenar jauh lebih kompleks dan dioptimumkan, tetapi bahkan bot yang begitu mudah ini boleh berguna untuk pedagang algoritmik pemula.

Ingat, berdagang di pasaran kewangan melibatkan risiko, dan perdagangan algoritmik menambah risiko teknikal di atasnya. Sentiasa uji strategi anda pada data sejarah dan dalam mod simulasi sebelum memulakan secara langsung.

Dan yang paling penting – teruskan belajar dan memperbaiki bot anda. Pasaran berubah, dan algoritma anda mesti menyesuaikan diri bersamanya.

Selamat berdagang, dan semoga scalper anda sentiasa menguntungkan!

Rujukan

@software{soloviov2024scalpercppfastfix,
  author = {Soloviov, Eugen},
  title = {Developing a Simple C++ Scalper Using FAST/FIX: Step-by-Step Guide},
  year = {2025},
  url = {https://marketmaker.cc/ms/blog/post/scalper-cpp-fast-fix},
  version = {0.1.0},
  description = {Panduan langkah demi langkah untuk membina bot scalper perdagangan C++ menggunakan protokol FAST/FIX.}
}
Penafian: Maklumat yang disediakan dalam artikel ini adalah untuk tujuan pendidikan dan maklumat sahaja dan bukan merupakan nasihat kewangan, pelaburan, atau dagangan. Dagangan mata wang kripto melibatkan risiko kerugian yang ketara.

Pengarang

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Kekal Mendahului Pasaran

Langgan surat berita kami untuk pandangan dagangan AI eksklusif, analisis pasaran, dan kemas kini platform.

Kami menghormati privasi anda. Berhenti melanggan pada bila-bila masa.