Penganalisis dan Penguatkuasaan Komoditi Futures Jadual Jejak Volume

Penulis:Kebaikan, Dicipta: 2020-07-03 11:06:48, Dikemas kini: 2023-10-28 15:30:11

img

Ringkasan

Carta jejak kuantum adalah alat analisis carta lanjutan, nama bahasa Inggerisnya adalah Footprint Charts. Ia menunjukkan aktiviti perdagangan setiap harga dalam satu baris K. Selain menyediakan maklumat harga, ia juga menyediakan maklumat seperti jumlah transaksi, pembelian aktif, dan penjualan aktif. Ia adalah carta teknikal berdimensi yang mendedahkan nisbah pengagihan sebenar setiap harga berdasarkan jumlah dagangan, menerangkan hubungan kompleks antara jumlah dagangan, harga dan masa, dan dapat memberikan lebih banyak rujukan kepada peniaga.

Apakah jejak kuantum?

Secara ringkasnya, Quantum Footprint menyediakan ketelusan pasaran dengan menganalisis mikro apa yang berlaku kepada pembeli dan penjual pada pelbagai tahap harga.

  • Harga K-line
  • Volume Beli Aktif (ASK)
  • Volume Jualan Aktif (BID)
  • Nisbah Keseimbangan

img

Seperti yang ditunjukkan dalam gambar di atas, ini adalah versi demonstrasi carta jejak tenaga kuantitatif yang dilaksanakan di platform daganganFMZ.COM. Ia dikira berdasarkantickpasaran. Data terperinci dilampirkan ke garisan K. Apabila tetikus melayang di atas Garis K, data jejak tenaga kuantitatif boleh dibentangkan. Data dalam kotak biru adalah hasil penghitungannya, yang dibahagikan kepada dua lajur secara keseluruhan, dan lajur kiri adalah semua titik harga garis K semasa, yang disusun mengikut susunan dari besar ke kecil. Lajur kanan adalah jumlah dagangan untuk setiap tahap harga, dibahagikan kepada jumlah dagangan membeli dan menjual, dipisahkan oleh x. Di sebelah kiri x adalah jumlah pembelian aktif, di sebelah kanan x adalah jumlah penjualan aktif.

Peranan jejak tenaga kuantum

Fikirkan tentang apa yang menyebabkan kenaikan harga? Jawapannya mudah... pembeli dan penjual. Jika terdapat lebih banyak pembeli daripada penjual, harga akan meningkat; jika terdapat lebih banyak penjual daripada pembeli, harga akan jatuh. Jika jumlah penjual semasa kira-kira sama dengan jumlah harga pembelian, maka pasaran akan menunjukkan trend yang tidak stabil, iaitu, pasaran berada dalam keadaan seimbang. Sebaik sahaja pembeli atau penjual besar muncul, keseimbangan ini akan terputus, dan kemudian peta jejak tenaga akan menunjukkan nisbah yang melampau pembelian dan penjualan aktif.

Jarak tenaga dipaparkan secara dinamik berdasarkan data Tick, jadi ia sangat sesuai untuk perdagangan intraday jangka pendek. Pedagang dapat melihat dengan tepat jumlah dagangan aktif pada setiap harga untuk menerangkan sebab atau undang-undang turun naik harga dan menyesuaikan strategi dagangan mereka sendiri. Sebagai contoh: jika jumlah pembelian di sebelah kiri jauh lebih besar daripada jumlah penjualan di sebelah kanan, ini bermakna peserta pasaran secara aktif membeli, dan harga mungkin meningkat pada masa akan datang; sebaliknya, jika jumlah penjualan di sebelah kanan jauh lebih besar daripada jumlah pembelian di sebelah kiri, ini bermakna Dengan peserta pasaran yang menjual secara aktif, harga mungkin jatuh pada masa akan datang.

Prinsip jejak tenaga kuantum

Prinsip pengiraan jejak tenaga kuantum berasal dari data jumlah dan pasaran. Volume semasa dikira dalam masa nyata mengikut perubahan harga pasaran. Jika harga pasaran meningkat, jumlah ini direkodkan sebagai pembelian aktif; jika harga pasaran jatuh, Kemudian rekodkan jumlah sebagai penjualan aktif. Dalam grafik jejak tenaga FMZ,Tickdata akan dikira dalam masa nyata untuk mengira dengan tepat perolehan setiapTick.

Pelaksanaan Kod Jejak Tenaga Kuantum

/*backtest
start: 2020-03-10 00:00:00
end: 2020-03-10 23:59:00
period: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
mode: 1
*/

var NewFuturesTradeFilter = function (period) {
    var self = {} // Create an object
    self.c = Chart({ // Create "Chart" chart
        tooltip: {
            xDateFormat:'%Y-%m-%d %H:%M:%S, %A',
            pointFormat:'{point.tips}'
        },
        series: [{
            name: exchange.GetName(),
            type:'candlestick',
            data: []
        }]
    })
    self.c.reset() // clear chart data
    self.pre = null // used to record the last data
    self.records = []
    self.feed = function (ticker) {
        if (!self.pre) {// If the previous data is not true
            self.pre = ticker // Assign the latest data
        }
        var action ='' // Mark as empty string
        Log('ticker', ticker)
        Log('pre', self.pre)
        if (ticker.Last >= self.pre.Sell) {// If the last price of the latest data is greater than or equal to the selling price of the previous data
            action ='buy' // mark as buy
        } else if (ticker.Last <= self.pre.Buy) {// If the last price of the latest data is less than or equal to the bid price of the previous data
            action ='sell' // mark as sell
        } else {
            if (ticker.Last >= ticker.Sell) {// If the last price of the latest data is greater than or equal to the selling price of the latest data
                action ='buy' // mark as buy
            } else if (ticker.Last <= ticker.Buy) {// If the last price of the latest data is less than or equal to the buying price of the latest data
                action ='sell' // mark as "sell"
            } else {
                action ='both' // Mark as "both"
            }
        }
        // reset volume
        if (ticker.Volume <self.pre.Volume) {// If the volume of the latest data is less than the volume of the previous data
            self.pre.Volume = 0 // Assign the volume of the previous data to 0
        }
        var amount = ticker.Volume-self.pre.Volume // the volume of the latest data minus the volume of the previous data
        if (action !='' && amount> 0) {// If the tag is not an empty string and the action is greater than 0
            var epoch = parseInt(ticker.Time / period) * period // Calculate the K-line timestamp and round it
            var bar = null
            var pos = undefined
            if (
                self.records.length == 0 || // If the K-line length is 0 or the last K-line timestamp is less than "epoch"
                self.records[self.records.length-1].time <epoch
            ) {
                bar = {
                    time: epoch,
                    data: {},
                    open: ticker.Last,
                    high: ticker.Last,
                    low: ticker.Last,
                    close: ticker.Last
                } // Assign the latest data to bar
                self.records.push(bar) // Add bar to the records array
            } else {// reassign bar
                bar = self.records[self.records.length-1] // the last bar of the previous data
                bar.high = Math.max(bar.high, ticker.Last) // the maximum price of the last bar of the previous data and the maximum value of the last price of the latest data
                bar.low = Math.min(bar.low, ticker.Last) // The minimum price of the last bar of the previous data and the minimum value of the last price of the latest data
                bar.close = ticker.Last // last price of latest data
                pos = -1
            }
            if (typeof bar.data[ticker.Last] ==='undefined') {// If the data is empty
                bar.data[ticker.Last] = {// reassign value
                    buy: 0,
                    sell: 0
                }
            }
            if (action =='both') {// If the token is equal to both
                bar.data[ticker.Last]['buy'] += amount // buy accumulation
                bar.data[ticker.Last]['sell'] += amount // sell accumulated
            } else {
                bar.data[ticker.Last][action] += amount // mark accumulation
            }
            var tips =''
            Object.keys(bar.data) // Put the keys in the object into an array
                .sort() // sort
                .reverse() // Reverse the order in the array
                .forEach(function (p) {// traverse the array
                    tips +='<br>' + p + '' + bar.data[p].sell +'x' + bar.data[p].buy
                })
            self.c.add( // Add data
                0, {
                    x: bar.time,
                    open: bar.open,
                    high: bar.high,
                    low: bar.low,
                    close: bar.close,
                    tips: tips
                },
                pos
            )
        }
        self.pre = ticker // reassign
    }
    return self // return object
}


// program entry
function main() {
    Log(_C(exchange.SetContractType,'MA888')) // subscription data
    var filt = NewFuturesTradeFilter(60000) // Create an object
    while (true) {// Enter loop mode
        var ticker = exchange.GetTicker() // Get exchange tick data
        if (ticker) {// If the Tick data is successfully obtained
            filt.feed(ticker) // Start processing data
        }
    }
}

Unduh Kod Jejak Kuantum

Kod strategi carta jejak kuantitatif telah dikeluarkan padaFMZ.complatform, dan pengguna biasa boleh menggunakannya tanpa tetapan.https://www.fmz.com/strategy/189965

Ringkasnya

Dalam penggunaan sebenar, peta jejak tenaga juga dapat menganalisis aliran dana dari perspektif jumlah. Sama ada untuk menganalisis arah trend berskala besar atau arah jangka pendek hari itu, ia memainkan peranan penting. Walau bagaimanapun, perlu diperhatikan bahawa apa yang dipanggil aliran modal di sini tidak merujuk kepada masuk dan keluar dana, tetapi lebih mencerminkan kesediaan pasaran untuk membeli dan menjual dan tingkah laku permainan pemain utama dan pelabur runcit.


Berkaitan

Lebih lanjut